AI-powered collaborative markdown editor. React + NestJS + Yorkie CRDT, pnpm monorepo.
pnpm install # Install all dependencies
# Frontend
pnpm frontend dev # Start frontend dev server
pnpm frontend build # Build (tsc + vite)
pnpm frontend lint # Lint frontend
# Backend
pnpm backend start:dev # NestJS watch mode
pnpm backend build # Build backend
pnpm backend test # Jest unit tests
pnpm backend test:e2e # End-to-end tests
pnpm backend db:generate # Regenerate Prisma client
# All
pnpm lint # Lint all packages
pnpm format:check # Check formatting
# API client generation
pnpm generate:frontend # Generate TypeScript API client from OpenAPI specAlways run before submitting:
pnpm lint && pnpm format:check && pnpm backend testFor database schema changes: pnpm backend db:generate
For API changes: pnpm generate:frontend to regenerate the frontend API client.
- Design docs:
docs/design/for architectural context. New docs use TEMPLATE.md. - Task tracking:
docs/tasks/active/for in-progress,docs/tasks/archive/for completed. UseYYYYMMDD-<slug>-{todo,lessons}.mdpairs. - Setup: Husky manages git hooks. Run
pnpm installto set up automatically.
- Prettier config: tabs, 4-space width, 100 chars, double quotes, semicolons — different from other yorkie projects
- Frontend API client is auto-generated from OpenAPI spec (
api/backend-openapi-spec.json) — don't editfrontend/src/api/manually - Backend uses MongoDB via Prisma ORM — schema at
backend/prisma/schema.prisma - Auth: GitHub OAuth -> JWT access/refresh tokens
- AI features use LangChain with OpenAI/Ollama + Qdrant for RAG
- Frontend tests are not currently configured
- Desktop app uses Electron via electron-vite