Spaces:
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
/dashboardpage 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)
./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
# 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
- Discovery: User visits documentation site (port 3000)
- Getting Started: Reads installation guides
- Launch: Clicks "Dashboard" β Opens React app (port 5173)
- 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
# 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- Configurationwebsite/src/pages/index.tsx- Homepagewebsite/docs/- Documentation markdown files
Dashboard
frontend/src/App.tsx- Main routesfrontend/src/pages/Dashboard.tsx- Homepage with statsfrontend/src/pages/Heatmap.tsx- Interactive mapfrontend/src/pages/Documents.tsx- Search interfacefrontend/src/pages/Nonprofits.tsx- Nonprofit searchfrontend/src/pages/Opportunities.tsx- Opportunity tracker
API
api/app.py- Databricks Apps entry pointapi/main.py- Standalone modeagents/- Multi-agent systemdiscovery/- 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.