2.3 KiB
2.3 KiB
Build & Run — YetAnotherSuite
Prerequisites
- Node.js 22+
- pnpm 11+ (
npm install -g pnpm) - Docker + Docker Compose (for Postgres, Redis, Meilisearch)
- Rust (only for desktop build — Tauri v2)
Quick start
# 1. Install dependencies
pnpm install
# 2. Approve native build scripts (first time only)
pnpm approve-builds
# 3. Start Postgres + Redis + Meilisearch
docker compose up -d postgres redis meilisearch
# 4. Generate Prisma client & run migrations
pnpm --filter @yetanother/db exec prisma generate
pnpm --filter @yetanother/db run db:migrate
# 5. (Optional) Seed dev data
pnpm --filter @yetanother/db exec tsx prisma/seed.ts
# 6. Copy env file
cp .env.example .env
# 7. Start dev servers (API on :4000, Web on :3000)
pnpm dev
Open http://localhost:3000 — the Vite dev server proxies /api and /ws to the API.
Commands
| Command | What |
|---|---|
pnpm dev |
Start all apps in dev mode |
pnpm build |
Build all packages (prod) |
pnpm lint |
ESLint across all packages |
pnpm typecheck |
TypeScript strict type checks |
pnpm test |
Run all tests (Vitest) |
pnpm format |
Prettier format all files |
pnpm clean |
Remove dist + .turbo + node_modules |
Scoped to a single package
pnpm --filter @yetanother/web dev # web only
pnpm --filter @yetanother/api dev # api only
pnpm --filter @yetanother/api exec prisma studio # DB browser
pnpm --filter @yetanother/db run db:migrate # new migration
pnpm --filter @yetanother/db run db:deploy # apply migrations (production)
URLs
| Service | URL |
|---|---|
| Web app | http://localhost:3000 |
| API | http://localhost:4000 |
| API docs | http://localhost:4000/docs |
| Prisma Studio | pnpm --filter @yetanother/db exec prisma studio |
| Meilisearch | http://localhost:7700 |
Docker (production build)
docker compose up --build
This starts Postgres, Redis, Meilisearch, the built API (:4000), and the built web app (:3000/80 via Nginx).
Desktop (Tauri)
Requires the Rust toolchain.
cd apps/desktop
pnpm tauri dev # dev with hot-reload
pnpm tauri build # production bundle
Verification
pnpm lint && pnpm typecheck && pnpm build
All three must pass before committing.