Skip to content

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.