diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md new file mode 100644 index 0000000..50b930e --- /dev/null +++ b/.planning/PROJECT.md @@ -0,0 +1,79 @@ +# SummerCMS + +## What This Is + +A Scala-based Content Management Framework (CMF), rewriting WinterCMS/OctoberCMS for better performance, scalability, and a cleaner developer experience. Targets the same audience as WinterCMS — agencies, freelancers, and developers who need to rapidly build anything from simple landing pages to complex portals. + +## Core Value + +A CMF that enables rapid application development with the flexibility to support any use case, delivered with the performance and horizontal scaling that PHP cannot provide. + +## Requirements + +### Validated + +(None yet — ship to validate) + +### Active + +- [ ] Model / Controller / Components system similar to WinterCMS +- [ ] Modern frontend-backend communication (research needed — not plain AJAX, scalable) +- [ ] Admin backend with YAML/JSON-driven form generation +- [ ] CLI scaffolding commands for initial setup +- [ ] Plugin system with interdependencies (plugins can extend each other) +- [ ] Theme system with Vue compatibility +- [ ] HTMX integration for data-attributes style interactions +- [ ] Themes can declare rendering mode (SPA / hybrid / static) +- [ ] Full WinterCMS feature parity (CMS pages, media manager, users, etc.) + +### Out of Scope + +- Multi-database support from start — PostgreSQL primary, others can come later +- Snowboard/Alpine.js patterns — clean break from WinterCMS frontend mess +- PHP compatibility layer — this is a rewrite, not a port + +## Context + +**Why this exists:** +- OctoberCMS went paid license, development stalled despite thousands in yearly fees +- WinterCMS has active development but messy frontend (Snowboard + Alpine.js + API mode + theme mode all mixed) +- PHP performance and scaling limitations for high-traffic sites +- Desire for cleaner, more maintainable codebase + +**Reference implementation:** +- `golem15-wintercms-starter/` submodule contains WinterCMS reference +- Patterns to replicate: plugin structure, YAML-driven forms, component system, event-driven model extensions +- Apparatus framework concepts: scenario-based workflows, automatic DI, backend CSS/JS injection + +**Team:** +- Principal Scala developer from major Scala company on board +- Sufficient funding for AI agents and human developers + +**What made OctoberCMS great:** +- Data attributes API for frontend interactions (HTMX captures this spirit) +- Flexibility to build anything from landing pages to complex portals +- Themes as first-class citizens + +## Constraints + +- **Language**: Scala with ZIO ecosystem — chosen for performance, type safety, and freedom-respecting community +- **Database**: PostgreSQL primary — focus on one DB done well +- **Frontend**: Vue-compatible themes + HTMX for interactions — clean break from Snowboard/Alpine mess +- **Deployment**: Pulumi-first (IaC), Docker and JVM also supported +- **Template engine**: TBD — needs research for Scala options +- **Backend communication**: TBD — needs research (websockets scale poorly, explore alternatives) + +## Key Decisions + +| Decision | Rationale | Outcome | +|----------|-----------|---------| +| Scala over other languages | Principal dev expertise, performance, type safety | — Pending | +| ZIO ecosystem over Typelevel | Community values alignment, opinionated framework fits CMF needs | — Pending | +| PostgreSQL only for v1 | Focus beats breadth, can add others later | — Pending | +| HTMX + Vue frontend | Cleaner than Snowboard/Alpine, captures OctoberCMS data-attributes spirit | — Pending | +| Pulumi-first deployment | Modern IaC approach, cloud-native from start | — Pending | +| Full WinterCMS parity as goal | Proven feature set, clear target | — Pending | +| Incremental milestones | Validate architecture before building everything on it | — Pending | + +--- +*Last updated: 2025-02-04 after initialization*