A modern service marketplace connecting customers with skilled service providers across home services, technical support, tutoring, and more.
The Freelance Platform is a comprehensive service marketplace that bridges the gap between customers seeking services and skilled providers. Built with modern web technologies, it offers a seamless experience for service discovery, booking, and management.
- Role-based Architecture: Separate interfaces for customers, providers, and administrators
- Secure Transactions: End-to-end secure booking and payment processing
- Quality Assurance: Verified reviews and ratings system
- Scalable Design: Built with microservices architecture for future growth
- π Service Discovery: Browse services by category with advanced filtering
- π Custom Requests: Submit detailed service requirements
- π° Quote Comparison: Receive and compare multiple provider quotes
- π Easy Booking: Secure booking system with calendar integration
- β Review System: Leave reviews for completed services
- π€ Professional Profiles: Comprehensive profiles with average rating and reviews history
- π Dashboard: Track performance and earnings, Respond to customer requests efficiently.
- π Content Management: Manage categories, services, and users
- π User Management: Role-based access control
- π‘ Review Moderation: Ensure quality and authenticity
- Framework: FastAPI (Python)
- Database: PostgreSQL with SQLAlchemy ORM
- Authentication: JWT with OAuth2
- Migration: Alembic
- Documentation: OpenAPI/Swagger
- Framework: React with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Icons: Lucide React
- State Management: React Hooks
- API Documentation: FastAPI automatic docs
- File Storage: Local storage with planned cloud migration
- Development: Hot reload for both frontend and backend
freelance-platform/
βββ π backend/ # FastAPI backend application
β βββ π app/
β β βββ π api/ # API routes and endpoints
β β βββ π core/ # Core configuration and security
β β βββ π models/ # Database models
β β βββ π schemas/ # Pydantic schemas
β β βββ π services/ # Business logic
β βββ π alembic/ # Database migrations
β βββ π requirements.txt # Python dependencies
βββ π frontend/ # React frontend application
β βββ π src/
β β βββ π components/ # Reusable components
β β βββ π pages/ # Page components
β β βββ π hooks/ # Custom React hooks
β β βββ π services/ # API service calls
β β βββ π utils/ # Utility functions
β βββ π public/
β β βββ π static/ # Static assets and screenshots
β βββ π package.json # Node.js dependencies
βββ π .gitignore # Git ignore rules
βββ π README.md # Project documentation
Clean, modern interface with intuitive navigation
Advanced filtering and search capabilities
Detailed provider profiles with ratings and reviews
Streamlined booking process with calendar integration
Comprehensive admin panel for platform management
π All screenshots are available in
frontend/public/static/screenshots/
- Python 3.8+
- Node.js 16+
- PostgreSQL 12+
- Git
# Clone the repository
git clone <repository-url>
cd freelance-platform
# Backend setup
cd backend
pip install -r requirements.txt
cp .env.example .env # Configure your environment
alembic upgrade head
uvicorn app.main:app --reload
# Frontend setup (new terminal)
cd frontend
npm install
npm run dev
Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
-
Environment Setup
cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Database Configuration
# Create .env file with your database credentials echo "DATABASE_URL=postgresql://user:password@localhost/dbname" > .env echo "SECRET_KEY=your-secret-key-here" >> .env
-
Database Migration
alembic upgrade head
-
Start Backend Server
uvicorn app.main:app --reload
-
Dependencies
cd frontend npm install
-
Environment Configuration
echo "VITE_API_URL=http://localhost:8000" > .env
-
Start Development Server
npm run dev
The platform provides comprehensive API documentation through FastAPI's automatic documentation system.
- Interactive Docs: http://localhost:8000/docs (Swagger UI)
- Alternative Docs: http://localhost:8000/redoc (ReDoc)
- OpenAPI Schema: http://localhost:8000/openapi.json
POST /auth/login
- User authenticationGET /services
- List all servicesPOST /bookings
- Create new bookingGET /users/profile
- Get user profilePOST /reviews
- Submit service review
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow existing code style and conventions
- Write tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
- User authentication and profiles
- Service listings and discovery
- Booking system
- Review and rating system
- Admin dashboard
- Real-time Notifications: WebSocket-based updates
- Payment Integration: Stripe/PayPal integration
- Mobile App: React Native applications
- Advanced Analytics: Provider performance metrics
- AI Matching: Machine learning-based service recommendations
- Multi-language Support: Internationalization with RTL support
- Live Chat: Real-time messaging system
- Geolocation Services: Location-based service discovery
- Dispute Resolution: Built-in conflict resolution system
GUERFI Dhia Eddine
Artificial Intelligence student
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the Issues page for existing solutions
- Create a new issue with detailed information
- Join our community discussions
- partial Arabic Language Support: The platform now supports both English and Arabic interfaces with arabic integrated with 80% of the website.
- RTL (Right-to-Left) Layout: Automatic RTL layout and font switching for Arabic users.
- Dynamic Language Switching: Users can switch between Arabic and English; language preference is saved.
- i18n Integration: All user-facing strings are translated using
react-i18next
and JSON locale files. - Arabic Fonts: Modern Arabic fonts (Cairo, Tajawal) are integrated for a native look and feel.
- RTL UI Enhancements: Navigation, forms, and UI elements adapt to RTL direction for Arabic.
Main Landing (Arabic) | About Section (Arabic) |
---|---|
![]() |
![]() |
Profile (Arabic) |
---|
![]() |
Note: To contribute translations or improve localization, edit the files in
frontend/src/locales/ar.json
andfrontend/src/locales/en.json
.
- WebSocket Integration: Real-time notifications delivered instantly via WebSocket connections
- Multi-event Notifications: Users receive alerts for various activities (bookings, requests, reviews, quotes)
- Unread Count Tracking: Badge indicators show number of unread notifications
- Mark-as-Read Functionality: Users can mark individual or all notifications as read
- Persistent Storage: All notifications are stored in the database with user associations
- Notification Types: Different notification types (request, quote, booking, review) with appropriate icons
- Deep Linking: Notifications include direct links to related content (requests, bookings, etc.)
- Background Processing: Notifications are generated asynchronously to maintain performance
Feature | Description |
---|---|
Bell Indicator | Real-time unread count badge on bell icon |
Notification Panel | Dropdown panel showing recent notifications |
Mark as Read | One-click functionality to mark notifications as read |
Persistent State | Notifications state persists across sessions |
Socket Reconnection | Automatic reconnection if connection is lost |
Note: Notifications are delivered in real-time for logged-in users and are also available when users return to the platform after being offline.
- Overview
- Features
- Technology Stack
- Project Structure
- Screenshots
- Quick Start
- Installation
- API Documentation
- Contributing
- Roadmap
- License
Built with β€οΈ using FastAPI and React
β Star this repository | π Report Bug | β¨ Request Feature