Skip to content

Building

  • Node.js — see .node-version for the expected version
  • pnpm — installed globally (npm install -g pnpm)
Terminal window
pnpm install

All scripts run from the workspace root. Use pnpm <script> to run them.

ScriptWhat it does
fmtFormat all TypeScript (Biome) and Markdown (rumdl) files
fixAuto-fix lint issues (Biome --write)
checkFull validation: lint + typecheck + build:types + check:fixtures + check:architecture
testRun all package-level tests workspace-wide
validatecheck + test combined — the full pre-commit validation
buildBuild all packages recursively
typecheckRun TypeScript type checking across all packages
build:typesIncremental tsc -b using project references
check:architectureVerify monorepo dependency rules (no circular deps, boundary compliance)
check:fixturesVerify test fixture generation is consistent

For day-to-day development, pnpm fmt && pnpm fix after changes, and pnpm validate before committing.

CommandDescription
pnpm devStart desktop in dev mode (Electron + Vite HMR)
pnpm --filter @repo-edu/desktop run buildProduction build of the Electron app
pnpm desktop:package:macos:appPackage as Repo Edu.app in apps/desktop/release/mac-*/
pnpm desktop:testDesktop-specific runtime validation (preload bridge, tRPC wiring)
CommandDescription
pnpm build:cliBuild the CLI to apps/cli/dist/
./apps/cli/dist/redu --helpRun the built CLI
CommandDescription
pnpm docs:devStart Astro dev server with HMR
pnpm docs:buildProduction build of the docs site
pnpm docs:previewBuild + preview the docs site
pnpm docs:testRun docs smoke, workflow alignment, and browser guardrail tests

Integration tests run real workflows against live Git providers using Docker containers (Gitea, GitLab) or live APIs (GitHub).

CommandProviderSetup
pnpm test:integrationGitea (default)Spins up a Gitea Docker container, runs tests, tears down
pnpm test:integration:giteaGiteaSame as above. Configurable via GITEA_PORT and INTEGRATION_GITEA_URL
pnpm test:integration:gitlabGitLabSpins up GitLab Docker container (slow first start), runs tests, tears down
pnpm test:integration:githubGitHubRuns against live GitHub API. Requires GITHUB_TOKEN and target org configuration

GitLab also supports split commands (test:integration:gitlab:up, test:integration:gitlab:run, test:integration:gitlab:down) for keeping the container running across test iterations.

ScriptDescription
pnpm file-sizesTree-style line/file counts per subfolder. Run pnpm file-sizes for options.
pnpm deps:latestUpgrade all dependencies to latest versions and dedupe