YAS/apps/api/package.json
YetAnotherSuite Dev 262fbf48e2 feat: Phase 1 foundation — monorepo, auth, DB schema, API, shared packages
Phase 1.1: Monorepo Setup & Design System
- Turborepo + pnpm workspaces monorepo structure
- Shared packages: @yetanother/types, @yetanother/utils, @yetanother/hooks, @yetanother/ui, @yetanother/db
- Radix UI primitives with custom shadcn/ui-style components (Button, Dialog, Toast, Tooltip, Tabs, Label)
- Tailwind CSS v4 with design tokens (light theme)
- TypeScript strict mode with composite project references

Phase 1.2: Authentication & User Management
- Fastify server setup with JWT auth (register, login, me endpoints)
- @fastify/jwt with cookie support
- User and workspace models with Prisma ORM

Phase 1.3: Database Schema & Migrations
- Full Prisma schema: User, Workspace, Node, NodeLink, Tag,
  Folder, Reminder, Embedding, Activity, Attachment,
  WorkspaceMember, SyncCheckpoint
- pgvector extension for embeddings (vector(1536))
- Seed script for dev data
- Comprehensive indexes (GIN, BRIN, B-tree)

Phase 1.4: API Foundation & Middleware
- Fastify REST API with versioned routes (/api/v1)
- Zod request validation on all endpoints
- CORS, Helmet security headers, rate limiting
- Structured logging with pino-pretty
- Swagger/OpenAPI docs at /docs
- WebSocket support (collaboration ready)
- CRUD routes: nodes, workspaces, search, auth

Tooling:
- ESLint 9 flat config with TypeScript parser
- Prettier with consistent formatting rules
- Turbo v2 task orchestration
- GitHub Actions CI workflow
- Husky + lint-staged pre-commit hooks
2026-07-20 21:58:17 +02:00

44 lines
1.1 KiB
JSON

{
"name": "@yetanother/api",
"private": true,
"type": "module",
"scripts": {
"dev": "tsx watch src/main.ts",
"build": "tsc",
"start": "node dist/main.js",
"lint": "eslint src/",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"clean": "rm -rf .turbo node_modules dist"
},
"dependencies": {
"fastify": "^5.3.0",
"@fastify/cors": "^11.0.0",
"@fastify/rate-limit": "^10.2.0",
"@fastify/helmet": "^13.0.0",
"@fastify/swagger": "^9.5.0",
"@fastify/swagger-ui": "^5.2.0",
"@fastify/websocket": "^11.0.0",
"@fastify/redis": "^7.0.0",
"@fastify/jwt": "^9.0.0",
"@fastify/cookie": "^11.0.0",
"pino": "^9.6.0",
"pino-pretty": "^13.1.0",
"zod": "^3.24.0",
"@yetanother/db": "workspace:*",
"@yetanother/types": "workspace:*",
"@yetanother/utils": "workspace:*",
"ioredis": "^5.6.0"
},
"devDependencies": {
"@yetanother/tsconfig": "workspace:*",
"@yetanother/eslint-config": "workspace:*",
"typescript": "^5.8.0",
"tsx": "^4.19.0",
"vitest": "^3.1.0",
"eslint": "^9.25.0",
"@types/node": "^22.15.0"
}
}