80 lines
2.5 KiB
JSON
80 lines
2.5 KiB
JSON
{
|
|
"name": "schoolchainmanager",
|
|
"description": "School Chain Manager - template backend",
|
|
"type": "module",
|
|
"scripts": {
|
|
"start": "npm run db:migrate && npm run db:seed && npm run watch",
|
|
"start:prod": "node --enable-source-maps dist/index.js",
|
|
"start:production": "npm run db:migrate:prod && npm run db:seed:prod && npm run start:prod",
|
|
"db:migrate:prod": "node dist/db/umzug.js migrate:up",
|
|
"db:seed:prod": "node dist/db/umzug.js seed:up",
|
|
"lint": "eslint .",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "tsx --test 'src/**/*.test.ts'",
|
|
"verify": "npm run typecheck && npm run lint && npm test",
|
|
"build": "tsc -p tsconfig.build.json && tsc-alias -f && node scripts/copy-assets.mjs",
|
|
"dev": "tsx watch src/index.ts",
|
|
"db:migrate": "tsx src/db/umzug.ts migrate:up",
|
|
"db:migrate:undo": "tsx src/db/umzug.ts migrate:down",
|
|
"db:migrate:pending": "tsx src/db/umzug.ts migrate:pending",
|
|
"db:seed": "tsx src/db/umzug.ts seed:up",
|
|
"db:seed:undo": "tsx src/db/umzug.ts seed:down",
|
|
"db:reset": "tsx src/db/reset.ts",
|
|
"watch": "tsx watcher.ts"
|
|
},
|
|
"dependencies": {
|
|
"@google-cloud/storage": "^7.19.0",
|
|
"bcrypt": "6.0.0",
|
|
"chokidar": "^5.0.0",
|
|
"cors": "2.8.6",
|
|
"csv-parser": "^3.2.1",
|
|
"express": "5.2.1",
|
|
"helmet": "8.2.0",
|
|
"json-2-csv": "^5.5.11",
|
|
"jsonwebtoken": "9.0.3",
|
|
"moment": "2.30.1",
|
|
"multer": "^2.1.1",
|
|
"nodemailer": "8.0.10",
|
|
"passport": "^0.7.0",
|
|
"passport-google-oauth2": "^0.2.0",
|
|
"passport-jwt": "^4.0.1",
|
|
"passport-microsoft": "^2.1.0",
|
|
"pg": "8.21.0",
|
|
"pg-hstore": "2.3.4",
|
|
"sequelize": "6.37.8",
|
|
"swagger-jsdoc": "^6.3.0",
|
|
"swagger-ui-express": "^5.0.1",
|
|
"umzug": "^3.8.3",
|
|
"uuid": "^14.0.0",
|
|
"validator": "^13.15.35"
|
|
},
|
|
"engines": {
|
|
"node": ">=24"
|
|
},
|
|
"private": true,
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@types/bcrypt": "^6.0.0",
|
|
"@types/cors": "^2.8.19",
|
|
"@types/express": "^5.0.6",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/multer": "^2.1.0",
|
|
"@types/node": "^25.9.2",
|
|
"@types/nodemailer": "^8.0.0",
|
|
"@types/passport": "^1.0.17",
|
|
"@types/passport-jwt": "^4.0.1",
|
|
"@types/swagger-jsdoc": "^6.0.4",
|
|
"@types/swagger-ui-express": "^4.1.8",
|
|
"@types/validator": "^13.15.10",
|
|
"cross-env": "10.1.0",
|
|
"eslint": "^10.4.1",
|
|
"eslint-plugin-import-x": "^4.16.2",
|
|
"jiti": "^2.7.0",
|
|
"nodemon": "3.1.14",
|
|
"tsc-alias": "^1.8.17",
|
|
"tsx": "^4.22.4",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.61.0"
|
|
}
|
|
}
|