Champion Portal Development Phase 5
Estimated Effort: 4–6 weeks
Focus: Visit Mode, Map View, Advanced SearchPrerequisites: Phase 1–4 complete
Related Documents:
- ../README.md — Champion Portal overview
- ../features/03-DIRECTORY-SEARCH.md — Directory spec
Phase 5 adds advanced features that enhance discoverability and flexibility:
These features are especially valuable for:
Phase 5 is divided into 3 sub-phases that can be implemented incrementally.
| Sub-Phase | Name | Prompt | Est. Time |
|---|---|---|---|
| 5.1 | Visit Mode | “Implement Phase 5.1” | 2–3 days |
| 5.2 | Map View | “Implement Phase 5.2” | 2–3 days |
| 5.3 | Advanced Search | “Implement Phase 5.3” | 1–2 days |
Goal: Champions can temporarily view another region’s content without changing their primary region.
Deliverables:
User Flow:
1. Champion (Nashville primary) clicks region selector
2. Chooses "Visit Atlanta"
3. Banner appears: "Viewing Atlanta | Return to Nashville"
4. Dashboard, events, and boards now show Atlanta content
5. Champion clicks "Return to Nashville" → back to primary view
Acceptance Test:
Goal: Geographic map showing Champion locations with privacy controls.
Deliverables:
| [ ] Map view toggle in directory (List | Card | Map) |
Privacy Considerations:
Acceptance Test:
Goal: Enhanced directory search with more filters and saved searches.
Deliverables:
cp_saved_searches table (champion_id, name, criteria_json)Acceptance Test:
| Question | Options | Notes |
|---|---|---|
| Map view opt-in required? | A) Yes (default off) B) No (default on) | Privacy — recommend A |
| Map provider | A) Mapbox B) Leaflet/OSM C) Google Maps | Cost and licensing |
| Save search history? | A) Yes B) No C) User opt-in | Privacy vs convenience |
| Visit mode persistence | A) Session only B) Remember last visit C) Explicit reset | UX preference |
| Question | Who Decides | Impact |
|---|---|---|
| Map view privacy language | Legal | Consent flow |
| CLC export permissions | Product/Engagement | Data access |
| Geographic precision level | Product | Privacy vs utility |
| Area | Deliverables |
|---|---|
| Visit Mode | Region selector, temporary switch, banner, return |
| Map View | Map component, pins, clustering, privacy opt-in |
| Advanced Search | Additional filters, saved searches, CLC export |
| Feature | Notes |
|---|---|
| Native mobile app | Future project |
| Offline mode | Future consideration |
| Proximity-based notifications | Too complex for this phase |
| Criterion | Validation |
|---|---|
| Champion can visit another region | Content switches appropriately |
| Visit mode is temporary | Primary region unchanged |
| Map view displays Champions | Pins appear at city level |
| Map view respects opt-in | Non-opted Champions hidden |
| Advanced filters work | Search returns correct results |
| Saved searches persist | Can reuse saved criteria |
| CLC can export | CSV downloads with results |
| Metric | Target |
|---|---|
| Champions using visit mode | 10%+ monthly |
| Champions opted into map | 30%+ |
| Saved searches created | 50+ |
| Model | Test Cases |
|---|---|
Cp::SavedSearch |
Valid factory, criteria serialization |
Cp::Champion |
map_visible scope, visit mode methods |
| Controller | Test Cases |
|---|---|
Cp::VisitsController |
Set visit region, clear visit, validate region exists |
Cp::DirectoryController |
Map view, advanced filters, saved search apply |
Cp::SavedSearchesController |
Create, list, apply, delete |
| Feature | Test Cases |
|---|---|
| Visit mode flow | Select region → content changes → return → original content |
| Map view flow | Opt in → appear on map; opt out → hidden |
| Advanced search | Multiple filters → save → apply later |
| Component | Test Cases |
|---|---|
| Map component | Renders, pins display, clustering works, popup on click |
| Region selector | Opens, selects, triggers visit |
After completing Phase 5, update:
| Document | Changes |
|---|---|
| ../README.md | Mark Phase 5 complete |
| ../development/DECISIONS.md | Record map and privacy decisions |
| Champion User Guide | Add visit mode, map view, advanced search |
| Privacy Policy | Update with map view data usage |