A full-stack website and admin panel for managing Trikaay content, volunteers, comments, documents, and site settings.
- Frontend: React + Vite + Tailwind CSS
- Backend: Node.js + Express + MongoDB (Mongoose)
- Integrations: Google Sheets API, Nodemailer, PDFKit
- Auth/Security: JWT, bcrypt password hashing, encrypted site contact fields
- Frontend:
Frontend/ - Backend:
backend/
- Public website pages with dynamic content
- Admin dashboard for:
- Projects management
- Contact and social links management
- Volunteer approvals
- Comments approvals
- Document upload and management
- Saved records viewing
- Media upload/delete APIs
- Certificate generation flow for approved volunteers
- Google Sheets data sync for volunteers, contacts, comments, and subscribers
- Automatic and manual dashboard refresh behavior
- Admin passwords are stored as bcrypt hashes
- JWT access/refresh token based authentication
- Sensitive site settings are encrypted at rest:
contactPhonecontactEmailcontactAddresscontactAddressSwapnalayacontactAddressSwayamsiddha
- Node.js 18+
- npm
- MongoDB connection URI
- Google service account credentials for Sheets integration (if enabled)
Use backend/.env.example as reference and set at least:
MONGO_URIJWT_SECRET(recommended 64+ chars)JWT_REFRESH_SECRET(recommended 64+ chars)ENCRYPTION_KEY(exactly 32 characters)
cd backend
npm installcd Frontend
npm installcd backend
npm run devcd Frontend
npm run devFrontend will run on Vite default port and call backend APIs configured in frontend API utility.
cd Frontend
npm run buildA special developer script is included to inspect MongoDB quickly.
File:
backend/scripts/mongoDevReport.js
What it prints:
- Database stats (collections, objects, sizes)
- Per-collection counts and storage summary
- Media assets breakdown by kind/category
- Project preview (first 10 records)
Run it from backend:
cd "backend/scripts"
npm run mongo:reportAlias command also available:
npm run mongoDevReport.jsFrom backend/:
npm run dev- start backend with nodemonnpm run start- start backend with nodenpm run seed- seed admin/test datanpm run mongo:report- run Mongo developer report
- Never commit real secrets in
.env - Ensure production secrets are strong and rotated
- Keep
ENCRYPTION_KEYconsistent across restarts to decrypt existing encrypted settings
This project currently uses the license defined in package metadata.