CB Mobile Roadmap¶
Building the best door-knocking app in the world. One phase at a time.
Vision¶
A canvassing app so good, volunteers actually want to use it. Fast, offline-first, and delightfully simple.
Phase 1: Core Infrastructure ✅¶
Status: Complete (v0.2.0)
The foundation for offline-first walkbook management.
| Component | Description |
|---|---|
| Device ID | Stable UUID for device identification |
| TypeScript Types | Full type coverage for API & DuckDB schemas |
| Zustand Store | Walkbook state with localStorage persistence |
| OPFS Storage | Streaming downloads with checksum verification |
| DuckDB Loader | Load .duckdb files into WASM |
| Query Helpers | Typed queries for all walkbook tables |
| React Hook | Unified API for checkout, download, sync |
Phase 2: User Interface¶
2A: Walkbook List (#1)¶
Your turfs at a glance
- See all assigned walkbooks with progress stats
- One-tap checkout and download
- Real-time progress tracking
- Pull-to-refresh
2B: Contact Cards (#2)¶
The heart of door-knocking
- Swipe between contacts by walk order
- Instant access to contact info, tags, history
- Big status buttons (Contacted, Not Home, Refused)
- Works 100% offline
2C: Survey Forms (#3)¶
Conversations that count
- Dynamic form rendering from DuckDB
- Single choice, multiple choice, yes/no, rating, text
- Swipe through questions
- Auto-save to action log
Phase 3: Data & Maps¶
3A: Sync Engine (#4)¶
Your data, always safe
- Local-first action log
- Opportunistic sync on visibility/online events
- Conflict detection and resolution
- Never lose user data
3B: Offline Maps (#5)¶
Navigate your turf
- MapLibre GL JS with PMTiles
- Color-coded pins by status
- Clustering for zoomed-out views
- Works offline with downloaded tiles
Phase 4: Polish (#6)¶
Feel like a native app
- Sub-second launch time
- Smooth 60fps animations
- Skeleton loading states
- iOS safe area handling
- Haptic feedback
- Storage persistence
Design Principles¶
Speed is Everything¶
Every tap responds instantly. Every screen loads in under 100ms. Preload what's next.
Offline First¶
Everything works without network. Sync is invisible and automatic.
Big Touch Targets¶
Cold fingers, bright sun, walking while tapping. Make it easy.
Glanceable¶
Key info visible without drilling down. Progress always clear.
Forgiving¶
Accidental taps are harmless. Easy undo. No data loss.
Success Metrics¶
| Metric | Target |
|---|---|
| Time to first interaction | < 2 seconds |
| Contacts per hour | > 30 (up from 20 with paper) |
| App crash rate | < 0.1% |
| Data sync success | > 99.9% |
| User satisfaction | 4.5+ stars |
Contributing¶
See individual issues for detailed implementation specs. Each issue includes:
- User story
- Visual mockups (ASCII art)
- Technical implementation details
- Acceptance criteria
- UX considerations
Built with love for the people knocking on doors.