Restructure the repo into a pnpm + Turborepo monorepo: - apps/web: Nuxt 4 site, now server-rendered and reading all content from the API; pages cached with SWR and purged on content changes - apps/api: NestJS 12 + Prisma 7 + PostgreSQL. Auth with short-lived access tokens and rotating httpOnly refresh cookies, roles (ADMIN, EDITOR), catalog, editable site sections, media upload to S3-compatible storage (converted to WebP), contact messages, audit log - apps/admin: Vue 3 admin panel (Ant Design Vue, Pinia, Tailwind) for products, categories, site sections, messages, media and users - packages/shared: Zod schemas and types shared by API and admin Also: - seed script that loads the original 8 categories / 89 products and section content - Docker images for api (with a one-off migrate service), web, admin, and an nginx gateway for both domains - dev and production compose files, daily database backup service - API e2e tests Removes the committed static out/ build and the old root Dockerfile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
54 lines
1.5 KiB
JSON
54 lines
1.5 KiB
JSON
{
|
|
"name": "@imen/api",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "prisma generate && nest build",
|
|
"dev": "nest start --watch --preserveWatchOutput",
|
|
"start": "node dist/main.js",
|
|
"typecheck": "prisma generate && tsc --noEmit -p tsconfig.json",
|
|
"test": "vitest run --config ./vitest.config.e2e.ts",
|
|
"prisma:generate": "prisma generate",
|
|
"prisma:migrate": "prisma migrate dev",
|
|
"prisma:deploy": "prisma migrate deploy",
|
|
"prisma:studio": "prisma studio",
|
|
"db:seed": "prisma db seed",
|
|
"postinstall": "prisma generate"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.1154.0",
|
|
"@imen/shared": "workspace:*",
|
|
"@nestjs/common": "^12.2.0",
|
|
"@nestjs/core": "^12.2.0",
|
|
"@nestjs/jwt": "^12.0.3",
|
|
"@nestjs/platform-express": "^12.2.0",
|
|
"@nestjs/throttler": "^6.7.1",
|
|
"@node-rs/argon2": "^2.2.2",
|
|
"@prisma/adapter-pg": "7.10.1",
|
|
"@prisma/client": "7.10.1",
|
|
"cookie-parser": "^1.4.7",
|
|
"helmet": "^8.3.0",
|
|
"reflect-metadata": "^0.2.2",
|
|
"rxjs": "^7.8.2",
|
|
"sharp": "^0.35.5",
|
|
"zod": "^4.6.7"
|
|
},
|
|
"devDependencies": {
|
|
"@nestjs/cli": "^12.0.10",
|
|
"@nestjs/schematics": "^12.0.10",
|
|
"@nestjs/testing": "^12.2.0",
|
|
"@types/cookie-parser": "^1.4.9",
|
|
"@types/express": "^5.0.6",
|
|
"@types/multer": "^2.3.0",
|
|
"@types/node": "^24.0.0",
|
|
"@types/supertest": "^7.0.0",
|
|
"prisma": "7.10.1",
|
|
"supertest": "^7.1.4",
|
|
"tsx": "^4.20.6",
|
|
"typescript": "^6.0.2",
|
|
"vite": "^8.0.0",
|
|
"vitest": "^4.1.2"
|
|
}
|
|
}
|