A full-stack freelance marketplace built as a senior capstone project to connect clients and freelancers through project posting, bidding, milestone tracking, and reviews.
The application was developed collaboratively using an Agile workflow with Git/GitHub, pull requests, testing, and continuous integration.
- 🔐 User registration and login
- 👥 Role-based access for Clients, Freelancers, and Admins
- 📋 Project creation and project browsing
- 💰 Freelancer bidding system
- ✅ Bid acceptance and rejection
- 🎯 Milestone tracking
- ⭐ Reviews and feedback
- 🛡️ Protected routes and JWT-based authentication
- 🗄️ PostgreSQL database integration
- 🚀 CI workflow with GitHub Actions
- React
- Vite
- React Router
- Axios
- JavaScript
- CSS
- Node.js
- Express.js
- Prisma ORM
- JWT
- bcryptjs
- PostgreSQL
- AWS RDS
- Git
- GitHub
- GitHub Actions
- Docker
- Agile development
- Pull requests
- Code reviews
┌───────────────────────────────┐
│ User │
│ Web Browser │
└──────────────┬────────────────┘
│
▼
┌───────────────────────────────┐
│ React Frontend │
│ Vite / React Router │
└──────────────┬────────────────┘
│
REST API
│
▼
┌───────────────────────────────┐
│ Node.js / Express API │
│ JWT Auth • Role Protection │
└──────────────┬────────────────┘
│
Prisma ORM
│
▼
┌───────────────────────────────┐
│ PostgreSQL │
│ AWS RDS │
└───────────────────────────────┘
Clients can:
- Create projects
- Define budgets and project details
- Review freelancer bids
- Manage project milestones
- Leave reviews
Freelancers can:
- Browse available projects
- Submit bids
- Track accepted work
- Participate in milestone workflows
Administrators support platform oversight and role-based access.
The application uses Prisma with PostgreSQL.
Core models include:
UserProjectBidMilestoneReview
OPENIN_PROGRESSCOMPLETEDCANCELLED
PENDINGACCEPTEDREJECTED
TODOIN_PROGRESSSUBMITTEDAPPROVED
FreelanceHub uses JWT-based authentication.
Authenticated API requests use a Bearer token:
Authorization: Bearer <token>
Protected backend routes validate the user's identity and role before allowing access to restricted functionality.
Passwords are hashed using bcryptjs.
Representative API routes include:
POST /api/auth/register
POST /api/auth/login
GET /api/projects
GET /api/projects/:id
POST /api/projects
POST /api/projects/:id/bids
POST /api/projects/:id/milestones
POST /api/projects/:id/reviews
FreelanceHub/
│
├── backend/
│ ├── controllers/
│ ├── middleware/
│ ├── routes/
│ ├── prisma/
│ └── server files
│
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ └── context/
│ └── Vite configuration
│
├── .github/
│ └── workflows/
│ └── ci.yml
│
└── README.md
The application includes pages for:
- Login
- Registration
- Dashboard
- Projects
- Project Details
- New Project
- Task Board
- Workspaces
Protected routes are used to restrict authenticated areas of the application.
The project was configured to use Amazon RDS for PostgreSQL.
Prisma manages the database schema and application data access.
This provided practical experience with:
- Cloud database connectivity
- Environment variables
- Database migrations
- Security group configuration
- Troubleshooting database connection issues
GitHub Actions is used for CI checks.
The workflow supports automated validation of project changes and reinforces collaborative development practices.
FreelanceHub demonstrates hands-on experience with:
- Full-stack application development
- REST API design
- Authentication and authorization
- Role-based access control
- Relational database design
- PostgreSQL and Prisma ORM
- AWS RDS
- React frontend development
- Express.js backend development
- Git/GitHub collaboration
- CI/CD concepts
- Agile team development
- Debugging and integration troubleshooting
cd backend
npm install
npm run devcd frontend
npm install
npm run devCreate the required environment variables before starting the application.
Example backend variables:
DATABASE_URL=your_postgresql_connection_string
JWT_SECRET=your_jwt_secret
PORT=5001
CLIENT_URL=http://localhost:5173Never commit real credentials or production connection strings.
Potential future enhancements include:
- Real-time messaging
- File uploads
- Notifications
- Expanded administrative controls
- Improved testing coverage
- Production deployment improvements
Bedolf Tambe
Cloud • DevOps • Networking • Systems Administration • Software Engineering