A full-stack portfolio built with the MERN stack (MongoDB, Express, React, Node.js) plus Three.js for the animated 3D hero. All content is pulled from Vikash Kushwaha's resume.
portfolio/
├── client/ React + Vite + Tailwind + Three.js (react-three-fiber) frontend
└── server/ Express + Mongoose backend (handles the contact form)
- Palette: near-black graphite/navy (
#080B12) with a cyan/teal accent (#2FE6C6) and a warm amber highlight (#F5B84F) — a "data" palette (signal against dark background). - Typography: Space Grotesk (display) + Inter (body) + JetBrains Mono (labels/eyebrows).
- Signature element: an animated 3D "data constellation" in the hero — a rotating sphere of connected nodes, representing turning scattered data into structure (react-three-fiber + three.js).
- Sections: Hero → About → Experience → Skills → Projects → Education/Certifications → Contact.
cd server
cp .env.example .env # edit MONGO_URI if using a remote MongoDB (e.g. MongoDB Atlas)
npm install
npm run dev # starts on http://localhost:5000The server starts even without MongoDB running, but the contact form's "save to DB" step needs a real MongoDB connection (local mongod or a free MongoDB Atlas cluster).
cd client
cp .env.example .env # points VITE_API_URL at your backend
npm install
npm run dev # starts on http://localhost:5173Open http://localhost:5173 in your browser.
- Frontend: build with
npm run buildinclient/, then deploy thedist/folder to Vercel, Netlify, or GitHub Pages. - Backend: deploy
server/to Render, Railway, or a VPS. SetMONGO_URIto a MongoDB Atlas connection string andCLIENT_ORIGINto your deployed frontend URL. - Update
VITE_API_URLin the client's.envto your deployed backend URL before building.
- Swap in a real headshot/illustration if you want an image in the hero.
- Add real screenshots or live links to the
projectsarray inclient/src/data/profile.js. - Connect a real email service (e.g. Nodemailer + Gmail/SendGrid) in
server/src/controllers/contactController.jsif you want email notifications in addition to database storage.