No description
  • TypeScript 68.3%
  • Svelte 26.5%
  • Dockerfile 1.6%
  • Shell 1.1%
  • Python 1%
  • Other 1.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Luke Jameson 77a5ed1810
All checks were successful
Build & Deploy / deploy-test (push) Has been skipped
Build & Deploy / deploy-production (push) Successful in 16s
Build & Deploy / detect-changes (push) Successful in 8s
Build & Deploy / build-and-push (push) Successful in 52s
Build & Deploy / deploy-dev (push) Has been skipped
Build & Deploy / test (push) Successful in 2m49s
ci: fetch specific branch + retry in deploys to fix git ref-lock race
Concurrent deploys (e.g. main + production pushed close together) run
git fetch origin in the same /data/apps/airwaysgg dir and collide on
ref locks (cannot lock ref 'refs/remotes/origin/...'). Fetch only the
target branch and retry checkout/pull up to 5x to ride out the race.
2026-09-03 07:54:11 +01:00
.cc-mirror/kimi/config/plans feat: Custom Date Range 2026-03-24 13:56:23 +00:00
.forgejo/workflows ci: fetch specific branch + retry in deploys to fix git ref-lock race 2026-09-03 07:54:11 +01:00
apps fix: restore service-worker fetch handler after push removal 2026-09-02 14:24:38 +01:00
packages db: journal 0017_fix_unmapped_airport_codes so it runs on migrate 2026-09-02 20:38:41 +01:00
scripts chore: remove dead services (ml, notification, orphans) and repo cruft 2026-09-02 13:58:38 +01:00
.dockerignore chore: remove dead services (ml, notification, orphans) and repo cruft 2026-09-02 13:58:38 +01:00
.env.example chore: remove dead services (ml, notification, orphans) and repo cruft 2026-09-02 13:58:38 +01:00
.gitignore chore: add piolium/ to .gitignore and untrack 2026-06-22 08:21:44 +01:00
.mcp.json round of fixes 2026-03-11 13:17:10 +00:00
AGENTS.md fix status and tabs 2026-03-04 12:38:33 +00:00
CLAUDE.md fix delay daya 2026-03-11 12:32:42 +00:00
docker-compose.dev.yml fix: remove dangling ratelimit@file middleware from dev compose 2026-09-02 14:46:38 +01:00
docker-compose.prod.yml ci: migrate to Forgejo registry (host.gsylabs.gg) and drop proxy config 2026-09-02 14:16:23 +01:00
docker-compose.test.yml ci: migrate to Forgejo registry (host.gsylabs.gg) and drop proxy config 2026-09-02 14:16:23 +01:00
docker-compose.yml ci: migrate to Forgejo registry (host.gsylabs.gg) and drop proxy config 2026-09-02 14:16:23 +01:00
package-lock.json chore: remove dead services (ml, notification, orphans) and repo cruft 2026-09-02 13:58:38 +01:00
package.json fixs and error checking 2026-06-14 08:33:52 +01:00
PLAN.md fic bugs and big clean up 2026-03-03 14:00:42 +00:00
PROJECT_SUMMARY.md fic bugs and big clean up 2026-03-03 14:00:42 +00:00
README.md fic bugs and big clean up 2026-03-03 14:00:42 +00:00

airways.gg

Flight tracking platform for Guernsey Airport.

Overview

Shows live arrivals/departures with ML-powered delay predictions based on weather data and historical flight performance.

Tech Stack

  • Frontend: SvelteKit 5 + TypeScript + Tailwind CSS
  • Database: PostgreSQL + Drizzle ORM
  • Scrapers:
    • Guernsey Airport (airport.gg): HTTP-based TypeScript scraper
    • FlightRadar24: Flight data scraper
    • ADS-B: Aircraft registration lookup (adsb.lol / airplanes.live)
  • ML Service: Python FastAPI + scikit-learn
  • Infrastructure: Docker + Docker Compose

Project Structure

airways.gg/
├── apps/
│   ├── web/                    # SvelteKit frontend
│   ├── guernsey-scraper/       # Airport.gg scraper (live + historical backfill)
│   ├── fr24-scraper/           # FlightRadar24 flight data scraper
│   ├── adsb-service/           # ADS-B aircraft registration lookup
│   ├── position-service/       # FR24 live aircraft position poller
│   ├── weather-service/        # Weather data poller
│   └── ml-service/             # Python ML prediction service
├── packages/
│   └── database/               # Drizzle ORM schema & connection
├── docker-compose.yml
├── .env.example
└── package.json

Quick Start

  1. Install dependencies:
npm install
  1. Set up environment:
cp .env.example .env
# Edit .env with your database credentials
  1. Run database migrations:
npm run db:push
  1. Start development:
npm run dev

Docker Deployment

# Build and start all services
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d

# Run historical backfill
docker compose -f docker-compose.prod.yml --env-file .env.prod --profile backfill up guernsey-backfill

Environment Variables

See .env.example for all required variables.

Key variables:

  • DATABASE_URL - PostgreSQL connection string
  • REDIS_URL - Redis/Valkey connection string
  • SESSION_SECRET - Session encryption key

Features

  • Live departure/arrival board with auto-refresh
  • ML delay predictions with confidence levels
  • Historical data backfill (5+ years)
  • Real-time aircraft position tracking
  • Admin panel for monitoring
  • Dark/light mode
  • Mobile-first responsive design

License

Private - All rights reserved.