Skip to content

University project - A marketplace connecting clients and freelancers

Notifications You must be signed in to change notification settings

TUT888/FreelanceFusion

Repository files navigation

Freelance Fusion

Introduction

FreelanceFusion is a platform where freelancers can create profiles and connect with clients seeking various services. It facilitates direct communication, helping freelancers and clients establish effective connections. Demo

Table of Contents

Features

For more detailed information, including images, please refer to the separated demo section: DEMO

This software project includes following features:

  • User authentication: Register and login
  • Profile management: View and update profile
  • Search function: Search job, search freelancer
  • Job board:
    • Client:
      • Post new job to job board
      • Edit posted jobs
      • View all posted jobs
    • Freelancer:
      • Apply for a job
  • Project Management:
    • Manage your project with tasks on boards (To-do, In progress and Completed). This feature is real-time sync between client and freelancer.
    • Client:
      • Accept application from freelancer
      • Remove freelancer from current project
  • Real-time communication: Real-time chat between freelancer and client
  • Ratings and reviews
    • Client:
      • View your given ratings and reviews
      • Add your new ratings and reviews
      • Delete your ratings and reviews
    • Freelacner:
      • View your received ratings
    • Real-time notification is sent to target freelancer immediately when a new rating is added for them

Back to top

Prototype

The HI-FI prototype of this project can be found at: Figma - FreelanceFusion HI-FI prototype

Back to top

Installation

  1. Clone the repository

    git clone https://github.com/TUT888/FreelanceFusion.git
    
  2. Go to project folder

    cd FreelanceFusion
    
  3. Install dependencies

    npm install
    
  4. Set environment variables

    • Create .env file in the root directory
    • Set the following environment variables:
      MONGODB_URL=<URL to your MongoDB>
      SESSION_SECRET=<Your secret key>
      
  5. Run the project

    • Run during development
      npm run start:dev
      
    • Normal run
      npm start
      

Back to top

Testing

IMPORTANT NOTE: before running any type of testing, make sure you have your website running

1. Unit test

Use following command to run all the test with Mocha and Chai:

npm test

2. End-to-end test

Start server with following command:

npm run start:test

To run the end-to-end test, choose one of the following options:

  • Test with Cypress interface open:
    • Run the following command to launch the browser:
      npm run e2e:open
      
    • In the welcome page, choose E2E testing
    • Choose a browser and click "Start E2E Testing"
    • Click on any .cy.js file to start the testing with this them. For example, click on the home.cy.js to start testing the features in homepage.
  • Test with command line:
    • Run all tests with the following command:
      npm run e2e:chrome
      
    • Observe the testing result in command line

Back to top

Contribution

Our team members:

  • Alice Tat (TUT888): responsible for profile management, ratings and reviews features (HI-FI prototype, feature implementation, unit testing, end-to-end testing).
  • Tuan Phong Nguyen (ntp111): responsible for job/freelancer search, project management features (HI-FI prototype, feature implementation, unit testing, end-to-end testing).
  • Caroline Nguyen (uyenanuong): responsible for UI of homepage, login, register (frontend implementation).
  • Sumedh Vartak (sumedh004): responsible for database (implementation and backup), user authentication (backend and unit testing) and real-time communication features.
  • Misa Aghera (MisaAghera): responsible for database design, job post management and real-time communication features.

About

University project - A marketplace connecting clients and freelancers

Resources

Stars

Watchers

Forks

Packages

No packages published