SvelteKit application for visualizing stadium section ticket allocations by sponsor and matchday.
https://wehaveio-assignment.luisfferreira.dev/
- SvelteKit + Svelte 5 runes
- TypeScript
- Tailwind CSS v4
sveltekit-search-paramsfor URL-synced filters@sveltejs/adapter-nodefor production builds- pnpm
- Node.js 22+
- pnpm 9+
Install dependencies:
pnpm installRun dev server:
pnpm devThe app is available at http://localhost:5173 by default.
pnpm dev # start local dev server
pnpm build # create production build
pnpm preview # preview production build locally
pnpm check # run svelte-check
pnpm lint # run prettier check + eslint
pnpm format # format codebaseBuild locally:
pnpm buildRun output:
node buildEnvironment variables used at runtime:
NODE_ENV(set toproductionin Docker)HOST(defaults to0.0.0.0in Docker)PORT(defaults to3000in Docker)
This repository includes:
Dockerfilefor multi-stage production image.dockerignoreoptimized for smaller build context
Build image:
docker build -t wehave-assignment .Run container:
docker run --rm -p 3000:3000 wehave-assignmentThen open http://localhost:3000.
src/routes/+page.svelte: main dashboard pagesrc/routes/+page.server.ts: server-side load with filters and data shapingsrc/lib/components: reusable UI components (accordion, drawer, selectors, icons)src/lib/data: mock data and page constantssrc/lib/types: shared domain typessrc/lib/utils: shared utility helpers
- Filter state is reflected in URL query params.
- The app currently relies on mock data in
src/lib/data/mockTickets.ts.