# trips A SvelteKit travel planning app for managing trips, travelers, transportation, lodgings, package tours, checklists, and experiences. ## Tech Stack - SvelteKit + TypeScript - SQLite (`better-sqlite3`) - Vitest for unit tests - Biome + Prettier for code quality - Bun for local/deploy build workflows - Docker multi-stage build for production image ## Features - Authenticated trip dashboard with upcoming/past trip views - Trip planning with: - flights - private vehicles - other transportation - lodgings - package tours - checklists - experiences - Admin flows for travel reference data and tour operator/tour management ## Local Development ### Requirements - Bun 1.x - Node.js 22+ (runtime target) ### Setup ```sh cp .env.example .env bun install ``` ### Run ```sh bun run dev ``` ## Quality and Tests ```sh bun run lint bun run test bun run check ``` ## Build and Preview ```sh bun run build bun run preview ``` ## Docker ### Build locally ```sh docker build -t trips:local . ``` ### Run locally ```sh docker compose up --build ``` The container stores SQLite data at `/data/trips.db` (mounted as the `trips-data` volume in `docker-compose.yml`). ## CI (Gitea Actions) Workflows live in `.gitea/workflows`: - `pr-checks.yml`: runs lint, tests, and Docker build on pull requests. - `main-image.yml`: builds and pushes a Docker image on push to `main`. ### Registry secrets for image publish Configure these repository secrets in Gitea: - `REGISTRY_USERNAME` - `REGISTRY_PASSWORD` By default, the publish workflow pushes to: - `git.campbellwireless.net//:latest` - `git.campbellwireless.net//:` If your registry host differs, edit `REGISTRY_HOST` in `.gitea/workflows/main-image.yml`.