Experience the platform in action - browse jobs, submit proposals, and explore the complete freelancer hiring workflow.
A comprehensive freelancer hiring platform that streamlines the connection between clients and skilled professionals. The system facilitates the complete hiring lifecycle, including detailed job postings, competitive proposal submissions, milestone tracking, and deliverable management.
- User Management: Registration and authentication for Clients and Freelancers
- Job Management: Post, browse, and manage job listings
- Proposal System: Submit proposals and track application status
- Deliverable Management: Submit work and track project progress
- Review System: Rate and review completed projects
- Top Freelancers: Ranking system based on reviews and ratings
- Role-based dashboards (Client vs Freelancer)
- Real-time status updates
- Secure JWT-based authentication
- Transaction-safe operations
- Normalized database design
- RESTful API architecture
- React.js - Component-based UI framework
- Material UI (MUI) - Styling and responsive design
- Axios - HTTP client for API calls
- React Router DOM - Navigation and routing
- JWT handling - Client-side authentication
- Spring Boot - RESTful API framework
- Spring MVC - Controller-Service-Repository pattern
- Spring Data JPA - Database interactions
- Hibernate ORM - JPA implementation
- Spring Security - Authentication and authorization
- JWT - Token-based authentication
- ModelMapper - DTO conversions
- Lombok - Boilerplate code reduction
- MySQL - Relational database management
- Stored Procedures - Custom business logic
- Normalized Schema - Up to 3NF for data integrity
The system follows a layered architecture pattern:
Frontend (React.js) ↔ REST APIs ↔ Backend (Spring Boot) ↔ Database (MySQL)
- Users: Client and Freelancer profiles
- Jobs: Job postings with requirements
- Proposals: Applications submitted by freelancers
- Deliverables: Work submissions and tracking
- Reviews: Feedback and rating system
- One client can post many jobs (1:N)
- Many freelancers can apply to many jobs (M:N through Proposals)
- One accepted proposal leads to many deliverables (1:N)
- Comprehensive review system linking users and completed projects
freelancer-deployment/
├── freelancer-backend/ # Spring Boot backend
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ └── resources/
│ │ └── test/
│ ├── target/
│ ├── pom.xml
│ └── ...
├── freelancer-frontend/ # React.js frontend
│ ├── src/
│ ├── public/
│ ├── build/
│ ├── node_modules/
│ ├── package.json
│ ├── package-lock.json
│ └── ...
├── UI.png # Platform UI screenshot
└── README.md
- Java 17 or higher
- Node.js 16 or higher
- MySQL 8.0 or higher
- Maven 3.6 or higher
- JWT Authentication: Stateless token-based authentication
- Role-based Authorization: Separate access for Clients and Freelancers
- Password Encryption: BCrypt hashing for secure password storage
- Input Validation: Comprehensive validation using Bean Validation
- CORS Configuration: Secure cross-origin resource sharing
The database is normalized to Third Normal Form (3NF) ensuring:
- Elimination of data redundancy
- Maintenance of referential integrity
- Support for complex queries and joins
- Transaction-safe operations
- Users (id, name, email, role, password, rating)
- Jobs (id, title, description, budget, status, client_id)
- Proposals (id, job_id, freelancer_id, proposal_text, status)
- Deliverables (id, proposal_id, file_path, submission_date, status)
- Reviews (id, job_id, client_id, freelancer_id, rating, comment)
The system has been thoroughly tested for:
- CRUD operations across all entities
- Relational constraint enforcement
- Transaction safety
- Authentication and authorization
- API endpoint functionality
Note: This project demonstrates the practical application of database management concepts including ER modeling, normalization, joins, constraints, and transaction handling in a real-world full-stack application.
