StarterApp Docs
Codebase

Formatting and Linting

Automated code quality through Ultracite and TypeScript strict mode.

The codebase uses Ultracite (Biome wrapper) for formatting and linting, combined with TypeScript strict mode for static analysis. Both tools integrate into the development workflow for immediate feedback.

Single Tool Philosophy

Ultracite replaces the traditional Prettier + ESLint stack with a unified tool. One configuration file, one command surface, no conflicting rules between formatter and linter.

Ultracite (Biome)

Ultracite wraps the Biome toolchain with consistent command interface:

Ultracite Commands
# Format files and apply auto-fixes
pnpm format

# Check for lint violations (no mutations)
pnpm lint

# Run across specific package
pnpm --filter marketing lint

Configuration lives in biome.jsonc at repository root. The configuration covers:

  • Code formatting (indentation, line length, quotes)
  • Import organization and sorting
  • Unused variable detection
  • TypeScript-aware correctness checks

TypeScript Strict Mode

All packages and applications extend shared TypeScript configuration from tooling/typescript-config. Strict mode enables comprehensive type checking:

Editor Integration

VS Code, Cursor, and compatible editors integrate with quality tools:

Pre-commit Validation

Git hooks run validation before commits:

Validation Pipeline

Complete validation before commits and in CI:

Validation Commands
# Format code
pnpm format

# Lint violations
pnpm lint

# Type checking
pnpm typecheck

# Test execution
pnpm test

# Build verification
pnpm build

# Run all checks sequentially
pnpm validate

The pnpm validate command executes lint, typecheck, test, and build in sequence. CI runs the same command for consistency between local and remote validation.

Validate Before Commit

Run pnpm validate before creating commits. The command catches type errors, lint violations, test failures, and build issues locally before pushing changes.

Configuration Files

Quality tool configuration locations:

Next Steps