Lithuanian amateur radio territory competition web app. Operators join seasonal teams, log QSOs, and compete for WAL grid squares.
- TanStack Start + TanStack Router
- oRPC API layer
- Drizzle + PostgreSQL
- Better Auth
- Tailwind CSS + shadcn/ui in
packages/ui - Cloudflare Workers + Alchemy + PlanetScale for deployment
- Ultracite/Biome for formatting and linting
pnpm install
cp apps/web/.env.example apps/web/.env
openssl rand -base64 32 # use this for BETTER_AUTH_SECRETThe example env is preconfigured for local Postgres.
docker compose up -d
pnpm db:push
pnpm devLocal DB defaults: postgres:postgres@localhost:5432/wal-go.
- Change design tokens and global styles in
packages/ui/src/styles/globals.css - Update shared primitives in
packages/ui/src/components/* - Adjust shadcn aliases or style config in
packages/ui/components.jsonandapps/web/components.json
Run from the project root:
pnpm dlx shadcn@latest add accordion dialog popover sheet table -c packages/uiImport shared components like this:
import { Button } from "@WAL-GO/ui/components/button";- Dev with workerd:
pnpm dev:alchemy - Deploy:
pnpm deploy - Destroy:
pnpm destroy
See docs/infra.md.
- Check:
pnpm check - Fix:
pnpm fix
wal-go/
├── apps/
│ └── web/ # Fullstack application (React + TanStack Start)
├── packages/
│ ├── ui/ # Shared shadcn/ui components and styles
│ ├── api/ # API layer / business logic
│ ├── auth/ # Authentication configuration & logic
│ └── db/ # Database schema & queries
pnpm dev: Start the local Node/Vite workflowpnpm dev:alchemy: Start the workerd/Alchemy workflowpnpm build: Build all apps/packagespnpm check-types: Typecheck all apps/packagespnpm test: Run package testspnpm db:push: Push schema changes locallypnpm db:generate: Generate migrationspnpm db:migrate: Run migrationspnpm db:studio: Open Drizzle Studiopnpm check: Run Ultracite/Biome checkspnpm fix: Apply Ultracite/Biome fixes