Roadmap
High-level milestones and their work items. Each work item links to its full spec in items/.
MVP
Target customer segment: church security teams. See Product Overview and Customer Segments.
Foundation
These block everything else. No feature work starts until the skeleton is in place.
- Monorepo Scaffold — Cargo workspace, directory structure, CI skeleton
- Core Crate — models, validation, scoring profiles, sync protocol, offline queue
- Proto Definitions — ConnectRPC service and message .proto files, buf config
- DB Schema — Postgres migrations for all entities
- UniFFI Setup — Swift + Kotlin binding generation pipeline
Server
- Auth Module — registration, login, JWT, password reset, invite flow
- Billing Module — Authorize.net integration, subscription management, event enrollment payments
- Score API — ConnectRPC service for score submission, querying, live streaming
- Event API — ConnectRPC service for event CRUD, roster management
- Drill API — ConnectRPC service for drill CRUD, visibility, copying, favorites
- User API — ConnectRPC service for user profiles, friends, social graph, user search
- Challenge API — ConnectRPC service for challenge CRUD, invitations, results
- Leaderboard API — ConnectRPC service for per-drill, per-org, friends leaderboards
- Achievement API — ConnectRPC service for badge definitions, user achievement tracking
- Media API — ConnectRPC service for file upload/download, presigned URLs (DO Spaces)
- Push Service — push notification delivery (APNs + platform push), event/challenge/social notifications
- Range Bag API — ConnectRPC service for gear/equipment tracking
- Content Feed API — ConnectRPC service for dynamic content/announcements, read tracking
Dashboard (Web)
- Dashboard Auth — login, registration, password reset UI
- Drill Builder — create and edit drills with scoring profiles, diagrams, required items
- Event Builder — create events, assign courses/drills, set dates
- Roster Builder — manage participants, assign drills, placeholder users
- Score Dashboard — sortable tables, graphs, CSV export
- Org Settings — org management, member roles, branding (white-label)
Mobile (iOS + Android)
- Mobile Auth — login, registration, password reset UI
- On-Range Scoring — score entry, multi-shooter drills and courses with per-shooter scoring, offline queue, foreground sync
- Event View — view event details, drills, roster
- Score History — personal score history across orgs
- Event Enrollment — browse events, pay and enroll (Authorize.net)
- Friends & Social — friend requests, friends list, user search
- Challenges — create, accept, complete challenges with friends
- Leaderboards — per-drill and friends hit factor rankings
- Range Bag — gear/equipment tracking, suggested items per drill
- Achievements — badge display, progress tracking
- Favorites — bookmark drills and courses
- Media Capture — photos/videos attached to scores
- Push Notifications — receive and display event/challenge/social notifications
- Dry Fire Training — dry fire drill browsing, recommended par times, built-in par timer
- Personal Scheduled Range Days — personal range day planning with date, time, location, and drill selection
- Content Feed — server-driven announcements, tips, and content without app store updates
PWA
- PWA Scoring — score entry, offline queue, foreground flush
- PWA Event View — view events, drills, roster, score history
Marketing
- Marketing Site — static HTML + Tailwind CSS landing page, links to dashboard and app downloads
Infrastructure
- Deployment Pipeline — CI/CD, container builds, tagged releases
- Observability Setup — tracing, logging, metrics, Grafana stack
- File Storage — DO Spaces setup for user-uploaded media
- Push Infrastructure — APNs certificates, push delivery service setup
Migration
- Migration ETL — one-time Supabase to new Postgres data migration
- One-Way Sync — Supabase to new DB listener during coexistence period
Post-MVP
- Admin analytics dashboard (usage stats, engagement metrics)
- Shot timer integration (camera OCR + BLE)
- 3D drill builder (Bevy/WGPU)
- Stripe migration (when revenue thresholds are met)
- Zitadel auth migration (when MFA/federation needed)
- PWA background sync + camera access
- White-label native app configuration (server URL, MDM)
- Org discovery and public drill catalog
Future
- Competition scoring and public scoreboards
- LE qualification tracking and compliance reporting
- Military deployment integration (LDAP, enlistment records)
- Instructor marketplace (find nearby instructors)