Developer Setup
SunGlasses is a TypeScript monorepo using pnpm workspaces and Turborepo.
Prerequisites
- Node.js 20+
- pnpm 9+ (
npm install -g pnpm) - Expo CLI (for RN example):
npm install -g @expo/cli
Common commands
pnpm install # Install all dependencies
pnpm build # Build all packages (dependency order)
pnpm dev # Watch mode (all packages)
pnpm typecheck # TypeScript checking
pnpm test # Vitest unit tests
pnpm lint # ESLint
pnpm clean # Remove build artifacts
Run a specific package
pnpm --filter @drakkar.software/sunglasses-core build
pnpm --filter example-web dev
pnpm --filter example-rn start
Documentation site
The website/ directory is a standalone Docusaurus project (not a pnpm workspace package). Install its dependencies once before running docs commands:
cd website && pnpm install --ignore-workspace
cd .. # back to repo root
pnpm docs:dev # Docusaurus dev server
pnpm docs:build # Production build
Adding a new package
mkdir packages/my-package- Copy
packages/core/package.jsonpattern (updatename,description, deps) - Create
tsconfig.jsonextending@drakkar.software/sunglasses-tsconfig/base.json - Create
src/index.ts - Add workspace dependency to consumers
pnpm install
Release
pnpm changeset # Document changes + severity
pnpm version # Bump versions + CHANGELOG
pnpm release # Build + publish to npm
Architecture decisions
- Turborepo over Nx — simpler config, better pnpm integration
- tsup over tsc — single command for CJS + ESM +
.d.ts - Consent via IStorageAdapter — platform-correct persistence automatically
- Opt-out by default — privacy-first; use
defaultOptIn: trueif needed