A production-ready MERN stack web app that converts isolated achievements into a connected professional story.
Team of 4 participated in interpretX coding challenge. Members - Suriyan Loganathan 24BRS1009, Arjun 24BRS1232, Sairam 24BRS1347, Arunadithya Raguraman 24BRS1309
- Secure auth (signup, login, JWT, protected routes, persistent login)
- Achievement CRUD with user isolation
- Connection CRUD with relation types and story text
- Gallery view with search, filter, sort
- React Flow graph view of connected growth
- Chronological timeline view
- Narrative generation endpoint (
POST /api/narrative/generate) - Responsive dashboard UI with loading and empty states
- Frontend: React (Vite), Tailwind CSS, React Router, Axios, Framer Motion, React Flow
- Backend: Node.js, Express.js, MongoDB Atlas, Mongoose, JWT, bcryptjs
backend/- Express API, Mongo models, routes, controllers, auth middlewarefrontend/- React application, context-based auth, dashboard views
- Open terminal in
backend/ - Install dependencies:
npm install
- Copy env template:
cp .env.example .env(or create.envmanually on Windows)
- Set
.envvalues:MONGO_URI=<your_mongodb_atlas_uri>JWT_SECRET=<strong_secret>PORT=5000CLIENT_URL=http://localhost:5173
- Run backend:
npm run dev
- Open terminal in
frontend/ - Install dependencies:
npm install
- Copy env template:
cp .env.example .env(or create.envmanually on Windows)
- Set
.env:VITE_API_URL=http://localhost:5000
- Run frontend:
npm run dev
POST /api/auth/registerPOST /api/auth/loginGET /api/auth/me
POST /api/achievementsGET /api/achievementsPUT /api/achievements/:idDELETE /api/achievements/:id
POST /api/connectionsGET /api/connectionsDELETE /api/connections/:id
POST /api/narrative/generate
GET /api/public/achievementsGET /api/public/connectionsPOST /api/public/narrative/generateGET /api/public/profile/:usernameGET /api/public/profile/:username/achievementsGET /api/public/profile/:username/connectionsPOST /api/public/profile/:username/narrative/generate
Guests can access /u/:username for a single user's read-only profile (graph/timeline/gallery). Login is required for add/edit/delete actions.
- Root directory:
backend - Build command:
npm install - Start command:
npm start - Environment variables:
MONGO_URI,JWT_SECRET,PORT,CLIENT_URL
- Root directory:
frontend - Build command:
npm run build - Output directory:
dist - Environment variable:
VITE_API_URL=<render_backend_url>
Signup -> Login -> Add achievements -> Connect achievements -> View Gallery -> View Timeline -> View Graph -> Read Narrative Story