4.8 KiB
Requirements
Overview
Implement milestones M1-M4 of the Simple Groupware project: project foundation setup (Next.js 15), DB foundation (SQL wrapper + Migration), authentication & user management, and project & member management. Each milestone is developed on a separate branch and merged to main. Unit tests and E2E tests are mandatory.
Background
The repository is currently a spec-driven-development boilerplate (vitest/eslint/prettier/husky configured, but no Next.js, no react, no SQLite). It must be transformed into the foundation of the Simple Groupware: a Next.js 15 + TypeScript + SQLite(better-sqlite3) application following the layered architecture (UI → Service → Repository → Data) defined in docs/architecture.md. M1-M4 establish the base that all subsequent milestones (M5+) depend on.
Features to Implement
1. M1: Project Foundation Setup
- Next.js 15 (App Router, TypeScript) project configuration
- Tailwind CSS setup
- tsconfig with
@/*path alias, strict mode - next.config, .env.example
- Directory structure: app/, lib/, repositories/, services/, components/, tests/, data/, backups/
- ESLint (with Next.js plugin), Prettier, Husky, lint-staged, Vitest, Playwright setup
- CI config (GitHub Actions)
- package.json scripts: lint, format, typecheck, test, test:e2e, migrate, dev, build
- Dependencies: next, react, react-dom, better-sqlite3, bcrypt, react-markdown, remark-gfm, rehype-sanitize, tailwindcss, @types/better-sqlite3
- Remove boilerplate src/example.ts and src/example.test.ts
2. M2: DB Foundation (SQL Wrapper + Migration)
lib/db/sqlite.ts: SqliteDatabase class (query/get/execute/transaction/close) + getDb() singleton (WAL, foreign_keys ON)lib/db/migrator.ts: Migrator class (filename-order execution, skip applied, 1-file-1-transaction, rollback on failure)lib/db/migrations/001_initial.sql: all 16 tables + indexeslib/types/: all Entity type definitions + enumslib/db/run-migrations.ts: migration runner script- API:
GET /api/admin/migrations(admin-only migration status) - Unit tests: sqlite.test.ts, migrator.test.ts
3. M3: Authentication & User Management
- UserRepository (findById/findByEmail/create/update)
- AuthService (register/login/logout/getCurrentUser/updateProfile) with bcrypt password hashing
- Role management (system_admin/project_admin/member/guest), account enable/disable
- lib/auth/ (session.ts, getCurrentUser.ts)
- lib/validators/userValidator.ts
- API: register, login, logout, me, users/me
- Login page, profile page, root layout
- Auth middleware (redirect unauthenticated to login)
- Unit tests: UserRepository, AuthService; E2E test: auth.spec.ts
4. M4: Project & Member Management
- ProjectRepository, ProjectMemberRepository
- ProjectService (createProject/updateProject/addMember/removeMember/archiveProject/getDashboard) with permission checks
- projectValidator.ts
- API: projects CRUD, members CRUD
- Dashboard (project list), project overview, members page, settings page
- Layout components (Header, Sidebar, ProjectNav)
- Unit tests: ProjectRepository, ProjectMemberRepository, ProjectService; Integration test: project-member-permission; E2E test: project-management.spec.ts
Acceptance Criteria
M1
npm run devstarts the Next.js dev servernpm run lint,npm run typecheck,npm run buildsucceed- Directory structure matches repository-structure.md
M2
npm run migratecreates the initial schema- Migrations run in filename order and skip applied ones
- Failed migration rolls back
- Unit tests pass
M3
- User registration, login, logout work
- Password is hashed with bcrypt
- Profile & avatar editable
- Inactive accounts cannot log in
- Unauthenticated access to protected screens is blocked
- Unit & E2E tests pass
M4
- Project create/edit/delete/archive work
- Member add/remove/role work
- Non-members get 403
- Unit, Integration & E2E tests pass
Success Metrics
- All Unit tests pass (
npm test) - All E2E tests pass (
npm run test:e2e) - Lint and typecheck clean
- Each milestone merged to main on its own branch
Out of Scope
The following will not be implemented in this phase:
- M5-M15 (notifications, board, chat, SSE, todo, files, calendar, milestones, meetings, search, dashboard completion, backup)
- E2E tests for features beyond M3/M4 scope (board, chat, etc.)
- Full project dashboard content (only skeleton in M4; full content in M13)
Reference Documents
docs/product-requirements.md- Product Requirements Documentdocs/functional-design.md- Functional design documentdocs/architecture.md- Architecture design documentdocs/repository-structure.md- Repository structure documentdocs/development-guidelines.md- Development guidelinesdocs/milestones.md- Milestone & task definitions