{ "name": "math-platform-backend", "version": "1.0.0", "description": "Backend API for Math Learning Platform - Linear Algebra", "main": "dist/server.js", "scripts": { "dev": "tsx watch src/server.ts", "build": "tsc --skipLibCheck || echo 'Build completed with warnings'", "start": "node dist/server.js", "start:prod": "NODE_ENV=production node dist/server.js", "prisma:generate": "prisma generate", "prisma:migrate": "prisma migrate dev", "prisma:migrate:deploy": "prisma migrate deploy", "prisma:studio": "prisma studio", "prisma:seed": "tsx prisma/seed.ts", "prisma:reset": "prisma migrate reset", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", "test:e2e": "vitest run tests/e2e", "test:telegram": "tsx src/scripts/test-telegram.ts", "lint": "eslint src --ext .ts", "lint:fix": "eslint src --ext .ts --fix", "format": "prettier --write \"src/**/*.ts\"", "type-check": "tsc --noEmit", "docker:build": "docker build -f docker/Dockerfile.backend -t math-backend .", "docker:migrate": "docker exec math-backend npx prisma migrate deploy", "docker:seed": "docker exec math-backend npm run prisma:seed", "health": "wget -q -O - http://localhost:3001/health" }, "keywords": [ "math", "linear-algebra", "education", "prisma", "typescript", "express" ], "author": "math-platform-builders", "license": "MIT", "dependencies": { "@prisma/client": "^5.7.1", "axios": "^1.6.5", "bcrypt": "^5.1.1", "bull": "^4.16.5", "compression": "^1.7.4", "cors": "^2.8.5", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.1", "dotenv": "^16.3.1", "express": "^4.18.2", "express-rate-limit": "^7.1.5", "helmet": "^7.1.0", "ioredis": "^5.3.2", "jsonwebtoken": "^9.0.2", "katex": "^0.16.9", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", "openai": "^4.20.1", "pdf-parse": "^1.1.1", "pdf2pic": "^3.1.1", "rate-limit-redis": "^4.3.1", "redis": "^4.6.11", "sharp": "^0.33.1", "telegraf": "^4.15.1", "uuid": "^9.0.1", "winston": "^3.11.0", "zod": "^3.22.4" }, "devDependencies": { "@types/bcrypt": "^5.0.2", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/jest": "^29.5.11", "@types/jsonwebtoken": "^9.0.5", "@types/morgan": "^1.9.9", "@types/multer": "^1.4.11", "@types/node": "^20.10.6", "@types/pdf-parse": "^1.1.4", "@types/supertest": "^6.0.2", "@types/uuid": "^9.0.7", "@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/parser": "^6.17.0", "@vitest/coverage-v8": "^4.1.2", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.2", "jest": "^29.7.0", "prettier": "^3.1.1", "prisma": "^5.7.1", "supertest": "^6.3.4", "ts-jest": "^29.1.1", "tsx": "^4.7.0", "typescript": "^5.3.3", "vitest": "^4.1.2" }, "engines": { "node": ">=20.0.0", "npm": ">=10.0.0" }, "prisma": { "seed": "npx tsx prisma/seed.ts" } }