This repo is being modernized into a Turborepo-based monorepo with a Vite React frontend, a Rust GraphQL API, and AWS CDK infrastructure. Legacy code is preserved under legacy/ for reference.
apps/
web/ # React + Vite frontend
api/ # Rust + Axum + async-graphql API
packages/
contracts/ # Generated GraphQL SDL
infra/ # AWS CDK v2 (TypeScript)
legacy/ # Archived legacy webpack/Flow codebase
Legacy assets are now served from apps/web/public/images, and API data references them with /images/... URLs.
- Node.js 24 (repo uses engines for web/infra) and pnpm 9
- Rust toolchain (rustup)
- Windows: Visual Studio Build Tools with C++ workload for Rust builds
From repo root:
pnpm install
pnpm dev
This starts:
- Web (Vite) on
http://localhost:5173(or the next free port if 5173 is in use). - API (Axum + async-graphql) on
http://127.0.0.1:3000/graphql.
The API respects PORT if you want a different port. If GRAPHQL_ORIGIN_SECRET is
set, requests must include the x-origin-secret header.
To run them individually:
pnpm dev:web
pnpm dev:api
pnpm install
pnpm dev # runs turbo dev (per-package dev scripts)
pnpm dev:web # Vite dev server
pnpm dev:api # Rust API (cargo run)
pnpm build # turbo build
pnpm lint # Biome (where configured)
pnpm format # Biome (where configured)
pnpm test # Vitest (web)
Contracts are generated from the Rust schema (code-first). To refresh:
pnpm -C packages/contracts build
Infrastructure is scaffolded but not deployable until an AWS account is configured.
pnpm -C packages/infra build
pnpm -C packages/infra synth
Deployments run via GitHub Actions on main pushes. The workflow builds the web app, builds the Rust Lambda zip, deploys CDK, syncs the web assets to S3, and invalidates CloudFront.
The legacy codebase (webpack, Flow, Express) is archived in legacy/ and is not used by the new build.