Files
summercms-initial-research/.planning/REQUIREMENTS.md
Jakub Zych 318bdf84ac docs: define v1 requirements
38 requirements across 7 categories:
- Core Framework (9)
- Admin Backend (7)
- User & Auth (4)
- Content Management (9)
- Core Plugins (8)
- Differentiators (2)
- Infrastructure (4)

Deferred to v2: API/headless, additional plugins, advanced features
2026-02-04 13:04:19 +01:00

127 lines
4.5 KiB
Markdown

# Requirements: SummerCMS
**Defined:** 2025-02-04
**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.
## v1 Requirements
Requirements for initial release. Each maps to roadmap phases.
### Core Framework
- [ ] **CORE-01**: Plugin system with discovery, lifecycle management, and dependency resolution
- [ ] **CORE-02**: Plugin extension API allowing plugins to extend each other (type-safe)
- [ ] **CORE-03**: Component system with reusable UI components
- [ ] **CORE-04**: Component HTMX handlers for data-attributes style interactions
- [ ] **CORE-05**: Theme engine with layouts, partials, and asset management
- [ ] **CORE-06**: Theme Vue integration (themes can declare SPA/hybrid/static mode)
- [ ] **CORE-07**: CLI scaffolding command to create new plugins
- [ ] **CORE-08**: CLI scaffolding command to create new themes
- [ ] **CORE-09**: CLI scaffolding command to create components
### Admin Backend
- [ ] **ADMIN-01**: YAML-driven form generation (fields.yaml)
- [ ] **ADMIN-02**: Form field widgets (text, textarea, dropdown, checkbox, etc.)
- [ ] **ADMIN-03**: YAML-driven list/table views (columns.yaml)
- [ ] **ADMIN-04**: List column types and filters
- [ ] **ADMIN-05**: Customizable admin dashboard
- [ ] **ADMIN-06**: Dashboard widgets system
- [ ] **ADMIN-07**: Plugin settings pages
### User & Authentication
- [ ] **AUTH-01**: Backend user accounts with login/logout
- [ ] **AUTH-02**: Backend user password reset
- [ ] **AUTH-03**: RBAC permissions system (roles and permissions)
- [ ] **AUTH-04**: Permission checking in controllers and views
### Content Management
- [ ] **CONT-01**: CMS pages with URL routing
- [ ] **CONT-02**: CMS page layouts with placeholders
- [ ] **CONT-03**: Component embedding in CMS pages
- [ ] **CONT-04**: Media library file uploads
- [ ] **CONT-05**: Media library image management (resize, crop)
- [ ] **CONT-06**: Content draft/published states
- [ ] **CONT-07**: Content revision history
- [ ] **CONT-08**: Navigation menu management
- [ ] **CONT-09**: Menu item types (URL, page, plugin)
### Core Plugins
- [ ] **PLUG-01**: User plugin - frontend user registration
- [ ] **PLUG-02**: User plugin - frontend user login/logout
- [ ] **PLUG-03**: User plugin - user profiles
- [ ] **PLUG-04**: User plugin - password reset
- [ ] **PLUG-05**: Blog plugin - posts with WYSIWYG editor
- [ ] **PLUG-06**: Blog plugin - categories
- [ ] **PLUG-07**: Blog plugin - tags
- [ ] **PLUG-08**: Blog plugin - post listing components
### Differentiators
- [ ] **DIFF-01**: Type-safe plugin API with compile-time error detection
- [ ] **DIFF-02**: Hot reload development mode (fast iteration without JVM restart)
### Database & Infrastructure
- [ ] **INFRA-01**: PostgreSQL database integration with Quill
- [ ] **INFRA-02**: Database migrations system
- [ ] **INFRA-03**: Model/Repository pattern for data access
- [ ] **INFRA-04**: Pulumi deployment configuration
## v2 Requirements
Deferred to future release. Tracked but not in current roadmap.
### API & Headless
- **API-01**: REST API for content access
- **API-02**: GraphQL API endpoint
- **API-03**: JWT token authentication for API
- **API-04**: API documentation generation
### Additional Plugins
- **PLUG-09**: Pages plugin for static content pages
- **PLUG-10**: Translation plugin for multilingual content
### Advanced Features
- **ADV-01**: Multisite support
- **ADV-02**: Content workflows (approval chains)
- **ADV-03**: Scheduled publishing
- **ADV-04**: Content import/export
## Out of Scope
Explicitly excluded. Documented to prevent scope creep.
| Feature | Reason |
|---------|--------|
| Multi-database support | PostgreSQL primary focus, others can come post-v1 |
| Snowboard/Alpine.js patterns | Clean break from WinterCMS frontend mess |
| PHP compatibility layer | This is a rewrite, not a port |
| Visual page builders | Anti-feature - leads to unmaintainable sites |
| Database-stored code | Anti-feature - code belongs in files |
| WordPress-style hooks everywhere | Anti-feature - type-safe events instead |
| Kitchen-sink core | Keep core minimal, features in plugins |
## Traceability
Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
| (To be filled by roadmap) | | |
**Coverage:**
- v1 requirements: 38 total
- Mapped to phases: 0
- Unmapped: 38 ⚠️
---
*Requirements defined: 2025-02-04*
*Last updated: 2025-02-04 after initial definition*