Introducing SkillMatch, a web-based app that provides a platform for connecting learners and teachers. With SkillMatch, you can create a personalised profile, list the interests you want to explore, and showcase the skills you're ready to teach. Our search tool helps you find the perfect match for learning or teaching. You can easily discuss and arrange learning sessions with our live chat feature.
This full-stack project was planned, designed and developed in just 8 days during the final project phase at the Northcoders Software Development bootcamp.
Name | Links |
---|---|
Dorota Szubert | LinkedIn | Github |
Fabian Fernandez | LinkedIn | GitHub |
Jack Brown | LinkedIn | GitHub |
Muhammad Sallu | LinkedIn | GitHub |
Sara Matos | LinkedIn | GitHub |
To get started with SkillMatch, the hosted version of our web-based app can be found at: https://skillmatched.netlify.app/. After creating an account and setting up a profile, you're good to go finding a learning or teaching partner!
Users can:
- Sign up with a new account/sign in with an existing account.
- Modify User Profile by changing profile pic, adding skills you can teach and interests you can learn.
- View matches to exchange teaching and learning skills with one another.
- View learning opportunities with another user to learn a new skill.
- Filter matches and learning opportunities by skill.
- Connect to another user by username.
- Node Installation
- Ensure you have Node.js version 21 or higher installed on your system. If you do not have it installed, please follow the instructions here.
- Clone the repository
- Download the project files by copying and running the following command:
git clone https://github.com/SaraGMatos/skillmatch.git
- Install Dependencies
- Navigate to the project directory and run
npm install
to install the required packages and dependencies.
- Supabase Account and Project
- Create a Supabase account and a new project. Note down the project url and api key.
- Env File Creation
- Navigate to /skillmatch/client/ and create a .env file containing the following variables:
VITE_REACT_APP_SUPABASE_URL=https://your_project_url.supabase.co
VITE_REACT_APP_SUPABASE_KEY=your_api_key
- Authentication Setup
- In Supabase, navigate to the "Authentication" section within the dashboard to configure settings enabling user login via email.
- Creating Tables
- In Supabase, navigate to the "Table Editor" section and create these tables:
Users Table
user_id | time_created | username | avatar_url | description | showcase |
---|---|---|---|---|---|
Primary Key | Timestamptz | Varchar | Text | Text | Text |
Chats Table
chat_id | chat_name |
---|---|
Primary Key | Text |
Messages Table
message_id | time_created | author | message | chat_id |
---|---|---|---|---|
Primary Key | Timestamptz | Foreign Key to Users.user_id | Text | Foreign Key to Chats.chat_id |
Reviews Table
review_id | time_created | reviewer_id | reviewee_id | message | rate |
---|---|---|---|---|---|
Primary Key | Timestamptz | Foreign Key to Users.user_id | Foreign Key to Users.user_id | Text | Int2 |
Skills Table
skill_id | skill_name | description |
---|---|---|
Primary Key | Varchar | Text |
UserChats Table
user_chats_id | chat_id | user_id |
---|---|---|
Primary Key | Foreign Key to Chats.chat_id | Foreign Key to Users.user_id |
UserSkills Table
user_skills_id | user_id | skill_id |
---|---|---|
Primary Key | Foreign Key to Users.user_id | Foreign Key to Skills.skill_id |
UserInterests Table
user_interests_id | user_id | skill_id |
---|---|---|
Primary Key | Foreign Key to Users.user_id | Foreign Key to Skills.skill_id |
- Creating Functions
- In order for this project to run correctly, there are Supabase functions that need creating by navigating to the "Database" section, then to the Functions section and clicking "Create New Function". The included doc here will contain the name and corresponding code for each function needed.
- Running the project
- Run the following commands to start the project:
cd client
npm run dev
- Signing In
- Sign up to create an account and you're good to go!
This project is open to contributions. Feel free to submit a pull request if you would like to make a suggestion or raise an issue or problem with the code.