you can access the app here: https://vari-client.onrender.com/
Vari is a career exploration web app. It helps users explore:
- tech industries
- role paths
- learning steps
- job demand signals
- salary snapshots
The app has two parts:
client/(React + Vite frontend)server/(Express + MongoDB backend)
- Frontend: React, TypeScript, Vite, Tailwind CSS, Zustand
- Backend: Node.js, Express, TypeScript, Mongoose
- Database: MongoDB
- Auth: JWT
client/frontend appserver/backend API and data seedingREADME.mdthis file (whole project)client/README.mdfrontend-only guide
Install:
- Node.js 20+
- npm
- MongoDB (Atlas or local)
- Install dependencies
cd server
npm install
cd ../client
npm install- Create env files
server/.env
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_long_random_secret
PORT=5000
CLIENT_URL=http://localhost:5173client/.env
VITE_API_URL=http://localhost:5000- Seed the database (one-time or whenever you want to reset sample data)
cd server
npm run seed- Start backend (terminal 1)
cd server
npm run dev- Start frontend (terminal 2)
cd client
npm run dev- Open the app
http://localhost:5173
- Interactive map of industries, districts, and roles
- Inspector panel with learning path and resources
- Jobs panel with live-ish demand numbers
- Salary panel with SCB-based data when available
- Search for industries and roles
- Account login/register
- Save pins (role, industry, learning-step) in "My Pins"
GET /api/mapindustries + roles for map renderingGET /api/roles/:slugrole detailsGET /api/search?q=...search endpointGET /api/salaries/:slugsalary data for roleGET /api/jobs/:roleSlugjob count dataPOST /api/auth/registercreate accountPOST /api/auth/loginsign inGET /api/mecurrent userGET /api/me/pinsget saved pinsPOST /api/me/pinscreate pinPATCH /api/me/pins/:idupdate notesDELETE /api/me/pins/:iddelete pin
Server (server/package.json):
npm run devstart backend with auto-reloadnpm run buildcompile TypeScriptnpm run startrun compiled backend fromdistnpm run seedseed industries and roles
Client (client/package.json):
npm run devstart Vite dev servernpm run buildtype-check and build production filesnpm run previewpreview production build locallynpm run lintrun ESLint
- Map is empty: run
npm run seedinserver/, then refresh the browser. - Frontend cannot call backend: check
client/.envhasVITE_API_URL=http://localhost:5000. - CORS error: make sure
CLIENT_URLinserver/.envmatches your frontend URL. - Auth fails unexpectedly: check
JWT_SECRETinserver/.env, then restart the backend.
- Do not commit real secrets to git.
- If a
.envwith real credentials was committed before, rotate those secrets.