A high-performance, full-stack freelancing platform tailored for the Indian gig economy. Connecting skilled freelancers with clients, featuring AI-driven job recommendation scoring, team collaboration, direct messaging with media sharing, and structured project milestone delivery.
- Dual Role Accounts: Seamless client and freelancer profiles with dedicated dashboards.
-
Credibility Scoring: Dynamic freelancer credibility algorithm (
$0-100$ scale) calculated based on reviews, project completions, and rating history. - Rich Portfolios: Display projects with live links, image galleries, and skill tags.
- Categorized Search & Discovery: Filter projects by categories, skill requirements, and budget ranges.
- PostgreSQL Full-Text Search: Optimized GinIndex search indexing for fast query matching on job descriptions and titles.
- Job Attachments: Support for PDF spec sheets, images, and document uploads.
- Intelligent Job Matching: Custom recommendation engine (
/api/recommendations/jobs/) matching freelancers to top jobs based on skill alignment, hourly rates, and credibility scores.
- Custom Proposals: Freelancers can submit cover letters, custom budget bids, and delivery timelines.
- Proposal Lifecycle Management: Real-time status transitions (
Pending,Accepted,Rejected).
- Job Teams: Form collaborative teams/agencies for multi-freelancer projects and enterprise task delegation.
- In-App Messaging: Real-time communication channels between clients and freelancers for ongoing conversations.
- File Sharing: Attachment upload capabilities built directly into message threads.
- Deliverable Submissions: Dedicated submission portal supporting project files, links, and detailed completion notes.
- Client Reviews & Ratings: Post-project rating system updating freelancer credibility scores.
- Direct Tipping: Clients can send financial bonuses/tips directly to freelancers upon project delivery.
- Framework: Next.js 16 (App Router) & React 19
- Language: TypeScript
- Styling: Tailwind CSS v4, PostCSS, Cormorant Garamond & Poppins fonts
- Animations: Framer Motion & AOS (Animate On Scroll)
- State & Auth: NextAuth, React Context API
- Icons & UI: Lucide React & React Icons
- Database Client: Prisma ORM
- Framework: Django REST Framework (DRF)
- Language: Python 3.10+
- Database: PostgreSQL (with
SearchVectorField&GinIndex) - Authentication: Token-Based Authentication & Django Auth
- Media Storage: Cloudinary / Django File Storage
india-freelance/
โโโ backend/ # Django REST API Backend
โ โโโ api/ # Core Django application app
โ โ โโโ models.py # Database Schemas (Jobs, Proposals, Chat, Submissions)
โ โ โโโ views.py # API ViewSets & AI recommendation logic
โ โ โโโ serializers.py # DRF Serializers
โ โ โโโ urls.py # REST API endpoints & routing
โ โ โโโ permissions.py # Role-based access control
โ โโโ backend_project/ # Django settings and WSGI/ASGI configuration
โ โโโ manage.py # Django CLI utility
โ
โโโ frontend/ # Next.js 16 Frontend
โ โโโ app/ # Next.js App Router (Pages, Layouts, API Routes)
โ โโโ components/ # Reusable UI Components (Navbar, Cards, Modals)
โ โโโ lib/ # Auth Context, Utilities & API Services
โ โโโ prisma/ # Prisma Database Schema & Migrations
โ โโโ public/ # Static assets & public media
โ โโโ tailwind.config.js # Design System Tokens
โโโ README.md # Project Documentation
| Model | Description | Key Relationships |
|---|---|---|
User / UserProfile
|
Core authentication & client/freelancer role flags | One-to-One with Django User |
FreelancerProfile |
Bio, hourly rate, skills, and credibility score ( |
One-to-One with User |
Job |
Project postings with budget, search vector index, and status | ForeignKey to Client User, Many-to-Many Skills |
Proposal |
Freelancer bids with cover letter and bid amount | ForeignKey to Job & Freelancer User |
JobTeam |
Collaboration group assigned to multi-freelancer projects | ForeignKey to Job, Many-to-Many Freelancers |
Conversation / Message
|
Direct chat messaging thread and attachment files | Many-to-Many Users, ForeignKey to Sender |
WorkSubmission |
Project work delivery submission with files and URLs | ForeignKey to Job & Freelancer |
Review |
Client ratings and written feedback | ForeignKey to Job, Client & Freelancer |
Tip |
Optional monetary bonus given to freelancers | ForeignKey to Job, Client & Freelancer |
POST /api/register/- Register new Client or Freelancer userPOST /api/login_user/- Authenticate user & obtain API tokensGET /api/profile/- Fetch current user's profile details
GET /api/jobs/- List all open job opportunitiesPOST /api/jobs/- Create a new job listing (Client)GET /api/recommendations/jobs/- Get AI recommended jobs for current freelancer
GET/POST /api/proposals/- Manage job proposals & bid submissionsGET/POST /api/team/- Manage project team members and agency structures
GET/POST /api/conversations/- List or start user chat conversationsGET/POST /api/messages/- Send and view messages with file attachmentsPOST /api/submissions/- Submit completed project workPOST /api/reviews/- Submit client rating and feedbackPOST /api/tips/- Send direct tip to freelancer
- Node.js: v18.0.0 or higher
- Python: 3.10 or higher
- PostgreSQL: Local or hosted database instance
# Navigate to backend directory
cd backend
# Create a virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install required dependencies
pip install django djangorestframework django-cors-headers psycopg2-binary pillow cloudinary
# Apply database migrations
python manage.py migrate
# Start the Django development server
python manage.py runserver# Navigate to frontend directory
cd frontend
# Install Node dependencies
npm install
# Setup environment variables (.env.local)
# Add backend API URL and NextAuth secrets
# Run Next.js development server
npm run devOpen http://localhost:3000 in your browser to view the application.
SECRET_KEY=your_django_secret_key
DEBUG=True
DATABASE_URL=postgres://user:password@localhost:5432/india_freelance_db
CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_nameNEXT_PUBLIC_API_URL=http://localhost:8000/api
NEXTAUTH_SECRET=your_nextauth_secret_key
NEXTAUTH_URL=http://localhost:3000Contributions are welcome! Follow these steps to contribute:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git checkout -b feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more details.