🗺️ A crowd-sourced, interactive map dedicated to documenting the Hellenic Army Geographical Service (ΓΥΣ) trigonometric points across Greece.
🌐 Live Demo · ✨ Features · 🛠️ Tech Stack · 📄 Paper · 🚀 Getting Started · 💖 Support · 📝 License
The project is deployed and accessible at: https://vathra.xyz
- 🗺️ Interactive Map — A fast, mobile-friendly map displaying over 25,000 trigonometric points
- 📍 Marker Clustering — Efficiently handles a large number of points for a smooth experience
- 🎨 Custom Styling — Markers are color-coded and sized based on status and geodetic order
- 📡 Geolocation — "Find My Location" button to center the map and highlight the nearest point
- 🔍 Search — Quickly find points by name/ID and fly the map to the location
- 🗂️ Map Layers — Switch between Map, Topographic, and Satellite views with contour line overlays
- 📋 Detailed Sidebar — Point information, coordinates (WGS84 & ΕΓΣΑ87), report history, and photos
- 📊 Statistics Page — Dashboard with charts on point statuses, contributions, and coverage
- 🧭 AR Compass — Camera-based augmented reality view showing nearby points with direction and distance
- 🔐 Authentication — Sign in with Google OAuth or passwordless Passkeys (WebAuthn/FIDO2)
- 📝 User Contributions — Submit status updates, add comments, upload photos, and apply orthogonal tags (access · approach · quality · heritage) about each point
⚠️ Warning Tags — Inaccessible / dangerous points show a warning glyph on the map and a banner in the point sidebar, so future visitors know before they go- 🛡️ Admin Panel — Dashboard for administrators to review and moderate reports
- 📱 Responsive Design — Fully responsive and mobile-friendly using Material UI
- 🔗 SEO & Social — Dynamic OG images, structured data (JSON-LD), sitemaps, and per-point link previews
- 📈 Privacy Analytics — Plausible-powered, cookie-free visitor analytics
- Frontend: React 19 (Vite), MapLibre GL JS, Protomaps, MUI (Material UI), Recharts, react-helmet-async
- Backend: Node.js, Express 5, Passport.js, @simplewebauthn/server
- Database: PostgreSQL 17 with PostGIS (hosted on Supabase)
- Map Tiles: Self-hosted Protomaps PMTiles on Cloudflare R2/Workers (vector tiles + contour lines)
- Containerization: Docker & Docker Compose for local development
- Monitoring: Sentry (error tracking + browser tracing + session replay)
- Deployment:
- 🖥️ Frontend: Vercel (with serverless functions for OG images & sitemaps)
- ⚙️ Backend: Fly.io (Frankfurt)
- 🔄 CI/CD: GitHub Actions
This project is described in a preprint published on EarthArXiv:
Papadeas, P. (2026). vathra.xyz — Crowdsourced Monitoring of Greece's Geodetic Heritage: Architecture, Empirical Results, and Legal Framework. EarthArXiv. https://doi.org/10.31223/X5VN13
The paper covers the platform architecture, empirical results from the first six months of operation, and the EU/Greek legal framework governing the reuse of geodetic data.
If you use this software or dataset in your research, please cite:
@article{papadeas2026vathra,
title = {vathra.xyz --- Crowdsourced Monitoring of Greece's Geodetic Heritage:
Architecture, Empirical Results, and Legal Framework},
author = {Papadeas, Pierros},
year = {2026},
doi = {10.31223/X5VN13},
journal = {EarthArXiv (preprint)},
url = {https://doi.org/10.31223/X5VN13}
}The dataset is archived on Zenodo:
To run this project locally, you will need Docker Desktop installed.
git clone https://github.com/ppapadeas/greece-trig-points.git
cd greece-trig-pointsCreate a .env file in the root directory by copying the .env.example file.
cp .env.example .envFill in the required variables in the .env file (like your Google OAuth credentials).
From the root directory, run:
docker-compose up -d --buildWait about 15-20 seconds for the database to initialize, then run the migrations and the setup script:
docker-compose exec backend npm run migrate up
docker-compose exec backend npm run db:setupIn a new terminal, navigate to the frontend directory and run npm run dev.
cd frontend
npm run devThe application will be available at http://localhost:5173.
vathra.xyz is a volunteer-run, self-funded project. If you find it useful, consider supporting its development:
Join our community on Discord:
This project is open source and licensed under the GNU AGPLv3. See the LICENSE file for details.
