No description
- TypeScript 67.9%
- Svelte 30.4%
- Shell 0.7%
- JavaScript 0.4%
- Dockerfile 0.3%
- Other 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
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
|
||
| .forgejo/workflows | ||
| apps | ||
| docs | ||
| packages | ||
| scripts | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| alderney_rf_300_trees.json | ||
| CONTRIBUTING.md | ||
| docker-compose.dev.yml | ||
| docker-compose.prod.yml | ||
| docker-compose.test.yml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| SETUP.md | ||
| tsconfig.json | ||
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 |
| 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