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.
-
User Registration & Login
- Users create an account with basic information.
- Login is authenticated by email and password.
-
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.
-
Sending Requests
- Users browse others with desired skills.
- Send skill exchange requests.
- Notifications alert users of incoming requests.
-
Request Response
- Receivers can accept or reject requests.
- Upon acceptance, a chat is automatically created.
-
Chat & Messaging
- Users can chat with connected peers.
- Messages are timestamped and stored in the database.
| 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 |
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
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
Initial frontend design sketches (Home, Sign In, Sign Up, Dashboard, Profile, Send Requests, View Requests, Notifications, Chat, Messages):
Video.Demo.mp4
- Clone the repository:
git clone https://github.com/abanoubwagim/SkillSwap.git
cd SkillSwap-
Import into Eclipse or IntelliJ as a Maven project.
-
Configure your MySQL database:
- Create a schema named
skillswap - Tables will be created automatically by Hibernate
- Update
spring-container.xmlwith your DB username/password
-
Deploy the project to Apache Tomcat server.
-
Open your browser:
http://localhost:8080/SkillSwap/
This project is open-source and free to use under the MIT License.
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