No description
- TypeScript 47.8%
- CSS 27.2%
- Python 23.5%
- Shell 1.1%
- HTML 0.4%
| .cursor/rules | ||
| backend | ||
| docs | ||
| frontend | ||
| infra | ||
| .env.example | ||
| .gitignore | ||
| README.md | ||
SurvSupport.com
Map‑first web app for discovering public surveying and GNSS infrastructure layers. The home page renders a Leaflet map of NTRIP base stations grouped by country, sourced from public NTRIP casters around the world.
Live site: https://survsupport.com
Stack
- Backend – FastAPI + SQLAlchemy + APScheduler (Python 3.13)
- Database – PostgreSQL (currently 17, served by the system
postgresqlpackage) - Frontend – React 18 + TypeScript + Vite + Leaflet
- Reverse proxy – nginx with Let's Encrypt TLS
Repository layout
.
├── backend/ FastAPI app (see backend/README.md)
├── frontend/ React/Vite SPA (see frontend/README.md)
├── infra/
│ ├── nginx/ Production nginx config (deployed to /etc/nginx)
│ ├── systemd/ systemd unit files (deployed to /etc/systemd/system)
│ └── cleanup.sh Idempotent consolidation/repair script (sudo)
├── docs/ All design + operational documentation (start here)
└── .env.example Template for the runtime config
Documentation
Read these in order:
docs/architecture.md– components and data flowdocs/data-model.md– database schemadocs/api.md– HTTP API referencedocs/ntrip.md– NTRIP protocol quirks (read this before touchingntrip_fetcher.py/ntrip_parser.py)docs/operations.md– runbook (add/refresh/inspect networks, troubleshoot)docs/deployment.md– production setupdocs/development.md– local dev loop
Production layout (single source of truth)
Everything lives under /var/www/gnsspro.com/html/:
| What | Where |
|---|---|
| Backend code | /var/www/gnsspro.com/html/backend/ |
| Backend service | survsupport-api.service (systemd, port 8000) |
| Backend env | /var/www/gnsspro.com/html/.env |
| Frontend source | /var/www/gnsspro.com/html/frontend/ |
| Frontend bundle | /var/www/gnsspro.com/html/frontend/dist/ |
| nginx config | /etc/nginx/sites-available/survsupport.conf (mirrored from infra/nginx/survsupport.conf) |
| Database | survsupport database on local PostgreSQL |
There is one — and only one — copy of each. If you find duplicate trees
(e.g. /home/julian/survsupport/), run sudo bash infra/cleanup.sh to
reconsolidate.
Keeping these docs current
Whenever you change code, update the corresponding doc in the same change.
A Cursor rule (.cursor/rules/keep-docs-current.mdc) reminds the AI agent
to do this; please do it manually too. The mapping from code → doc is
listed in that rule.