Skip to content

Latest commit

 

History

History
135 lines (99 loc) · 4.45 KB

File metadata and controls

135 lines (99 loc) · 4.45 KB

MVP1

Folder: 00-Planning/ (first in the repo). Topic details live in 0106.

GitHub: Project board · Milestone MVP1

How to read this file (top → bottom):

  1. Scope — what MVP1 includes / excludes
  2. Work order — steps in sequence
  3. Checklist — same order; mark done as we go
  4. What Flyway is
  5. Link to how to run (Project Instructions)
  6. Topic docs
  7. Next steps — moved to MVP2.md

1. Scope

In

  • 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; /me returns 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

2. Work order

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

3. Checklist (same order as work order)

Step 1 — Repo / infra

  • Folders api/, web/ + root README
  • docker-compose.yml (Postgres 16)
  • data/uploads/ + gitignore for local media
  • Topic plans 0106 + this MVP1 file
  • Local media approach documented

Step 2 — API skeleton

  • Maven api/ project (Spring Boot 3.4, Java 17)
  • Dependencies in pom.xml
  • Profiles local / prod
  • Actuator health
  • Security filter chain
  • Swagger / OpenAPI on local only
  • CORS to Vite http://localhost:5173

Step 3 — Database (Flyway)

  • 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

Step 4 — Auth API

  • 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

Step 5 — Local media

  • ObjectStorage local + upload/serve for dev
  • Table assets (metadata)

Steps 6–7 — Web

  • /login + Bearer auth client
  • Shell: header + sidebar (drawer) + footer
  • /home blank protected
  • Protected routes / redirects

4. What is Flyway?

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.


5. How to run

See 01-Project Instructions/HOW-TO-RUN.md (not documented here).

Key paths

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/

6. Topic docs

01-general.md · 02-springboot.md · 03-security.md · 04-frontend.md · 05-landing-pages.md · 06-api-optimization.md


7. Next steps

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