{ "name": "royal-enfield-onboarding-backend", "version": "1.0.0", "description": "Backend API for Royal Enfield Dealership Onboarding System", "type": "module", "main": "server.js", "scripts": { "start": "node dist/src/server.js", "dev": "tsx watch src/server.ts", "build": "tsc", "type-check": "tsc --noEmit", "migrate": "tsx scripts/migrate.ts", "reset:stable": "tsx scripts/reset_db_stable.ts", "seed": "tsx scripts/seed_normalized_data.ts", "seed:approval-policies": "tsx scripts/seed-approval-policies.ts", "seed:all": "npm run seed && npm run seed:approval-policies && npm run seed:questionnaire", "setup:fresh": "npm run migrate && npm run seed:all", "seed:real-geo": "tsx scripts/seed_real_locations.ts", "seed:questionnaire": "tsx src/scripts/seedQuestionnaire.ts", "test": "jest", "test:coverage": "jest --coverage", "clear-logs": "rm -rf logs/*.log" }, "keywords": [ "royal-enfield", "dealership", "onboarding", "api" ], "author": "Royal Enfield", "license": "PROPRIETARY", "dependencies": { "bcryptjs": "^3.0.3", "compression": "^1.8.1", "cors": "^2.8.5", "dotenv": "^17.2.3", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "express-validator": "^7.3.1", "handlebars": "^4.7.8", "helmet": "^8.1.0", "jsonwebtoken": "^9.0.3", "multer": "^2.0.2", "nodemailer": "^7.0.12", "pg": "^8.18.0", "pg-hstore": "^2.3.4", "sequelize": "^6.37.7", "socket.io": "^4.8.3", "uuid": "^13.0.0", "web-push": "^3.6.7", "winston": "^3.19.0" }, "devDependencies": { "@types/bcryptjs": "^2.4.6", "@types/compression": "^1.8.1", "@types/cors": "^2.8.19", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", "@types/jsonwebtoken": "^9.0.10", "@types/multer": "^2.0.0", "@types/node": "^25.0.9", "@types/nodemailer": "^7.0.5", "@types/pg": "^8.16.0", "@types/supertest": "^6.0.3", "@types/uuid": "^10.0.0", "@types/validator": "^13.15.10", "@types/web-push": "^3.6.4", "jest": "^30.2.0", "nodemon": "^3.0.2", "supertest": "^7.2.2", "ts-node": "^10.9.2", "tsx": "^4.21.0", "typescript": "^5.9.3" }, "engines": { "node": ">=18.0.0", "npm": ">=9.0.0" } }