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/.../services/business_workflow/impl/FreelancerWorkflowServiceImpl.java | Contains the core logic of the application from the freelancer POV |
quolance-api/src/main/.../services/business_workflow/impl/ApplicationProcessWorkflowImpl.java | Core logic for application processing |
Test | Purpose |
---|---|
getAllProjectsReturnsVisibleProjects() | Ensures only visible projects are returned, even closed ones. |
updateNotPendingProjectDoesNotUpdateProject() | Ensures a project can only be modified in pending state |
create_Success() | Makes sure new users are able to create a new account, considering all requirements are met |
Error Registration Flow | This test ensures users receive clear error messages for invalid inputs during registration. |
Approve Pending Project Flow | This test ensures admins can successfully approve pending projects, enabling freelancers to access them. |
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.
Name | Student ID | GitHub ID | |
---|---|---|---|
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] |
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.
To get started, follow these steps:
- Clone the repository:
git clone https://github.com/abdelh17/Quolance.git
-
Navigate to the UI directory:
cd quolance-ui
-
Install dependencies:
npm install
-
Add
.env.local
file under thequolance-ui
directory. It should contain the following:NEXT_PUBLIC_BASE_URL=http://localhost:8080
-
Run the frontend:
npm run dev
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!
Before running the script, ensure the following:
-
Docker
Install Docker and ensure it’s running. Download Docker here. -
.env File
Obtain the latest.env
file from a teammate and place it in the root of the project atQuolance/.env
.
Alternatively, you can create your own.env
file with the following template (replace the values as needed):# Database Configuration POSTGRES_DB=YOUR_DB_NAME POSTGRES_HOST_PORT=YOUR_HOST_PORT POSTGRES_CONTAINER_PORT=YOUR_DB_PORT LOCAL_DATASOURCE_URL=YOUR_JDBC_URL # Mail Configuration MAILPIT_SMTP_PORT=YOUR_SMTP_PORT MAILPIT_UI_PORT=YOUR_SMTP_UI_PORT MAILPIT_USER=YOUR_SMTP_USERNAME MAILPIT_PASSWORD=YOUR_SMTP_PASSWORD # Cloudinary Configuration CLOUDINARY_CLOUD_NAME=YOUR_CLOUDINARY_CLOUD_NAME CLOUDINARY_API_KEY=YOUR_CLOUDINARY_API_KEY CLOUDINARY_API_SECRET=YOUR_CLOUDINARY_API_SECRET CLOUDINARY_API_ENV_VAR=YOUR_CLOUDINARY_URL # OAuth2 Configuration GITHUB_CLIENT_ID=YOUR_GITHUB_CLIENT_ID GITHUB_CLIENT_SECRET=YOUR_GITHUB_CLIENT_SECRET GOOGLE_CLIENT_ID=YOUR_GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET=YOUR_GOOGLE_CLIENT_SECRET # Admin Configuration ADMIN_EMAIL=YOUR_ADMIN_EMAIL ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD # Logging Configuration LOG_FILE=YOUR_LOG_FILE_PATH # JPA Configuration DB_DDL_AUTO=YOUR_DB_DDL_AUTO
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
Once you run the script, you’ll see a menu with the following options:
-
Create and Start Containers
Choose option1
and press Enter to start the containers. After starting, you should see your containers running... -
Stop Containers
Use option2
to stop the containers without removing them (ideal if you want to keep your database). -
Destroy Containers
Select option3
to completely stop and remove the containers, resetting everything. -
Exit
Option4
exits the script.
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 -D"spring-boot.run.profiles"=local
You can add a profile at your springboot configuration to create an admin user with these credentials
[email protected]
ADMIN_PASSWORD=admin
- Option 1: Running the backend with this command
./mvnw spring-boot:run -Dspring-boot.run.profiles=local
- Option 2: Add the local profile to your intellij config