Skip to content

A freelancing platform connecting freelancers and clients for tech services. Quolance leverages machine learning to enhance profiles, evaluate proposals, and enforce rules. An LLM-powered chatbot provides FAQs, tips, and guidance to improve user journeys. Quolance aims to promote trust and transparency to help both freelancers and clients.

License

Notifications You must be signed in to change notification settings

abdelh17/Quolance

Repository files navigation

Quolance

Release Demos

Release 1

Important files

File Purpose
quolance-ui/src/api/auth-api.ts This code provides an authentication guard that manages user login status, redirects, and handles login/logout actions.
quolance-ui/src/components/role-guard.ts This component provides a role-based access guard that renders child content only if the user's role matches one of the allowed roles.
quolance-api/src/main/java/com/quolance/quolance_api/util/SecurityUtil.java This file is used to recover the authenticated user, in the controllers.
quolance-api/src/main/java/com/quolance/quolance_api/services/auth/AuthServiceImpl.java Provides session-based authentication.
quolance-api/src/main/java/com/quolance/quolance_api/services/impl/UserServiceImpl.java User creation as well as password reset and core email sending on registration.

Important tests

Test Purpose
contextLoads Verifies that system correctly initializes
testCreateProject Validates clients can create new projects
testSubmitApplication Ensures freelancers can submit applications to projects
testClientLogin Verifies client authentication and session works correctly
testFreelancerLogin Verifies freelancer authentication and session works correctly

Description

This project presents a cutting-edge freelancing platform that connects freelancers and clients who need tech services. Freelancers can create profiles, submit proposals, and communicate with clients, while clients can post projects, review bids, and engage with freelancers. Machine learning models enhance the platform and user experience by improving freelancer profiles, evaluating proposal quality, and enforcing platform rules. An LLM-based chatbot offers more value to users who can find answers to frequently asked questions, as well as tips on how to improve their own journey through Quolance. With a focus on transparency, trust, and skill development, Quolance aims to set a new standard in the Canadian freelancing industry.

Team members

Name Student ID GitHub ID Email
Abdelkader Habel 40209153 abdelh17 [email protected]
Adel Bouchatta 40175598 Itek01 [email protected]
Anes Khadiri 40159080 KA-devl [email protected]
Chems-Eddine Saidi 40192094 ChemsCode [email protected]
Francesco Ferrato 26642152 franf91 [email protected]
Ismail Feham 40213442 FehamIsmail [email protected]
Abdelmalek Anes 40229242 NotMalek [email protected]
Oussama Cherifi 40212275 OussamaCherifi [email protected]
Sathurthikan Saththyvel 40213455 SSathu [email protected]
Zakaria El Manar El Bouanani 40190432 Zakaria0907 [email protected]
Fadi Nimer 40183225 Lukateki [email protected]

Diversity Statement

Quolance is designed to be inclusive and accessible to everyone, regardless of their background, race, gender, age or abilities. We firmly believe that diversity makes our platform stronger and helps us create better solutions for a wide range of users. By embracing and showing that different perspectives and experiences are encouraged, we can ensure that Quolance serves a variety of needs and remains fair to all individuals.

Our system will be user-friendly and accessible to everyone that might want to use the services of Quolance, aiming to break down barriers that might exclude certain groups.

Ultimately, our goal is to build a platform that promotes equality, respect, and positive impact while fostering a community where all users feel valued and supported.

Developer Guide

To get started, follow these steps:

  1. Clone the repository:
    git clone https://github.com/abdelh17/Quolance.git

Frontend Setup

  1. Navigate to the UI directory:

    cd quolance-ui
  2. Install dependencies:

    npm install
  3. Add .env.local file under the quolance-ui directory. It should contain the following:

    NEXT_PUBLIC_BASE_URL=http://localhost:8080
    
  4. Run the frontend:

    npm run dev

Backend Setup

To ease local development, services and dependencies—such as the PostgreSQL database and SMTP server for email—are containerized and automatically set up using the quolance script. You just need docker to be installed and ready!

Prerequisites

Before running the script, ensure the following:

  1. Docker
    Install Docker and ensure it’s running. Download Docker here.

  2. .env File
    Obtain the latest .env file from a teammate and place it in the root of the project at Quolance/.env.
    Alternatively, you can create your own .env file with the following template (replace the values as needed):

    DB_DDL_AUTO=create-drop
    MAILPIT_SMTP_PORT=1025
    MAILPIT_UI_PORT=8025
    POSTGRES_DB=quolance-postgres-db
    POSTGRES_PASSWORD=your_postgres_password
    POSTGRES_HOST_PORT=5434
    DATASOURCE_URL=jdbc:postgresql://localhost:5434/quolance-postgres-db
    POSTGRES_CONTAINER_PORT=5432
    POSTGRES_USER=postgres
    MAILPIT_USER=mailpit
    MAILPIT_PASSWORD=mailpit
    
    [email protected]
    ADMIN_PASSWORD=admin
    
    GITHUB_CLIENT_ID=github_id
    GITHUB_CLIENT_SECRET=github_secret
    GOOGLE_CLIENT_ID=google_id
    GOOGLE_CLIENT_SECRET=google_secret
    

Running the Backend Setup Script

To set up the backend environment, run the following command from the root directory:

  • Windows:
    ./quolance-scripts/quolance.sh
  • Mac/Linux:
    sh ./quolance-scripts/quolance.sh

Script Options

Once you run the script, you’ll see a menu with the following options: image

  1. Create and Start Containers
    Choose option 1 and press Enter to start the containers. After starting, you should see your containers running...

    In the Docker Desktop app: image

    Or by running docker ps in your terminal: image

  2. Stop Containers
    Use option 2 to stop the containers without removing them (ideal if you want to keep your database).

  3. Destroy Containers
    Select option 3 to completely stop and remove the containers, resetting everything.

  4. Exit
    Option 4 exits the script.


Building and Running the Application

Once the containers are running, on your terminal navigate to the quolance-api directory to build and run the backend:

cd quolance-api
./mvnw clean install
./mvnw spring-boot:run

Using profile to create a default admin user while building the springboot App

Admin credentials

You can add a profile at your springboot configuration to create an admin user with these credentials

   [email protected]
   ADMIN_PASSWORD=admin

Running with the Profile

  • Option 1: Running the backend with this command mvn spring-boot:run -Dspring-boot.run.profiles=local
  • Option 2: Add the local profile to your intellij config image

Wikis table of contents

About

A freelancing platform connecting freelancers and clients for tech services. Quolance leverages machine learning to enhance profiles, evaluate proposals, and enforce rules. An LLM-powered chatbot provides FAQs, tips, and guidance to improve user journeys. Quolance aims to promote trust and transparency to help both freelancers and clients.

Resources

License

Stars

Watchers

Forks

Packages

No packages published