{"id":31646376,"url":"https://github.com/ctstic/cmdd_js","last_synced_at":"2026-01-20T17:39:18.818Z","repository":{"id":313339395,"uuid":"1051032883","full_name":"ctstic/cmdd_js","owner":"ctstic","description":"浙江中烟卷烟材料数字化设计平台","archived":false,"fork":false,"pushed_at":"2025-09-28T03:52:25.000Z","size":1297,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-28T05:42:09.838Z","etag":null,"topics":["electron","nodejs","react"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctstic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-05T10:36:44.000Z","updated_at":"2025-09-28T03:52:30.000Z","dependencies_parsed_at":"2025-09-05T12:39:30.550Z","dependency_job_id":"056d3e3b-9db6-4ae4-bc2c-42e8ceb9059b","html_url":"https://github.com/ctstic/cmdd_js","commit_stats":null,"previous_names":["moeexx/cmdd_js"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ctstic/cmdd_js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctstic%2Fcmdd_js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctstic%2Fcmdd_js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctstic%2Fcmdd_js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctstic%2Fcmdd_js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctstic","download_url":"https://codeload.github.com/ctstic/cmdd_js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctstic%2Fcmdd_js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278727839,"owners_count":26035410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","nodejs","react"],"created_at":"2025-10-07T05:49:20.390Z","updated_at":"2025-10-07T05:49:21.619Z","avatar_url":"https://github.com/ctstic.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CMDD JS - Electron 用户管理系统\n\n这是一个基于 Electron + React + TypeScript + Better-SQLite3 + Drizzle ORM 的桌面应用程序，实现了完整的模型数据管理功能。\n\n## 技术栈\n\n- **前端**: React 19 + TypeScript + Vite\n- **桌面框架**: Electron 22\n- **数据库**: Better-SQLite3 + Drizzle ORM\n- **样式**: CSS3\n- **包管理**: pnpm\n\n## 功能特性\n\n### 用户管理\n- ✅ 用户创建、查询、更新、删除 (CRUD)\n- ✅ 用户搜索功能\n- ✅ 用户状态管理 (活跃/非活跃/待审核)\n- ✅ 默认用户数据自动初始化\n- ✅ 实时数据验证\n\n### 数据库特性\n- ✅ SQLite 数据库本地存储\n- ✅ Drizzle ORM 类型安全\n- ✅ 数据库迁移管理\n- ✅ WAL 模式性能优化\n- ✅ 自动表创建和初始化\n\n### 界面特性\n- ✅ 现代化用户界面\n- ✅ 响应式设计\n- ✅ 实时状态反馈\n- ✅ 表单验证\n- ✅ 搜索和过滤功能\n\n## 项目结构\n\n```\nsrc/\n├── main/                 # 主进程\n│   ├── database/        # 数据库相关\n│   │   ├── schema.ts    # 数据库模式定义\n│   │   ├── index.ts     # 数据库连接和操作\n│   │   └── migrations/  # 数据库迁移文件\n│   ├── main.ts          # 主进程入口\n│   └── test-database.ts # 数据库测试\n├── preload/             # 预加载脚本\n│   └── proload.ts       # IPC 通信接口\n└── renderer/            # 渲染进程\n    └── src/\n        ├── App.tsx      # 主应用组件\n        └── components/  # React 组件\n```\n\n## 快速开始\n\n### 安装依赖\n```bash\npnpm install\n```\n\n### 开发模式\n```bash\npnpm run dev\n```\n\n### 构建应用\n```bash\n# 构建所有平台\npnpm run build\n\n# 构建特定平台\npnpm run build:win    # Windows\npnpm run build:mac    # macOS\npnpm run build:linux  # Linux\n```\n\n### 数据库操作\n```bash\n# 生成迁移文件\npnpm run db:generate\n\n# 推送迁移到数据库\npnpm run db:push\n\n# 打开 Drizzle Studio\npnpm run db:studio\n```\n\n## 数据库模式\n\n### 用户表 (users)\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| id | INTEGER | 主键，自增 |\n| username | TEXT | 用户名，唯一 |\n| email | TEXT | 邮箱，唯一 |\n| full_name | TEXT | 全名 |\n| avatar | TEXT | 头像URL |\n| status | TEXT | 状态 (active/inactive/pending) |\n| created_at | INTEGER | 创建时间 |\n| updated_at | INTEGER | 更新时间 |\n\n## 默认数据\n\n应用启动时会自动创建以下默认用户：\n\n1. **admin** - 系统管理员\n2. **demo** - 演示用户\n3. **guest** - 访客用户\n\n## API 接口\n\n### 用户管理\n- `user.create(userData)` - 创建用户\n- `user.getById(id)` - 根据ID获取用户\n- `user.getByEmail(email)` - 根据邮箱获取用户\n- `user.getByUsername(username)` - 根据用户名获取用户\n- `user.getAll()` - 获取所有用户\n- `user.update(id, updates)` - 更新用户\n- `user.delete(id)` - 删除用户\n- `user.search(query)` - 搜索用户\n\n## 开发说明\n\n### 数据库操作\n所有数据库操作都在 `src/main/database/index.ts` 中实现，使用 Better-SQLite3 进行底层操作，Drizzle ORM 提供类型安全。\n\n### IPC 通信\n主进程和渲染进程通过 IPC 进行通信，接口定义在 `src/preload/proload.ts` 中。\n\n### 状态管理\n使用 React Hooks 进行状态管理，包括用户列表、表单状态、加载状态等。\n\n## 许可证\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctstic%2Fcmdd_js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctstic%2Fcmdd_js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctstic%2Fcmdd_js/lists"}