Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
| sidebar_position: 2 | |
| displayed_sidebar: developersSidebar | |
| # ποΈ Architecture Overview | |
| ## Three Separate Services | |
| Open Navigator consists of **three distinct services** that work together: | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β Open Navigator Platform β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ | |
| β β | |
| β π Documentation Site (Docusaurus) β | |
| β ββ> http://localhost:3000 β | |
| β β’ Project overview and marketing β | |
| β β’ API documentation and guides β | |
| β β’ Installation instructions β | |
| β β’ Links to dashboard β | |
| β β | |
| β βοΈ Interactive Dashboard (React + Vite) β | |
| β ββ> http://localhost:5173 β | |
| β β’ Real-time data visualization β | |
| β β’ Search and filter capabilities β | |
| β β’ Interactive heatmap β | |
| β β’ Document explorer β | |
| β β’ Nonprofit search β | |
| β β’ Opportunity tracker β | |
| β β | |
| β π₯ API Backend (FastAPI + Python) β | |
| β ββ> http://localhost:8000 β | |
| β β’ Data ingestion and processing β | |
| β β’ Multi-agent AI system β | |
| β β’ Database connections β | |
| β β’ API endpoints for dashboard β | |
| β β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## Why Three Services? | |
| ### π Documentation Site (`website/`) | |
| - **Purpose**: Documentation, guides, and project information | |
| - **Technology**: Docusaurus (static site generator) | |
| - **Port**: 3000 | |
| - **Use Case**: First-time visitors, documentation, API reference | |
| ### βοΈ Dashboard (`frontend/`) | |
| - **Purpose**: Interactive data exploration and analysis | |
| - **Technology**: React 18 + TypeScript + Vite | |
| - **Port**: 5173 | |
| - **Use Case**: Daily users exploring data, creating reports, searching | |
| ### π₯ API Backend (`api/`) | |
| - **Purpose**: Data processing and AI agents | |
| - **Technology**: FastAPI + Python | |
| - **Port**: 8000 | |
| - **Use Case**: Powers the dashboard, runs background jobs | |
| ## Integration Points | |
| ### Documentation β Dashboard | |
| - Navbar has "π Dashboard" link pointing to `http://localhost:5173` | |
| - Homepage has "Launch Dashboard" button | |
| - `/dashboard` page auto-redirects to React app | |
| ### Dashboard β API | |
| - All data requests go to `http://localhost:8000/api/*` | |
| - Real-time updates via API polling | |
| - Authentication handled via API | |
| ### API β Dashboard | |
| - Serves static built dashboard in production | |
| - Provides REST endpoints for all data | |
| ## Development Workflow | |
| ### Option 1: Start All Services (Recommended) | |
| ```bash | |
| ./start-all.sh | |
| ``` | |
| This launches all three services in tmux: | |
| - Window 0: API Backend | |
| - Window 1: React Dashboard | |
| - Window 2: Documentation Site | |
| - Window 3: Shell | |
| ### Option 2: Start Individually | |
| ```bash | |
| # Terminal 1: API | |
| source .venv/bin/activate | |
| python main.py serve | |
| # Terminal 2: Dashboard | |
| cd frontend | |
| npm run dev | |
| # Terminal 3: Documentation | |
| cd website | |
| npm start | |
| ``` | |
| ## Access Points | |
| | Service | Development URL | Purpose | | |
| |---------------|-------------------------|----------------------------------| | |
| | Documentation | http://localhost:3000 | Read guides and API docs | | |
| | Dashboard | http://localhost:5173 | **Main application interface** | | |
| | API | http://localhost:8000 | Backend services | | |
| | API Docs | http://localhost:8000/docs | Interactive API reference | | |
| ## User Journey | |
| 1. **Discovery**: User visits documentation site (port 3000) | |
| 2. **Getting Started**: Reads installation guides | |
| 3. **Launch**: Clicks "Dashboard" β Opens React app (port 5173) | |
| 4. **Usage**: Interacts with dashboard, which calls API (port 8000) | |
| ## Production Deployment | |
| In production, the architecture changes: | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β Production Deployment β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ | |
| β β | |
| β π Reverse Proxy (nginx/Databricks Apps) β | |
| β ββ> https://opennavigator.org β | |
| β β | |
| β ββ / β Docusaurus static build β | |
| β ββ /docs β Docusaurus static build β | |
| β ββ /dashboard β React static build β | |
| β ββ /api/* β FastAPI backend β | |
| β β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ### Build Commands | |
| ```bash | |
| # Build documentation | |
| cd website && npm run build | |
| # Output: website/build/ | |
| # Build dashboard | |
| cd frontend && npm run build | |
| # Output: frontend/dist/ | |
| # Deploy backend | |
| # FastAPI serves both static builds | |
| ``` | |
| ## Key Files | |
| ### Documentation Site | |
| - `website/docusaurus.config.ts` - Configuration | |
| - `website/src/pages/index.tsx` - Homepage | |
| - `website/docs/` - Documentation markdown files | |
| ### Dashboard | |
| - `frontend/src/App.tsx` - Main routes | |
| - `frontend/src/pages/Dashboard.tsx` - **Homepage with stats** | |
| - `frontend/src/pages/Heatmap.tsx` - Interactive map | |
| - `frontend/src/pages/Documents.tsx` - Search interface | |
| - `frontend/src/pages/Nonprofits.tsx` - Nonprofit search | |
| - `frontend/src/pages/Opportunities.tsx` - Opportunity tracker | |
| ### API | |
| - `api/app.py` - Databricks Apps entry point | |
| - `api/main.py` - Standalone mode | |
| - `agents/` - Multi-agent system | |
| - `discovery/` - Data ingestion | |
| ## Common Confusion | |
| β **Wrong**: "The documentation site IS the application" | |
| β **Correct**: "The documentation site LINKS TO the application" | |
| β **Wrong**: "Port 3000 has search and filters" | |
| β **Correct**: "Port 5173 (React dashboard) has search and filters" | |
| β **Wrong**: "Docusaurus replaced the dashboard" | |
| β **Correct**: "Docusaurus was added FOR documentation, dashboard is unchanged" | |
| ## Troubleshooting | |
| ### "I can't find the search feature" | |
| β You're on the documentation site. Click "π Dashboard" in the navbar to access the React app. | |
| ### "Dashboard link goes to wrong place" | |
| β Make sure React dev server is running (`cd frontend && npm run dev`) | |
| ### "No data showing in dashboard" | |
| β Make sure API backend is running (`python main.py serve`) | |
| ### "Everything looks different" | |
| β Documentation site (port 3000) is new. Dashboard (port 5173) is unchanged. | |
| ## Next Steps | |
| - [Start all services](../README.md#quick-start) | |
| - [Dashboard documentation](../website/docs/dashboard.md) | |
| - [API documentation](../website/docs/api.md) | |