TakeUForward is an exclusive, full-stack campus platform designed for SSN college students and alumni. It offers mentorship coordination, academic resource sharing, anonymous placement reviews, peer-to-peer lost-and-found registry, a campus marketplace, and secure messaging tools.
- Frontend: React 18 SPA, Vite, TailwindCSS (for utility structures), React Router.
- Backend: Node.js, Express, Passport.js (Google OAuth 2.0).
- Database: MongoDB Atlas via Mongoose.
- File Storage: AWS S3 (handling private and public media via secure presigned URLs).
- Messaging/Notifications: Web Push (VAPID) and SendGrid API.
- AI: Gemini API for academic resource parsing.
├── client/ # React SPA (Vite + lazy routes)
│ ├── src/
│ │ ├── api/ # API clients & Axios config
│ │ ├── components/ # Reusable components & ErrorBoundary
│ │ ├── context/ # Context states (Auth, UI)
│ │ ├── pages/ # Lazy-loaded page components
│ │ └── App.jsx # App routing and layout configuration
├── server/ # Express backend (ES Modules)
│ ├── config/ # DB, mailer, S3 client, environment config
│ ├── middleware/ # Auth, CSRF, CORS, Rate Limiters
│ ├── models/ # Mongoose schemas
│ ├── routes/ # Controller logic & routes
│ └── tests/ # Jest test suites
├── docs/ # System design, Master Plan, and Deployment logs
└── E2E/ # Playwright end-to-end integration tests
- Node.js: version
20.xor higher - MongoDB: version
6.xor higher running locally (or MongoDB Atlas connection) - AWS Account: S3 bucket configured for uploads (optional in local development)
- Google Developer Console: OAuth client credentials configured
git clone https://github.com/Tushyent/TakeUForward.git
cd TakeUForwardCopy .env.example in the server directory and populate your local variables:
cp server/.env.example server/.envEnsure the following minimal settings are configured locally:
SESSION_SECRET: A secure random key.MONGODB_URI: E.g.mongodb://localhost:27017/takeuforward_devGOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET: Your Google credentials.
Run npm install in both workspaces:
# Root packages
npm install
# Client packages
cd client && npm install
# Server packages
cd ../server && npm installTo populate local communities and default administration structures:
cd ../server
npm run seed:communities
npm run seed:adminFrom the root workspace directory, run:
npm run devThis spawns the frontend Vite server at http://localhost:5173 and backend API at http://localhost:5000.
cd server
npm run devcd client
npm run devBackend unit and integration tests are powered by Jest:
cd server
npm testWe enforce zero errors across all workspaces prior to pushes:
# Server (ESLint)
cd server
npm run lint
# Client (Oxlint / ESLint)
cd client
npm run lintTo bundle assets for production deployment:
cd client
npm run build- Strict Input Validation: Size limits on request payloads (100kb JSON body limits) and field-level length limits on posts, comments, messaging, and ticket descriptions.
- ReDoS / Backtracking Safety: User input queries passed to MongoDB
$regexfilters are parsed and sanitized of pattern matching operators. - Sensitive Field Sanitization: Internal fields (e.g.
googleId, push subscription credentials) are whitelisted out of outgoing client session updates. - Alumni Suspension & Gate: Accounts flagged as suspended (
isApproved === false) or pending alumni validation (isVerifiedAlumni === false) are secure-gated middleware-side from interacting with general API paths. - SSRF Protections: Gemini parse URLs are validated to prevent connections to loopback/private subnets and cloud metadata IPs.
- OAuth login callback fails to save cookie: Ensure Chrome/Firefox is not blocking third-party cookies locally. In production, ensure backend
trust proxyconfiguration matches your hosting layout. - SendGrid email failures: Ensure
SENDGRID_API_KEYis active and verify domain identity verification in SendGrid console.
- Ensure
npm run lintpasses in both package folders. - Ensure
npm testruns with 100% success. - Commit messages must match Conventional Commit structures (
feat(auth): ...orfix(s3): ...).