Phase 07: Admin Forms & Lists - 3 plan(s) in 2 wave(s) - Wave 1: 07-01 (YAML parsing, WidgetRegistry, FormRenderer) - Wave 2: 07-02 (form widgets), 07-03 (list rendering) - parallel - Ready for execution
10 KiB
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.
- 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):
- Developer can run
mill runand see HTTP server responding to requests - Database queries execute with compile-time SQL validation via Quill
- Migrator service exists for running database migrations via CLI (not auto-run on startup)
- Models use Repository pattern with ZIO effects for data access
- Pulumi configuration deploys the application to cloud infrastructure Plans: 3 plans
Plans:
- 01-01-PLAN.md - Mill build setup and ZIO HTTP server with health endpoint
- 01-02-PLAN.md - PostgreSQL integration with Quill and Flyway migrations
- 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):
- Developer can create a plugin with manifest defining dependencies
- Plugins are discovered automatically from the plugins directory
- Plugin lifecycle executes in correct order (register, boot, shutdown)
- Plugin dependencies resolve correctly (plugin A requiring plugin B loads B first)
- Plugin can extend another plugin via type-safe extension API Plans: 3 plans
Plans:
- 02-01-PLAN.md - Plugin discovery and manifest parsing (circe-yaml, PluginId, PluginManifest, PluginDiscovery)
- 02-02-PLAN.md - Lifecycle management and dependency resolution (SummerPlugin trait, PluginManager, topological sort)
- 02-03-PLAN.md - Extension API with type-safe plugin-to-plugin communication (EventService, ExtensionRegistry)
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):
- Developer can create a component with properties defined in YAML
- Component lifecycle (init, onRun) executes correctly per request
- Components can define HTMX handlers that respond to data-attribute triggers
- HTMX handlers return HTML fragments that swap into the page Plans: 2 plans
Plans:
- 03-01-PLAN.md - Component registration and lifecycle (SummerComponent trait, YAML property schemas, ComponentManager)
- 03-02-PLAN.md - HTMX handler routing and response (HtmxResponse, Pebble templates, ComponentRoutes, CSRF)
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):
- Developer can create a theme with layouts and partials
- Pages render by combining layout, page template, and partial includes
- Asset management bundles and serves CSS/JS from theme
- Theme can declare rendering mode (SPA, hybrid, static)
- Vue components integrate into theme pages Plans: 2 plans
Plans:
- 04-01-PLAN.md - Theme loading and layout composition (ThemeConfig, ThemeLoader, ThemeService, custom Pebble tags)
- 04-02-PLAN.md - Asset pipeline and Vue integration (AssetService, ViteManifest, StaticPageCache, PagePipeline)
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):
- Developer can run CLI command to scaffold a new plugin with boilerplate
- Developer can run CLI command to scaffold a new theme with structure
- Developer can run CLI command to scaffold a component within a plugin
- Generated scaffolds follow project conventions and are immediately usable Plans: 2 plans
Plans:
- 05-01-PLAN.md - CLI framework setup with ZIO CLI and plugin scaffolding command
- 05-02-PLAN.md - Theme scaffolding (blank/starter templates) 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):
- Admin can log in with email/password and access backend
- Admin can log out and session is terminated
- Admin can reset password via email link
- Roles can be created with specific permissions attached
- Controllers and views check permissions before rendering protected content Plans: 3 plans
Plans:
- 06-01-PLAN.md - Admin user model, login/logout, sessions with JWT + DB hybrid
- 06-02-PLAN.md - Password reset flow with secure tokens and email
- 06-03-PLAN.md - RBAC permissions system with plugin registry and optional 2FA
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):
- Developer defines fields.yaml and admin renders corresponding form
- Form supports standard widgets (text, textarea, dropdown, checkbox, etc.)
- Developer defines columns.yaml and admin renders corresponding list/table
- List supports column types (text, date, relation) and filters
- Forms validate input and display errors appropriately Plans: 3 plans
Plans:
- 07-01-PLAN.md - YAML parsing infrastructure and basic form rendering (circe-yaml, WidgetRegistry, FormRenderer)
- 07-02-PLAN.md - Form widget implementations (text, textarea, dropdown, checkbox, datepicker, repeater, relation)
- 07-03-PLAN.md - List rendering with columns, filters, and pagination (ColumnRegistry, ListRenderer)
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):
- Admin sees customizable dashboard after login
- Dashboard displays widgets from plugins (reports, stats, quick actions)
- Plugins can register settings pages accessible from admin menu
- 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):
- Admin can create CMS pages with URL routing
- Pages use layouts with placeholders that content fills
- Components can be embedded in CMS pages via template syntax
- Admin can upload files to media library
- Images can be resized and cropped in media manager
- Content supports draft and published states
- Content revisions are tracked and can be viewed
- Navigation menus can be created and managed
- Menu items support different types (URL, page reference, plugin-generated)
- 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):
- Frontend visitors can register user accounts
- Frontend users can log in and log out
- Frontend users have profile pages they can edit
- Frontend users can reset forgotten passwords
- Admin can create blog posts with WYSIWYG editor
- Blog posts can be organized into categories
- Blog posts can be tagged with multiple tags
- 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 | Planned | - |
| 3. Component System | 0/2 | Planned | - |
| 4. Theme Engine | 0/2 | Planned | - |
| 5. CLI Scaffolding | 0/2 | Planned | - |
| 6. Backend Authentication | 0/3 | Planned | - |
| 7. Admin Forms & Lists | 0/3 | Planned | - |
| 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