- Login by email; board members are dashboard users (full access) - Forced password change on first login; forgot/reset password via email - Auto-send welcome email with set-password link when board member created - 5 attempts / 5 min rate limit on login endpoint - Board + Minutes tabs: drag-and-drop card reordering, persisted to DB - PATCH /api/board/reorder and /api/minutes/reorder endpoints - New minutes auto-insert at top (order 0) - ImagePicker: inline preview thumbnail before upload (board, gallery, sponsors) - Fix Minutes public sort: proper date parsing instead of broken string compare - Remove server/dist/ from git tracking (.gitignore)
35 lines
788 B
JSON
35 lines
788 B
JSON
{
|
|
"name": "mcdi-website-server",
|
|
"version": "2.0.0",
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=22.0.0"
|
|
},
|
|
"scripts": {
|
|
"start": "node dist/index.js",
|
|
"dev": "tsx watch src/index.ts",
|
|
"build": "tsc",
|
|
"seed": "tsx src/seed.ts"
|
|
},
|
|
"dependencies": {
|
|
"argon2": "^0.43.0",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^16.5.0",
|
|
"express": "^5.1.0",
|
|
"express-rate-limit": "^8.5.2",
|
|
"jose": "^5.10.0",
|
|
"mongoose": "^8.13.0",
|
|
"multer": "^1.4.5-lts.1",
|
|
"nodemailer": "^6.9.16",
|
|
"zod": "^3.24.2"
|
|
},
|
|
"devDependencies": {
|
|
"@types/cors": "^2.8.17",
|
|
"@types/express": "^5.0.1",
|
|
"@types/multer": "^1.4.12",
|
|
"@types/node": "^22.15.0",
|
|
"@types/nodemailer": "^6.4.17",
|
|
"tsx": "^4.19.3",
|
|
"typescript": "^5.8.3"
|
|
}
|
|
}
|