Getting Started
Prerequisites
Section titled “Prerequisites”- Node.js 24 or later (
.nvmrcat repo root) - pnpm 11 (enforced via
packageManagerin the rootpackage.json)
Install
Section titled “Install”git clone git@git.toptal.com:screening-ops/Indra-lukmana.gitcd Indra-lukmanapnpm installpnpm setupDevelopment
Section titled “Development”Start the main dev servers in parallel:
pnpm devThis runs:
| App | Package | Default URL |
|---|---|---|
| Web | @quiz-builder/web | http://localhost:5173 |
| API | @quiz-builder/api | http://localhost:8787 (Wrangler) |
| Storybook | @quiz-builder/storybook | http://localhost:6006 |
| Docs | @quiz-builder/docs | http://localhost:4321 |
Better Auth routes: http://localhost:8787/api/auth/* (see Authentication).
Run a single app:
pnpm dev:webpnpm dev:apipnpm dev:storybookpnpm dev:docsRoot scripts
Section titled “Root scripts”| Script | Purpose |
|---|---|
pnpm setup | Copy env templates, migrate local D1, install Playwright Chromium |
pnpm format / pnpm format:check | oxfmt |
pnpm lint / pnpm lint:check | oxlint |
pnpm typecheck | tsgo across workspaces (astro check for docs) |
pnpm test | Vitest smoke tests in each package |
pnpm test:storybook | Storybook browser interaction tests |
pnpm build | Production builds for all apps |
pnpm check:all | format + lint + typecheck |
pnpm ci:check | check:all + test |
Toolchain
Section titled “Toolchain”This repo uses oxlint, oxfmt, and tsgo (@typescript/native-preview) instead of ESLint, Prettier, and tsc. Git hooks are managed by Lefthook (lefthook.yml).