The web front end for weeb.vip — the anime site's pages, search and account screens.
Built with SvelteKit 2 and Svelte 5. Data comes from the GraphQL gateway rather than from any database directly, with types generated from the schema; search is served by Algolia.
Requires the Node version in .nvmrc.
yarn install
yarn dev # dev server
yarn build # production build
yarn preview # serve the build locallyCopy .env.example to .env first — the app needs the gateway URL and the
Algolia credentials to do anything useful.
yarn check # svelte-check against tsconfig.json
yarn test # unit + component tests (Vitest)
yarn test:watch # the same, in watch mode
yarn test:coverage # with a v8 coverage report in coverage/
yarn test:e2e # end-to-end (Playwright)
yarn storybook # component explorer on :6006yarn check:gate compares svelte-check output against
.svelte-check-baseline, so existing errors do not fail a build but new ones
do.
The Playwright suite includes mobile projects (test:e2e:mobile,
test:e2e:ios, test:e2e:android) as well as the desktop run.
yarn graphql-codegen # regenerate typed documents from the schemaGenerated types are committed, so a schema change means regenerating and committing the result alongside it.
Cloudflare, via @sveltejs/adapter-cloudflare:
yarn deploy:staging
yarn deploy:production.github/workflows/deploy-cloudflare.yml does the same on merge. An
@sveltejs/adapter-node build (yarn start) and a Dockerfile are kept for
running it as a container instead.
Tracing config for a local OpenTelemetry, Tempo and Grafana stack lives in
docker-compose.otel.yml and the *-config.yaml files beside it.