--- displayed_sidebar: policyMakersSidebar --- # Impact-Driven Navigation Guide The frontend has been transformed from a technical data audit to a **citizen mobilization tool** with persona-based navigation. ## Quick Start ```bash cd /home/developer/projects/open-navigator/frontend/policy-dashboards npm start ``` Opens at `http://localhost:3000` with the new impact-focused interface. --- ## Navigation Structure ### 1. Home Page: "Tuscaloosa Decision Pulse" **Purpose:** Big picture context that mobilizes citizens **Components:** - **City Pulse** - Visual comparison: $28M capital vs $2.4M health - **Accountability Alert** - Scrolling ticker of deferrals (e.g., "152 days in limbo") - **Persona Cards** - Find your impact by audience - **Topic Cards** - Browse by domain **Key Feature:** Moves from "agendas" to "impact stories" ### 2. Persona-Based Navigation (Impact Stories) Click a persona card to see targeted impact: #### 🏠 Parent → Student Dental Health **Shows:** "The Learning Barrier Map" - Left: School map with dental pain absence rates (red = high) - Right: Veto chain flowchart (1,200 petitions → blocked by 1 memo) - Bottom: Key fact (0 liability suits in 35 states with programs) #### 📢 Advocate → Transparency & Vetoes **Shows:** "The Influence Radar" - Who has veto power - Public input vs bureaucratic influence - Name the blocker directly #### 🚰 Resident → Water & Infrastructure **Shows:** "The Lifetime Health Tax" - Coming soon (template provided) ### 3. Browse by Topic (Filterable View) **Primary Navigation (Topic/Domain):** - ✅ Public Health (Dental, Water, Mental Health) - 📚 Education & Youth (School Board, Pre-K) - 🏗️ Infrastructure (Roads, Utilities, Construction) - 🚨 Public Safety (Police, Fire, EMS) **Secondary Filters (Pattern):** - [ ] Technocratic Veto (legal/risk managers blocking) - [ ] Sequential Deferral (repeated "tabling for study") - [ ] Performance Rationale (rhetoric not matching funding) **Tertiary Filters (Resource Type):** - [ ] Video Recap - [ ] Budget PDF - [ ] Impact Dashboard - [ ] Summary Notes ### 4. Analysis Dashboards (Original Technical View) The original accountability dashboards are still available: - Summary - They cut health spending while praising wellness - Delayed 6 months and counting - What got funded instead - One memo beat 240 residents ### 5. All Decisions (Searchable List) Complete searchable list of decisions with: - Policy domain badges - Speakers and rationales - Vote results - Tradeoffs discussed - Evidence cited --- ## How Citizens Use This ### Parent Journey: 1. **Lands on Home** → Sees "$28M capital vs $2.4M health" 2. **Clicks "Parent" card** → Views dental screening veto story 3. **Sees map** → Their kid's school is in red zone 4. **Sees veto chain** → Patricia Johnson blocked it with 1 memo 5. **Key fact** → 0 lawsuits in 35 states = memo has no basis 6. **Action** → Knows exactly who to call and what to ask ### Advocate Journey: 1. **Lands on Home** → Sees "152 days in limbo" alert 2. **Clicks "Advocate" card** → Views influence radar 3. **Sees data** → 92% influence from 1 memo vs 4% from 240 citizens 4. **Action** → Names veto holder in public meeting ### Journalist Journey: 1. **Browses by Topic** → Filters for "Public Health" 2. **Filters by Pattern** → Selects "Sequential Deferral" 3. **Finds story** → Dental clinic tabled 4 times with shifting excuses 4. **Clicks dashboard** → Gets full analysis with benchmarks 5. **Action** → Headline: "One Risk Manager Blocked 240 Residents" --- ## Data Flow ### Current (Example Data) The app currently shows **example/placeholder data**. All numbers (e.g., $28M, 152 days, 1,200 petitions) are illustrative. ### Real Data Integration To populate with actual Tuscaloosa data: ```bash # Run Python analysis (auto-exports to frontend) cd /home/developer/projects/open-navigator source .venv/bin/activate python examples/tuscaloosa_accountability_report.py ``` This updates: `frontend/policy-dashboards/src/data/dashboardData.js` ### Adding New Impact Stories 1. **Create component** in `src/components/ImpactDashboard.jsx` 2. **Add persona mapping** in the component logic 3. **Update HomePage** persona cards with new option Example: ```javascript // In ImpactDashboard.jsx if (persona === 'business-owner' && topic === 'economic-development') { return ; } ``` --- ## Customization ### Change Metrics on Home Page Edit `src/components/HomePage.jsx`: ```javascript // Update "City Pulse" numbers Capital Projects: $28M // Change this Health: $2.4M // And this // Update accountability alert West Alabama Dental Clinic... 152 consecutive days // Update days ``` ### Add New Topics Edit `src/components/TopicNavigation.jsx`: ```javascript const topics = [ { id: 'environment', label: 'Environment', sublabel: 'Parks, Recycling', color: '#2C7A7B' }, // Add more... ]; ``` ### Add New Patterns ```javascript const patterns = [ { id: 'grant-chasing', label: 'Grant Chasing', description: 'Decisions driven by available grants' }, // Add more... ]; ``` --- ## Visual Design Philosophy ### Before (Technical Audit) - Tab navigation with abstract names ("Rhetoric Gap Monitor") - Focus on methodology and metrics - Audience: Data analysts ### After (Citizen Mobilization) - Persona-first navigation ("I am a Parent") - Focus on impact stories and actionable insights - Audience: Parents, advocates, residents ### Key Changes 1. **Language:** "Bricks over Biological Needs" not "Capital vs Health Allocation" 2. **Visuals:** Maps and flowcharts not just bar charts 3. **Framing:** "The Veto" not "Decision Pattern Analysis" 4. **Action:** "Call Patricia Johnson" not "Observe governance trend" --- ## Technical Architecture ### Components ``` src/components/ ├── HomePage.jsx # Landing page with personas ├── ImpactDashboard.jsx # Impact stories by persona ├── TopicNavigation.jsx # Topic/pattern/resource filters ├── WordsVsDollars.jsx # Original dashboards (still available) ├── EndlessStudyLoop.jsx ├── WhereMoneyWent.jsx ├── WhoIsInCharge.jsx └── shared/ ├── FilterPanel.jsx # Legacy search/filter ├── DecisionCard.jsx # Individual decision cards └── DashboardTile.jsx # Tile-based navigation ``` ### State Management ```javascript viewMode: 'home' | 'impact' | 'browse' | 'dashboards' | 'decisions' selectedPersona: 'parent' | 'advocate' | 'resident' | null selectedTopic: string | null selectedTopics: string[] // Filter by domain selectedPatterns: string[] // Filter by pattern selectedResources: string[] // Filter by resource type ``` --- ## Next Steps ### 1. Add Real Maps Replace placeholder with actual Leaflet maps: ```bash npm install leaflet react-leaflet ``` ```javascript // In DentalHealthImpact component import { MapContainer, TileLayer, CircleMarker } from 'react-leaflet'; {schools.map(school => ( 0.4 ? 'red' : 'blue'} /> ))} ``` ### 2. Add Video Recaps ```bash npm install react-player ``` ```javascript import ReactPlayer from 'react-player'; ``` ### 3. Add Budget PDFs Link to actual budget documents: ```javascript Download FY2026 Budget ``` ### 4. Add Scrolling Ticker For the "Accountability Alert": ```javascript // Auto-scroll through multiple alerts const alerts = [ "Dental clinic: 152 days", "Water quality study: 89 days", // ... ]; // Rotate every 5 seconds ``` --- ## Deployment Same as before: ```bash npm run build # Deploy build/ folder ``` Or use GitHub Pages, Netlify, Vercel (see main README). --- ## FAQ ### Why persona-based navigation? **Technical dashboards** appeal to researchers. **Impact stories** mobilize citizens. A parent doesn't care about "rhetoric gap metrics" - they care that their kid can't get dental care. ### What happened to the original dashboards? Still available! Click "Analysis Dashboards" in the top menu. Power users and researchers can still access all the technical analysis. ### Can I add more personas? Yes! Edit `HomePage.jsx` and `ImpactDashboard.jsx`. Examples: - Business Owner → Economic Development - Teacher → Classroom Resources - Senior → Healthcare Access ### How do I update the numbers? Run the Python analysis pipeline - it auto-exports to `dashboardData.js`. Or edit that file directly for quick updates. --- ## Support Questions? See: - `frontend/policy-dashboards/README.md` - Technical setup - `docs/FRONTEND_INTEGRATION_GUIDE.md` - Python integration - `docs/ACCOUNTABILITY_DASHBOARD_STRATEGY.md` - Strategy guide --- **The goal:** Move people from *awareness* to *action* by showing them exactly how decisions affect their lives and who's making those decisions.