164 lines
6.6 KiB
Markdown
164 lines
6.6 KiB
Markdown
# Feature Roadmap
|
|
|
|
## How to Read This
|
|
|
|
Each phase builds on the previous one. Phases are ordered by dependency, not by importance.
|
|
|
|
**The rule:** Phase 1 must be complete and working before starting Phase 2. Later phases can be reordered based on need.
|
|
|
|
---
|
|
|
|
## Phase 1: Foundation Minimum Viable Product
|
|
|
|
**Goal:** A working SvelteKit app that resolves a site by `SITE_SLUG`, shows a public homepage, lets the owner log in and edit settings, and supports image uploads with CDN storage.
|
|
|
|
### Deliverables
|
|
|
|
- [ ] SvelteKit project initialized with TypeScript
|
|
- [ ] Drizzle ORM configured, connected to Postgres
|
|
- [ ] Core database tables created: `sites`, `users`, `memberships`, `siteSettings`, `assets`
|
|
- [ ] Better Auth integrated with Discord OAuth provider
|
|
- [ ] Site resolver: reads `SITE_SLUG`, loads site + settings from DB, attaches to `locals`
|
|
- [ ] Public homepage renders with site name and basic content
|
|
- [ ] Login page: "Login with Discord" button
|
|
- [ ] Owner bootstrap: `OWNER_DISCORD_ID` env var creates owner membership on first login
|
|
- [ ] Super admin bootstrap: `SUPER_ADMIN_DISCORD_IDS` env var grants cross-site access
|
|
- [ ] Admin auth guard: `/admin/*` routes redirect unauthenticated users to login
|
|
- [ ] Basic admin dashboard page (placeholder with site name)
|
|
- [ ] Admin settings page: edit site name and tagline (saved to `siteSettings` JSON)
|
|
- [ ] CDN storage integration (Bunny CDN or S3-compatible)
|
|
- [ ] Image upload endpoint with webp conversion and optimization
|
|
- [ ] File validation: accepted types, max size
|
|
- [ ] Asset records created in database on upload
|
|
- [ ] Asset library page in admin: browse, search, copy CDN URL
|
|
- [ ] Migration automation: primary deployment runs migrations on startup; others skip via `RUN_MIGRATIONS` env var
|
|
|
|
### What's NOT in Phase 1
|
|
- No branding customization (logo, colors) — Phase 2
|
|
- No homepage content editing beyond name/tagline — Phase 2
|
|
- No events, nav links, social links — Phase 2 / Phase 4
|
|
- No role management UI — Phase 5
|
|
- No super admin dashboard UI — Phase 5
|
|
|
|
---
|
|
|
|
## Phase 2: Branding & Customization
|
|
|
|
**Goal:** Site owners can customize the look and feel of their site. The public site reflects branding settings. Asset upload is already available from Phase 1.
|
|
|
|
### Deliverables
|
|
|
|
- [ ] Admin branding page: select logo, background image, favicon from asset library
|
|
- [ ] Admin theme page: preset selector (dark/light/custom), accent color, background color, text color
|
|
- [ ] CSS custom properties generated from theme settings
|
|
- [ ] Admin homepage editor: hero title, subtitle, about text, CTA button text/link
|
|
- [ ] Public site renders all branding and homepage settings
|
|
- [ ] Admin nav links manager: add, edit, reorder, delete header/footer links
|
|
- [ ] Admin social links manager: add, edit, reorder, delete social platform links
|
|
- [ ] Public site renders nav links and social links
|
|
- [ ] Layout preset support (single configurable layout for V1)
|
|
|
|
### What's NOT in Phase 2
|
|
- Multiple layout options (just one flexible layout)
|
|
- Custom CSS fields
|
|
- Per-page theming
|
|
- Theme marketplace or sharing
|
|
|
|
---
|
|
|
|
## Phase 3: Events & Schedule
|
|
|
|
**Goal:** Sites can display upcoming events. Admins can manage events through the admin panel.
|
|
|
|
### Deliverables
|
|
|
|
- [ ] Events table created (if not already)
|
|
- [ ] Admin events manager: create, edit, delete, publish/unpublish events
|
|
- [ ] Event fields: title, description, type, start time, end time, timezone, location, external link, image
|
|
- [ ] Public homepage: "Next Event" card (shows the next upcoming published event)
|
|
- [ ] Public homepage: "Upcoming Events" list/schedule section
|
|
- [ ] Event detail page (optional — can be a modal or external link for V1)
|
|
- [ ] Timezone display handling (show event time in visitor's local time via JS)
|
|
|
|
### What's NOT in Phase 3
|
|
- Recurring/repeating events
|
|
- Calendar feed (iCal/RSS)
|
|
- Event reminders or notifications
|
|
- Attendee RSVPs
|
|
- Integration with Discord events
|
|
|
|
---
|
|
|
|
## Phase 4: Super Admin Dashboard
|
|
|
|
**Goal:** David (system maintainer) can manage all sites from a central dashboard.
|
|
|
|
### Deliverables
|
|
|
|
- [ ] Super admin auth: `SUPER_ADMIN_DISCORD_IDS` env var bypasses site-scoped membership checks
|
|
- [ ] Super admin dashboard: list all sites with status, quick links
|
|
- [ ] Create new site flow: insert site row, generate setup instructions
|
|
- [ ] View any site's settings, events, assets (read-only cross-site access)
|
|
- [ ] Feature flag management across sites
|
|
- [ ] Site deactivation/reactivation
|
|
|
|
### What's NOT in Phase 4
|
|
- Full site provisioning automation (still manual Coolify setup)
|
|
- Usage analytics or billing
|
|
- Impersonation (login as site owner)
|
|
|
|
---
|
|
|
|
## Phase 5: Admin Improvements
|
|
|
|
**Goal:** Better admin experience, role management, and operational tooling.
|
|
|
|
### Deliverables
|
|
|
|
- [ ] Role management: owner can add/remove admins and editors
|
|
- [ ] Admin list page showing all team members with roles
|
|
- [ ] Preview mode: admins can preview unpublished changes
|
|
- [ ] Improved admin dashboard with quick stats
|
|
- [ ] Site cloning helper (manual or scripted) for creating new sites
|
|
- [ ] Feature flags via settings JSON or env vars
|
|
- [ ] Audit-like log of who changed what (basic)
|
|
- [ ] Enhanced super admin dashboard: cross-site search, bulk operations
|
|
|
|
### What's NOT in Phase 5
|
|
- Full audit trail with rollback
|
|
- Granular permission system
|
|
- Multi-owner support per site
|
|
|
|
---
|
|
|
|
## Phase 6: Future (Optional, Not Planned in Detail)
|
|
|
|
These are ideas for later. Do not build any of these until Phases 1-5 are solid.
|
|
|
|
- **Community features:** reviews, comments, discussion posts
|
|
- **Discord integration:** server widget, event sync, role sync
|
|
- **Calendar feeds:** iCal export, Google Calendar integration
|
|
- **AI tools:** content suggestions, event descriptions, semantic search (pgvector)
|
|
- **Advanced theming:** multiple layout presets, custom CSS per site
|
|
- **Analytics:** page views, event clicks, simple dashboard
|
|
- **Email notifications:** event reminders, new content alerts
|
|
- **Single-deployment model:** switch from multi-Coolify-deployment to one deployment resolving sites by domain
|
|
- **Public API:** read-only API for events and site info
|
|
|
|
---
|
|
|
|
## Phase Dependency Diagram
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
P1[Phase 1: Foundation + Assets] --> P2[Phase 2: Branding & Customization]
|
|
P1 --> P3[Phase 3: Events & Schedule]
|
|
P2 --> P3
|
|
P1 --> P4[Phase 4: Super Admin Dashboard]
|
|
P3 --> P5[Phase 5: Admin Improvements]
|
|
P4 --> P5
|
|
P5 --> P6[Phase 6: Future Features]
|
|
```
|
|
|
|
**Note:** Phase 1 now includes CDN + asset upload (previously Phase 3). Phase 4 (Super Admin Dashboard) can start as soon as Phase 1 is done — it's independent of branding and events. Phase 5 enhances both regular admin and super admin experiences.
|