A simple job board application (backend + frontend) to post, edit and manage job listings.
GOODWORK is a full-stack job board application with a Node.js/Express backend and a React + Vite frontend. It provides user authentication and CRUD operations for job postings. The repository contains two main folders:
BACKEND/- Express API, controllers, models, and middleware.FRONTEND/- React (Vite) single-page application.
- User registration and login (JWT-based authentication).
- Create, read, update, and delete job postings.
- Protected routes for job management.
- Separation of concerns: controllers, routes, models, and middleware.
- Backend: Node.js, Express, Mongoose (MongoDB), JWT
- Frontend: React, Vite, Axios (for API calls)
- Dev tools: nodemon (backend dev), Vite dev server (frontend)
BACKEND/src/- source filesapp.js,server.js- app/server entry pointsconfig/db.js- database connectioncontrollers/-authController.js,jobController.jsmiddlewares/-authMiddleware.jsmodels/-User.js,Job.jsroutes/-authRoutes.jsroutes/-jobRoutes.js
FRONTEND/src/- React appApp.jsx,main.jsxpages/-Home.jsx,Login.jsx,Register.jsx,PostJob.jsx,EditJob.jsxcomponents/-Navbar.jsx,JobCard.jsxapi/-jobs.js(API helpers)
Do not commit real secrets. Use local .env files and commit only .env.example.
-
Backend (
BACKEND/.env)MONGO_URI- MongoDB connection stringJWT_SECRET- secret for signing JWTsPORT- backend server port (optional)
-
Frontend (
FRONTEND/.env)VITE_API_URL- base URL for the backend API (e.g.,http://localhost:5000/api)
- Backend
cd c:\Users\Administrator\Documents\Boomerange\GOODWORK\BACKEND
npm install
# For development (if the project has nodemon):
npm run dev
# Or start directly:
node src/server.js- Frontend
cd c:\Users\Administrator\Documents\Boomerange\GOODWORK\FRONTEND
npm install
npm run devOpen the frontend dev server URL (usually http://localhost:5173 or shown by Vite) and ensure the VITE_API_URL points to the backend API.
These are typical endpoints based on project routes - confirm exact paths in BACKEND/src/routes/:
- Auth
POST /api/auth/register- create a new userPOST /api/auth/login- authenticate and receive a JWT
- Jobs
GET /api/jobs- list jobsPOST /api/jobs- create a job (protected)GET /api/jobs/:id- get job detailsPUT /api/jobs/:id- update a job (protected)DELETE /api/jobs/:id- delete a job (protected)
Use an Authorization: Bearer <token> header for protected routes.
DOCS/PURPOSE.md- project purpose, goals, target audience, and roadmap.- Full project documentation (HackMD): https://hackmd.io/@I5OyzHQDSGWGWqeLjg1tSg/S1dUmq2eZe