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. |
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 |
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):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
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
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
mvn spring-boot:run -Dspring-boot.run.profiles=local
- Option 2: Add the local profile to your intellij config