GigFlow is a mini freelance marketplace platform where users can post jobs (gigs), bid on jobs, and hire freelancers.
- Secure user registration and login
- JWT-based authentication using Authorization headers
- Protected routes for authenticated users
- Token stored securely in browser localStorage
- Create gigs with title, description, and budget
- Browse all open gigs
- Automatic gig status update after hiring
- Freelancers can submit bids with message and price
- Gig owners can view all bids
- Only the gig owner can hire a freelancer
- Only one freelancer can be hired per gig
- Selected bid is marked as
hired - All other bids are automatically marked as
rejected - Implemented using MongoDB Transactions to prevent race conditions
- React.js (Vite)
- Tailwind CSS
- Axios
- React Router
- Node.js
- Express.js
- MongoDB with Mongoose
- JWT Authentication (Authorization Header)
- Socket.IO
GigFlow
├── backend
│ ├── controllers
│ ├── models
│ ├── routes
│ ├── middleware
│ ├── server.js
│ └── .env.example
│
├── frontend
│ ├── src
│ │ ├── pages
│ │ ├── components
│ │ ├── context
│ │ ├── services
│ │ └── App.jsx
│ └── .env
│
└── README.md
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_key
VITE_API_URL=https://gigflow-backend-0wih.onrender.com/api
⚠️ Frontend.envfiles are not committed to GitHub.
Environment variables are configured directly in the deployment platform.
git clone https://github.com/smttomar/gigflow.git
cd gigflow
cd backend
npm install
npm run dev
Backend runs on:
http://localhost:5000
cd frontend
npm install
npm run dev
Frontend runs on:
http://localhost:5173
- Register two users (Client and Freelancer)
- Login as Client → Create a gig
- Login as Freelancer → Submit a bid
- Login as Client → View bids → Hire freelancer
- Gig status updates automatically
- JWT-based authentication without cookies
- Secure route protection using middleware
- MongoDB schema relationships
- Transaction-safe business logic
- Clean frontend-backend separation
- Production-ready deployment practice
Chandra Pratap Singh
This project follows modern full stack development best practices and demonstrates real-world implementation of authentication, authorization, database transactions, and scalable REST API design.