No description
  • TypeScript 67.9%
  • Svelte 30.4%
  • Shell 0.7%
  • JavaScript 0.4%
  • Dockerfile 0.3%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Luke Jameson 532acf0a19
Some checks failed
Deploy / build-dev (push) Has been skipped
Deploy / deploy-dev (push) Has been skipped
Deploy / test (push) Successful in 1m54s
Deploy / build-and-push (push) Successful in 28s
Deploy / deploy-production (push) Has been skipped
Deploy / deploy-test (push) Failing after 1m57s
Add contributor guide
2026-08-24 15:11:50 +01:00
.forgejo/workflows fix: retry docker push after build (Forgejo scope=* auth challenge bug) 2026-08-04 21:12:35 +01:00
apps Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
docs Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
packages fix: align shared resend version with web app (^6.12.4) to prevent nested node_modules 2026-08-04 21:02:37 +01:00
scripts Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
.dockerignore Docker stack: Forgejo CI/CD, Codeberg CR, seasgg-compatible compose 2026-07-16 13:23:25 +01:00
.env.example Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
.gitignore operator fixes, ad fixes, image upload fixes 2026-06-18 08:53:02 +01:00
.prettierignore real-time websocket, wave forecast, alert testing, operator logos 2026-06-29 18:48:41 +01:00
.prettierrc feat: Dockerise Route2Rock for test deployment + CI/CD pipeline 2026-06-17 11:49:44 +01:00
AGENTS.md Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
alderney_rf_300_trees.json real-time websocket, wave forecast, alert testing, operator logos 2026-06-29 18:48:41 +01:00
CONTRIBUTING.md Add contributor guide 2026-08-24 15:11:50 +01:00
docker-compose.dev.yml fix: scraper image name mismatch (alderney-travel-scraper) 2026-08-03 07:58:53 +01:00
docker-compose.prod.yml fix: scraper image name mismatch (alderney-travel-scraper) 2026-08-03 07:58:53 +01:00
docker-compose.test.yml fix: scraper image name mismatch (alderney-travel-scraper) 2026-08-03 07:58:53 +01:00
package-lock.json chore: regenerate lockfile after resend version alignment 2026-08-04 21:05:01 +01:00
package.json Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
README.md Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
SETUP.md Rebrand Route2Rock to Alderney Travel 2026-07-24 15:56:04 +01:00
tsconfig.json feat: Dockerise Route2Rock for test deployment + CI/CD pipeline 2026-06-17 11:49:44 +01:00

Alderney Travel

A mobile-friendly website that shows every way to travel to and from Alderney with weather risk warnings.

When Aurigny cancels flights or the Channel Islands weather turns bad, residents can see their alternatives without checking five different websites.


What It Does

  • Search. Pick a date and see every flight, ferry, and charter leaving or arriving at Alderney.
  • Weather risk. Low / Medium / High indicators for both air and sea travel, driven by live METAR data.
  • Alerts. Get emailed when a route changes or bad weather threatens your journey.
  • Demand signalling. Tell charter operators you want to travel on a specific date, and they can schedule a trip.
  • PWA. Install it on your phone's home screen — no app store needed.

Quick Start (Development)

# 1. Install dependencies
npm install

# 2. Start a PostgreSQL database (if you don't have one)
docker run -d --name r2r-db \
  -e POSTGRES_USER=alderneytravel_user \
  -e POSTGRES_PASSWORD=change-me-strong-password \
  -e POSTGRES_DB=alderneytravel \
  -p 5432:5432 \
  postgres:16-alpine

# 3. Copy and edit the environment file
cp .env.example .env
# → Edit .env and set DATABASE_URL, SESSION_SECRET, RESEND_API_KEY

# 4. Create database tables
npm run db:migrate

# 5. (Optional) Add demo data
npm run db:seed

# 6. Start the app
npm run dev
# → Website: http://localhost:5173
# → Login: admin@alderneytravel.gg / admin123

Full step-by-step guide (accounts, services, Docker, deployment): SETUP.md


Tech Stack

Layer Technology
Framework SvelteKit 5
Language TypeScript
Database PostgreSQL, Drizzle ORM
Styling Tailwind
Email Resend
Scraping Cheerio
Deployment Docker Compose + Forgejo Actions

Project Layout

alderneytravel/
├── apps/
│   ├── web/                    # Main website (SvelteKit 5)
│   └── scraper-scheduler/      # Background scraper service
├── packages/
│   └── database/               # Shared schema, migrations, seeds
├── scripts/scrapers/           # Scraper research & documentation
├── docs/                       # Project docs & planning
├── data/                       # ML model files
├── SETUP.md                    # Complete setup guide ← START HERE
└── .env.example                # Environment variable template

Common Commands

What Command
Start dev server npm run dev
Run tests npm run test
Run visual tests npm run visual-audit
Lint npm run lint
Type check npm run check
Build npm run build
Create DB migration npm run db:generate
Run DB migration npm run db:migrate
Seed demo data npm run db:seed-demo
Start in Docker (local) npm run docker:local:up

Documentation

Doc What's in it
SETUP.md ← START HERE. Complete setup: accounts, services, step-by-step
docs/deployment.md How to deploy to a live server (Docker, Traefik, env vars, backups)
docs/quote-for-ian.md Project quote: scope, pricing, timeline
docs/research-context.md Full research: operators, routes, Ian's spec, technical context
docs/session-log.md Decision record: why things were built the way they were
docs/scraper-research.md Scraper findings per operator: how each site works and how to scrape it
docs/ml-integration-breakdown.md ML disruption prediction model: how it works and how to integrate it
docs/weather-research.md Free weather data sources (METAR) for disruption risk calculations
docs/utm-tracking.md UTM tracking convention for affiliate booking links
docs/visual-audit.md Automated visual regression tests (screenshots at all sizes)
scripts/scrapers/README.md Scraper code layout and what each scraper does
AGENTS.md AI coding agent guidelines

Operators Covered

Scheduled (data ingested automatically):

  • Aurigny (Skybus): flights to Guernsey, Southampton, and UK connections
  • Finistair: flights to Jersey and Brest
  • Alderney Ferry Services: ferries to Guernsey and Cherbourg
  • Water Taxi CI: ferries to Jersey
  • Manche Iles Express: ferries to Diélette, Granville, Carteret

Charter (demand aggregation):

Roque Marine, Alderney Access, Out of the Blue, Trinity, Bailiwick Chief