A modern Single Page Application (SPA) built with Svelte 5 and SvelteKit, designed as the frontend for the Booqr booking management system. This application emphasizes security, accessibility, and standards-first development with a minimalist, composable architecture.
- Lean Dependency Tree: Tree-shaken, code-split chunks — no monolithic "vendor" bundle.
- Svelte 5 with Runes: Modern reactive programming using Svelte 5's runes
system (
$state,$derived,$effect,$props) for efficient state management. - SvelteKit SPA Mode: Static site generation targeting static deployments with client-side routing.
- Tailwind CSS: Utility-first CSS framework for consistent, minimal styling.
- OpenAPI Code Generation: Auto-generated API client from OpenAPI specification.
- TanStack Query: Declarative data fetching and
caching via route-local
*Data.svelte.jshooks, with automatic 401 refresh-and-retry and coarse cache invalidation. - JWT Authentication: Secure authentication flow.
- ES2022 Target: Modern JavaScript features for optimal performance.
- Semantic HTML5: Strict adherence to semantic markup and WCAG AA accessibility standards.
- Security-First Design: OWASP-aligned security practices.
- Playwright E2E Testing: End-to-end testing with semantic selectors and accessibility assertions.
- Container Security: Runs rootless in minimal Alpine Linux images (~20MB) with
immutable filesystem.
- Lighttpd Web Server: Secure, minimal-attack-surface static web server in production.
- Two-Stage Docker Builds: Reproducible builds with separate build and runtime stages for optimal security and size.
The application is organized following SvelteKit's file-based routing conventions:
- src/routes: Page components and routes
- src/lib: Shared utilities and components
- src/routes/+layout.svelte: Top-level layout with semantic navigation
- e2e: Playwright end-to-end tests
- static: Static assets served at root
- Dockerfile: Multi-stage build configuration
- lighttpd.conf: Production web server configuration
- AGENTS.md: Development guidelines for AI agents
Note: Never manually edit files in src/lib/api/ as they are auto-generated.
Copyright (C) 2026 Mads Klinkby
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.