An open API service indexing awesome lists of open source software.

https://github.com/abanoubwagim/skillswap

Full-stack Java web application for exchanging skills between users. Built with Spring MVC, Hibernate, JSP, and MySQL, featuring user profiles, skill requests, notifications, and real-time chats.
https://github.com/abanoubwagim/skillswap

bootstrap c3p0 chat full-stack hibernate java jsp jstl mvc mysql skill-sharing spring-boot web-application xml

Last synced: 3 months ago
JSON representation

Full-stack Java web application for exchanging skills between users. Built with Spring MVC, Hibernate, JSP, and MySQL, featuring user profiles, skill requests, notifications, and real-time chats.

Awesome Lists containing this project

README

          

# ๐Ÿ”„ SkillSwap โ€“ Peer-to-Peer Skill Sharing Platform

SkillSwap is a web-based application designed to connect users who want to **share or learn skills** from each other. Users can create profiles, list the skills they offer and want, send requests to exchange skills, and communicate via built-in chat.

---

## ๐Ÿš€ Features

1. **User Registration & Login**

* Users create an account with basic information.
* Login is authenticated by email and password.

2. **Profile & Skills**

* Users can manage their profile, including first/last name, bio, location, and photo.
* Users can add skills they **offer** and skills they **want** to learn.

3. **Sending Requests**

* Users browse others with desired skills.
* Send skill exchange requests.
* Notifications alert users of incoming requests.

4. **Request Response**

* Receivers can accept or reject requests.
* Upon acceptance, a chat is automatically created.

5. **Chat & Messaging**

* Users can chat with connected peers.
* Messages are timestamped and stored in the database.

---

## ๐Ÿ› ๏ธ Tech Stack

| Layer | Technology |
| --------------- | --------------------------- |
| Backend | Java, Spring MVC, Spring Transaction Management, Hibernate/JPA |
| Frontend | JSP, HTML, CSS, Bootstrap |
| Database | MySQL |
| File Handling | Multipart file uploads for profile photos |
| ORM | Hibernate |
| Build Tool | Maven |
| Connection Pool | c3p0 |
| Server | Apache Tomcat |

---

## ๐Ÿ—‚๏ธ Project Structure

```
src/
โ””โ”€โ”€ com.skillswap
โ”œโ”€โ”€ controller # UserController, handles HTTP requests
โ”œโ”€โ”€ dao # UserDAO, SkillDAO, RequestDAO, MessageDAO, NotificationDAO interfaces and implementations
โ”œโ”€โ”€ model # User, Skill, SkillsOffered, SkillsWanted, UserDetails, Request, Chat, Message, Notifications
โ”œโ”€โ”€ service # UserService, SkillService, RequestService, ChatService, MessageService, NotificationService

WebContent/
โ”œโ”€โ”€ WEB-INF/
โ”‚ โ”œโ”€โ”€ lib/ # External JARs
โ”‚ โ”œโ”€โ”€ view/ # JSP pages (home, signIn, singUp, dashboard, profile, sendRequests, viewRequests, notifications, chats, messages)
โ”‚ โ”œโ”€โ”€ spring-container.xml
โ”‚ โ””โ”€โ”€ web.xml
โ”œโ”€โ”€ resources/
โ”‚ โ””โ”€โ”€ images/Screenshot_1.png
```

---

## ๐Ÿ—„๏ธ Database Design

Entity-Relationship Diagram (ERD) showing main tables and relations:

- **Users** โ€“ stores user details (first name, last name, email, password)
- **UserDetails** โ€“ stores extended profile details (bio, location, profile photo)
- **Skills** โ€“ list of skills
- **SkillsOffered** โ€“ mapping of users โ†’ skills they can teach
- **SkillsWanted** โ€“ mapping of users โ†’ skills they want to learn
- **Requests** โ€“ skill exchange requests between users
- **Chats** โ€“ created when a request is accepted
- **Messages** โ€“ messages exchanged in chats
- **Notifications** โ€“ alerts for requests and updates

Database ERD

---

## ๐ŸŽจ UI Wireframes

Initial frontend design sketches (Home, Sign In, Sign Up, Dashboard, Profile, Send Requests, View Requests, Notifications, Chat, Messages):

Home, SignUp, SignIn, Dashboard

Profile

requests and notifications

Chats and messages

---

## โ–ถ๏ธ Demo Video

https://github.com/user-attachments/assets/319fc508-3006-4f87-8fdf-24650b3d48ce

---

## ๐Ÿงช How to Run

1. Clone the repository:

```bash
git clone https://github.com/abanoubwagim/SkillSwap.git
cd SkillSwap
```

2. Import into Eclipse or IntelliJ as a Maven project.

3. Configure your MySQL database:

* Create a schema named `skillswap`
* Tables will be created automatically by Hibernate
* Update `spring-container.xml` with your DB username/password

4. Deploy the project to Apache Tomcat server.

5. Open your browser:

```
http://localhost:8080/SkillSwap/
```

---

## ๐Ÿ“„ License

This project is open-source and free to use under the MIT License.

---

## ๐Ÿท๏ธ GitHub Topics

`Java` `Spring MVC` `Hibernate` `JSP` `MySQL` `MVC` `Web-Application` `Full-Stack` `Bootstrap` `JSTL` `CRUD` `c3p0` `XML` `Apache Tomcat` `SkillSwap` `Chat` `Notifications` `Maven` `Peer-to-Peer` `SkillSharing`