Files
summercms-initial-research/.planning/ROADMAP.md
2026-02-05 12:26:43 +01:00

223 lines
9.6 KiB
Markdown

# Roadmap: SummerCMS
## Overview
SummerCMS delivers a Scala/ZIO-based Content Management Framework by building from foundation to features in vertical slices. The journey starts with database and infrastructure validation, proceeds through the plugin system (the architectural bottleneck), layers on components and themes, establishes admin capabilities, and culminates in content management and core plugins. Each phase delivers something verifiable before the next begins.
## Phases
**Phase Numbering:**
- Integer phases (1, 2, 3): Planned milestone work
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
Decimal phases appear between their surrounding integers in numeric order.
- [x] **Phase 1: Foundation** - Database integration, migrations, repository pattern, deployment config
- [ ] **Phase 2: Plugin System** - Plugin discovery, lifecycle, dependencies, extension API
- [ ] **Phase 3: Component System** - Reusable UI components with HTMX handlers
- [ ] **Phase 4: Theme Engine** - Layouts, partials, asset management, Vue integration
- [ ] **Phase 5: CLI Scaffolding** - Commands to create plugins, themes, components
- [ ] **Phase 6: Backend Authentication** - Admin users, login/logout, RBAC permissions
- [ ] **Phase 7: Admin Forms & Lists** - YAML-driven form and list generation
- [ ] **Phase 8: Admin Dashboard** - Dashboard widgets and plugin settings pages
- [ ] **Phase 9: Content Management** - CMS pages, layouts, media library, menus
- [ ] **Phase 10: Core Plugins** - User plugin and Blog plugin with full features
## Phase Details
### Phase 1: Foundation
**Goal**: Validate the Scala/ZIO stack end-to-end with working database and deployment infrastructure
**Depends on**: Nothing (first phase)
**Requirements**: INFRA-01, INFRA-02, INFRA-03, INFRA-04, DIFF-01
**Success Criteria** (what must be TRUE):
1. Developer can run `mill run` and see HTTP server responding to requests
2. Database queries execute with compile-time SQL validation via Quill
3. Migrator service exists for running database migrations via CLI (not auto-run on startup)
4. Models use Repository pattern with ZIO effects for data access
5. Pulumi configuration deploys the application to cloud infrastructure
**Plans**: 3 plans
Plans:
- [x] 01-01-PLAN.md - Mill build setup and ZIO HTTP server with health endpoint
- [x] 01-02-PLAN.md - PostgreSQL integration with Quill and Flyway migrations
- [x] 01-03-PLAN.md - Repository pattern and Pulumi/Besom deployment config
### Phase 2: Plugin System
**Goal**: Establish the plugin architecture that all other features build upon
**Depends on**: Phase 1
**Requirements**: CORE-01, CORE-02
**Success Criteria** (what must be TRUE):
1. Developer can create a plugin with manifest defining dependencies
2. Plugins are discovered automatically from the plugins directory
3. Plugin lifecycle executes in correct order (register, boot, shutdown)
4. Plugin dependencies resolve correctly (plugin A requiring plugin B loads B first)
5. Plugin can extend another plugin via type-safe extension API
**Plans**: TBD
Plans:
- [ ] 02-01: Plugin discovery and manifest parsing
- [ ] 02-02: Lifecycle management and dependency resolution
- [ ] 02-03: Extension API with type-safe plugin-to-plugin communication
### Phase 3: Component System
**Goal**: Enable reusable UI components that respond to HTMX interactions
**Depends on**: Phase 2
**Requirements**: CORE-03, CORE-04
**Success Criteria** (what must be TRUE):
1. Developer can create a component with properties defined in YAML
2. Component lifecycle (init, onRun) executes correctly per request
3. Components can define HTMX handlers that respond to data-attribute triggers
4. HTMX handlers return HTML fragments that swap into the page
**Plans**: TBD
Plans:
- [ ] 03-01: Component registration and lifecycle
- [ ] 03-02: HTMX handler routing and response
### Phase 4: Theme Engine
**Goal**: Render themes with layouts, partials, and Vue integration
**Depends on**: Phase 3
**Requirements**: CORE-05, CORE-06
**Success Criteria** (what must be TRUE):
1. Developer can create a theme with layouts and partials
2. Pages render by combining layout, page template, and partial includes
3. Asset management bundles and serves CSS/JS from theme
4. Theme can declare rendering mode (SPA, hybrid, static)
5. Vue components integrate into theme pages
**Plans**: TBD
Plans:
- [ ] 04-01: Theme loading and layout composition
- [ ] 04-02: Asset pipeline and Vue integration
### Phase 5: CLI Scaffolding
**Goal**: Provide developer tools for rapid project setup
**Depends on**: Phase 4
**Requirements**: CORE-07, CORE-08, CORE-09
**Success Criteria** (what must be TRUE):
1. Developer can run CLI command to scaffold a new plugin with boilerplate
2. Developer can run CLI command to scaffold a new theme with structure
3. Developer can run CLI command to scaffold a component within a plugin
4. Generated scaffolds follow project conventions and are immediately usable
**Plans**: TBD
Plans:
- [ ] 05-01: CLI framework and plugin scaffolding
- [ ] 05-02: Theme and component scaffolding
### Phase 6: Backend Authentication
**Goal**: Secure admin backend with user accounts and role-based access
**Depends on**: Phase 2
**Requirements**: AUTH-01, AUTH-02, AUTH-03, AUTH-04
**Success Criteria** (what must be TRUE):
1. Admin can log in with email/password and access backend
2. Admin can log out and session is terminated
3. Admin can reset password via email link
4. Roles can be created with specific permissions attached
5. Controllers and views check permissions before rendering protected content
**Plans**: TBD
Plans:
- [ ] 06-01: Backend user model and login/logout
- [ ] 06-02: Password reset flow
- [ ] 06-03: RBAC permissions system
### Phase 7: Admin Forms & Lists
**Goal**: Generate forms and lists from YAML definitions
**Depends on**: Phase 6
**Requirements**: ADMIN-01, ADMIN-02, ADMIN-03, ADMIN-04
**Success Criteria** (what must be TRUE):
1. Developer defines fields.yaml and admin renders corresponding form
2. Form supports standard widgets (text, textarea, dropdown, checkbox, etc.)
3. Developer defines columns.yaml and admin renders corresponding list/table
4. List supports column types (text, date, relation) and filters
5. Forms validate input and display errors appropriately
**Plans**: TBD
Plans:
- [ ] 07-01: YAML parsing and form rendering
- [ ] 07-02: Form widgets implementation
- [ ] 07-03: List rendering and filters
### Phase 8: Admin Dashboard
**Goal**: Provide customizable dashboard and plugin settings interface
**Depends on**: Phase 7
**Requirements**: ADMIN-05, ADMIN-06, ADMIN-07
**Success Criteria** (what must be TRUE):
1. Admin sees customizable dashboard after login
2. Dashboard displays widgets from plugins (reports, stats, quick actions)
3. Plugins can register settings pages accessible from admin menu
4. Settings use the same YAML-driven form system
**Plans**: TBD
Plans:
- [ ] 08-01: Dashboard framework and widget system
- [ ] 08-02: Plugin settings pages
### Phase 9: Content Management
**Goal**: Manage CMS pages, layouts, media, and navigation
**Depends on**: Phase 7
**Requirements**: CONT-01, CONT-02, CONT-03, CONT-04, CONT-05, CONT-06, CONT-07, CONT-08, CONT-09, DIFF-02
**Success Criteria** (what must be TRUE):
1. Admin can create CMS pages with URL routing
2. Pages use layouts with placeholders that content fills
3. Components can be embedded in CMS pages via template syntax
4. Admin can upload files to media library
5. Images can be resized and cropped in media manager
6. Content supports draft and published states
7. Content revisions are tracked and can be viewed
8. Navigation menus can be created and managed
9. Menu items support different types (URL, page reference, plugin-generated)
10. Changes reflect immediately during development (hot reload)
**Plans**: TBD
Plans:
- [ ] 09-01: CMS pages and layouts
- [ ] 09-02: Component embedding
- [ ] 09-03: Media library
- [ ] 09-04: Content states and revisions
- [ ] 09-05: Navigation menus
### Phase 10: Core Plugins
**Goal**: Deliver User and Blog plugins demonstrating the complete plugin system
**Depends on**: Phase 9
**Requirements**: PLUG-01, PLUG-02, PLUG-03, PLUG-04, PLUG-05, PLUG-06, PLUG-07, PLUG-08
**Success Criteria** (what must be TRUE):
1. Frontend visitors can register user accounts
2. Frontend users can log in and log out
3. Frontend users have profile pages they can edit
4. Frontend users can reset forgotten passwords
5. Admin can create blog posts with WYSIWYG editor
6. Blog posts can be organized into categories
7. Blog posts can be tagged with multiple tags
8. Frontend displays blog post listings via components
**Plans**: TBD
Plans:
- [ ] 10-01: User plugin - registration and authentication
- [ ] 10-02: User plugin - profiles and password reset
- [ ] 10-03: Blog plugin - posts and editor
- [ ] 10-04: Blog plugin - categories, tags, listing components
## Progress
**Execution Order:**
Phases execute in numeric order: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Foundation | 3/3 | ✓ Complete | 2026-02-05 |
| 2. Plugin System | 0/3 | Not started | - |
| 3. Component System | 0/2 | Not started | - |
| 4. Theme Engine | 0/2 | Not started | - |
| 5. CLI Scaffolding | 0/2 | Not started | - |
| 6. Backend Authentication | 0/3 | Not started | - |
| 7. Admin Forms & Lists | 0/3 | Not started | - |
| 8. Admin Dashboard | 0/2 | Not started | - |
| 9. Content Management | 0/5 | Not started | - |
| 10. Core Plugins | 0/4 | Not started | - |
---
*Roadmap created: 2026-02-04*
*Last updated: 2026-02-05*