Folder: 00-Planning/ (first in the repo). Topic details live in 01–06.
GitHub: Project board · Milestone MVP1
How to read this file (top → bottom):
- Scope — what MVP1 includes / excludes
- Work order — steps in sequence
- Checklist — same order; mark done as we go
- What Flyway is
- Link to how to run (Project Instructions)
- Topic docs
- Next steps — moved to MVP2.md
- Monorepo
api/+web/+ local Postgres Docker; cloud targets Neon / Render / Vercel - User:
personal_id,email,password - Login with personal ID or email + password
- Tokens + DB sessions (one per user, 24h or logout)
- RBAC: roles/permissions + Spring authorities; seed
ADMIN/USER;/mereturns roles + permissions - springdoc OpenAPI / Swagger (Postman via
/v3/api-docs) - Responsive web: header + sidebar (drawer mobile) + footer (Platform + client)
- Protected blank
/home; English UI - Local media:
data/uploads/+ObjectStorage(Cloudflare R2 later)
Out (see MVP2.md)
- SSO, public registration, forgot password
- Admin GUI for roles/permissions
- i18n, rich homepage, landing kit implementation
- Cloudflare R2 + presigned uploads in cloud
- HttpOnly cookies / refresh-token hardening
| Step | What | Status |
|---|---|---|
| 1 | Repo structure + docker-compose.yml + README + data/uploads gitignore |
done |
| 2 | API skeleton: Maven, profiles local/prod, health, Swagger on local |
done |
| 3 | Flyway migrations: users, sessions, roles/permissions + seed |
done |
| 4 | Login / logout / me + single session + authorities | done |
| 5 | Local ObjectStorage + minimal media endpoints (dev) |
done |
| 6 | Web: login + app shell + blank home | done |
| 7 | Wire protected routes end-to-end | done |
- Folders
api/,web/+ root README -
docker-compose.yml(Postgres 16) -
data/uploads/+ gitignore for local media - Topic plans
01–06+ this MVP1 file - Local media approach documented
- Maven
api/project (Spring Boot 3.4, Java 17) - Dependencies in
pom.xml - Profiles
local/prod - Actuator health
- Security filter chain
- Swagger / OpenAPI on
localonly - CORS to Vite
http://localhost:5173
- Table
users - Table
sessions - Tables
roles,permissions,role_permissions,user_roles - Seed roles/permissions + admin user via
DataSeeder(BCrypt) - Table
assets - DataSource / JPA / Flyway enabled on
local
-
POST /api/auth/login -
POST /api/auth/logout -
GET /api/auth/me(user + roles + permissions) - Single session, 24h, opaque token +
token_hash(SHA-256) - Spring Security + DB authorities
-
ObjectStoragelocal + upload/serve for dev - Table
assets(metadata)
-
/login+ Bearer auth client - Shell: header + sidebar (drawer) + footer
-
/homeblank protected - Protected routes / redirects
Flyway versions the database schema with SQL scripts under api/src/main/resources/db/migration/. On startup it applies new scripts and records them in flyway_schema_history.
See 01-Project Instructions/HOW-TO-RUN.md (not documented here).
| Area | Path |
|---|---|
| Migrations | api/src/main/resources/db/migration/ |
| Auth API | api/src/main/java/com/platform/api/auth/ |
| Security | api/src/main/java/com/platform/api/security/ |
| Media | api/src/main/java/com/platform/api/media/ |
| Web app | web/src/ |
01-general.md · 02-springboot.md · 03-security.md · 04-frontend.md · 05-landing-pages.md · 06-api-optimization.md
Moved to MVP2.md.
- Phase A (start now): user registration + Google SSO
- Backlog: remaining items (email verify, forgot password, roles GUI, theme, i18n, R2, …) live in MVP2 §6