Skip to content

SamXop123/Jobternify

Repository files navigation

Jobternify

Jobternify is a MERN stack app for posting jobs/internships, applying with resumes, and managing applications with role-based access (user/admin). Frontend runs on Vite/React with Tailwind, backend on Express/MongoDB with JWT auth.

Tech Stack

  • Frontend: React (Vite), React Router, Axios, Tailwind CSS
  • Backend: Node.js, Express.js, MongoDB (Mongoose), JWT, Cloudinary for resume uploads
  • Deployment: Frontend on Vercel, Backend on Render

Features

  • JWT authentication with role-based routes (admin/user)
  • Job listings, details, and applications with status workflow
  • Separate dashboards for users and admins
  • Resume upload to Cloudinary (PDF/DOC/DOCX, 5MB limit)
  • Admin analytics: totals, status distribution, applications per job

Getting Started (Local Dev)

Prerequisites

  • Node.js 18+
  • MongoDB URI
  • Cloudinary account (for resume uploads)

Environment

Create a .env in server/:

PORT=5000
MONGO_URI=your_mongo_uri
JWT_SECRET=change-me
CLIENT_ORIGIN=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

For frontend, create /.env (root):

VITE_API_BASE_URL=http://localhost:5000/api

Install & Run

# backend
cd server
npm install
npm run dev

# frontend (new shell)
cd ..
npm install
npm run dev

Frontend runs at http://localhost:5173, backend at http://localhost:5000.

API Overview

  • Auth: POST /api/auth/signup, POST /api/auth/login
  • Jobs: GET /api/jobs, POST /api/jobs (admin), PUT /api/jobs/:id (admin), DELETE /api/jobs/:id (admin)
  • Applications: POST /api/applications, GET /api/applications/me, GET /api/applications (admin), PUT /api/applications/:id/status (admin), POST /api/applications/upload (auth), GET /api/applications/analytics (admin)

Deployment

Backend (Render)

  • Path: server/
  • Build Command: cd server && npm install
  • Start Command: cd server && npm start
  • Env Vars: PORT=10000, MONGO_URI, JWT_SECRET, CLIENT_ORIGIN (Vercel URL), CLOUDINARY_*
  • Optional: use render.yaml in server/ for blueprint deploy.

Frontend (Vercel)

  • Framework: Vite
  • Build Command: npm run build
  • Output Dir: dist
  • Env Vars: VITE_API_BASE_URL=https://<your-render-app>.onrender.com/api
  • Set NODE_VERSION=18 if needed.

Notes

  • Axios uses VITE_API_BASE_URL; defaults to /api for same-origin setups.
  • Resume uploads are limited to 5MB and PDF/DOC/DOCX. Update server/src/middleware/upload.js to change limits.
  • Ensure admin role is assigned in the database for admin access.

Testing

  • Basic manual verification: signup/login, create job (admin), apply (user), view dashboards, update statuses, check analytics.

License

MIT

Releases

No releases published

Packages

No packages published