Skip to content

Getting Started

  • Node.js 24 or later (.nvmrc at repo root)
  • pnpm 11 (enforced via packageManager in the root package.json)
Terminal window
git clone git@git.toptal.com:screening-ops/Indra-lukmana.git
cd Indra-lukmana
pnpm install
pnpm setup

Start the main dev servers in parallel:

Terminal window
pnpm dev

This runs:

AppPackageDefault URL
Web@quiz-builder/webhttp://localhost:5173
API@quiz-builder/apihttp://localhost:8787 (Wrangler)
Storybook@quiz-builder/storybookhttp://localhost:6006
Docs@quiz-builder/docshttp://localhost:4321

Better Auth routes: http://localhost:8787/api/auth/* (see Authentication).

Run a single app:

Terminal window
pnpm dev:web
pnpm dev:api
pnpm dev:storybook
pnpm dev:docs
ScriptPurpose
pnpm setupCopy env templates, migrate local D1, install Playwright Chromium
pnpm format / pnpm format:checkoxfmt
pnpm lint / pnpm lint:checkoxlint
pnpm typechecktsgo across workspaces (astro check for docs)
pnpm testVitest smoke tests in each package
pnpm test:storybookStorybook browser interaction tests
pnpm buildProduction builds for all apps
pnpm check:allformat + lint + typecheck
pnpm ci:checkcheck:all + test

This repo uses oxlint, oxfmt, and tsgo (@typescript/native-preview) instead of ESLint, Prettier, and tsc. Git hooks are managed by Lefthook (lefthook.yml).