Skip to content

OnatArslan/down-work

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

351 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Downwork – A Freelancing Platform

Downwork is a freelancing platform designed to connect freelancers and clients, similar to platforms like Upwork or Fiverr. Freelancers can showcase their skills, bid on projects, and get hired. Clients can post job listings, hire freelancers, and manage projects. The platform features user roles, real-time chat, reviews, payments, and a social friendship system.

Table of Contents

Key Features

1. User Roles

  • Freelancer: Create profiles, bid on jobs, and showcase portfolios.
  • Client: Post job listings, hire freelancers, and review projects.
  • Admin: Manage users, jobs, disputes, and platform settings.

2. Profile Management

  • Freelancers can create detailed profiles with skills, experience, and portfolios.
  • Clients have profiles to showcase their business and completed projects.

3. Friendship System

  • Users can send and accept friendship requests.
  • Friends can recommend freelancers and share job listings.
  • A friendship-based messaging system for efficient communication.

4. Job Posting and Bidding

  • Clients: Post jobs with requirements and budgets.
  • Freelancers: Browse job listings, submit proposals, and bid on jobs.
  • Supports hourly and fixed-price jobs.

5. Job Contracts & Payments

  • Secure contracts between freelancers and clients.
  • Escrow payment system via Stripe or PayPal API.
  • Milestone-based payments for larger projects.
  • Automatic invoice generation for completed jobs.

6. Real-Time Communication

  • Integrated real-time chat using Socket.io for communication between clients, freelancers, and friends.
  • Notifications for messages, project updates, job offers, etc.

7. Review & Rating System

  • Clients and freelancers can leave reviews after job completion.
  • Ratings (1 to 5 stars) influence freelancer rankings.

8. Search & Filters

  • Clients can search for freelancers based on skills, experience, and reviews.
  • Freelancers can filter job postings based on categories, payment, and deadlines.

9. Dashboard & Analytics

  • Freelancers: Track projects, proposals, earnings, and profile views.
  • Clients: Manage job postings, monitor freelancers, and track spending.
  • Admin: View platform statistics, financial data, and key metrics.

10. Notifications & Emails

  • Real-time and email notifications for project invites, messages, and milestones.
  • Admin announcements and platform updates via email.

11. Dispute Management System

  • Built-in dispute resolution for job-related conflicts.
  • Admins can review and resolve disputes, including refunds or rework.

12. Admin Panel

  • Manage users, jobs, payments, and disputes.
  • View metrics like total jobs posted, total earnings, etc.
  • Ban or suspend fraudulent users.

Tech Stack

Backend

  • Express.js: Backend framework for RESTful APIs.
  • Sequelize/Prisma: ORM for database management (PostgreSQL or MySQL).
  • Socket.io: Real-time chat and notifications.
  • JWT: Authentication and authorization with JSON Web Tokens.
  • Stripe/PayPal API: Payment handling and escrow.

Frontend (Optional)

  • React.js: Could be used for the frontend (optional).

Database

  • PostgreSQL/MySQL: Relational data management (users, jobs, payments, friendships).
  • Redis (optional): Caching and session management.

File Storage

  • AWS S3/Cloudinary: For profile pictures, portfolio items, etc.

API Structure

User Routes

  • POST /users/signup: Register as freelancer or client.
  • POST /users/login: User authentication.
  • GET /users/profile: Fetch profile details.
  • PUT /users/profile: Update profile details.
  • POST /users/friend-request: Send a friend request.
  • PUT /users/friend-request/:id/accept: Accept a friend request.
  • GET /users/friends: List all friends.

Job Routes

  • POST /jobs: Create a new job (Client).
  • GET /jobs: Get all jobs (Freelancer).
  • GET /jobs/:id: Get job details.
  • POST /jobs/:id/bid: Submit a proposal for a job (Freelancer).
  • PUT /jobs/:id/hire: Hire a freelancer (Client).
  • GET /jobs/:id/invoice: Generate invoice for completed jobs.

Contract Routes

  • POST /contracts/:id/milestone: Add a milestone to a contract.
  • POST /contracts/:id/payment: Process a payment for a milestone.
  • GET /contracts/:id: Get contract details.

Chat Routes

  • GET /chats: Get chat history.
  • POST /chats/:id: Send a message to a client/freelancer/friend.

Review Routes

  • POST /reviews: Submit a review after job completion.
  • GET /reviews/:id: Get reviews for a freelancer or job.

Challenges & Complexity

  • Authentication & Authorization: Handling different user roles and permissions.
  • Real-Time Communication: Managing live chat and notifications.
  • Payment Integration: Secure handling of payments, escrow, and milestones.
  • Friendship System: Managing self-referencing friendships between users.
  • Scalability: Designing for high user volume and real-time data.
  • Admin Control: Effective management of users, jobs, and disputes.

Future Extensions

  • Mobile App: Extend to mobile using React Native.
  • AI-based Recommendations: Suggest freelancers based on past projects and reviews.
  • Freelancer Levels: Implement a tier system for top-rated freelancers.

This README provides an overview of the SkillSync platform, outlining its key features, tech stack, API structure, and potential future enhancements.

About

Upwork clone

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors