An interactive peer tutoring platform that connects students seeking help with tutors who can teach specific subjects.
- User Management: Registration, login, and role-based access (Student, Tutor, Admin)
- Matching System: Recommends tutors based on subject expertise, availability, and ratings
- Session Scheduling: Book, reschedule, and cancel tutoring sessions
- Feedback System: Rate and review tutors after sessions
- Notifications: Real-time alerts for session requests and updates
- Backend: Spring Boot (Java 17)
- Frontend: HTML, CSS, JavaScript
- Database: MySQL
- ORM: Spring Data JPA
- Authentication: Spring Security
- Build Tool: Maven
- Java 17 or higher
- MySQL 8.0 or higher
- Maven 3.6 or higher
- Install MySQL and create a database:
CREATE DATABASE peer_tutor_db;- Update
src/main/resources/application.propertieswith your MySQL credentials:
spring.datasource.username=your_username
spring.datasource.password=your_password- Clone the repository
- Navigate to the project directory
- Run the application:
mvn spring-boot:run- Access the application at
http://localhost:9090
POST /api/register- Register a new userPOST /api/login- Authenticate user
GET /api/tutors- Get list of tutorsGET /api/tutors?subject=Math- Filter tutors by subjectGET /api/tutors?minRating=4- Filter tutors by minimum rating
POST /api/sessions- Create a tutoring sessionPUT /api/sessions/{id}- Update sessionDELETE /api/sessions/{id}- Cancel sessionGET /api/sessions/tutor/{tutorId}- Get sessions by tutorGET /api/sessions/student/{studentId}- Get sessions by student
POST /api/feedback- Submit feedbackGET /api/feedback/{tutorId}- Get tutor ratings
GET /api/notifications/{userId}- Get user notificationsPUT /api/notifications/{notificationId}/read- Mark as read
curl -X POST http://localhost:9090/api/register \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"password": "password123",
"role": "STUDENT"
}'curl -X POST http://localhost:9090/api/register \
-H "Content-Type: application/json" \
-d '{
"name": "Jane Smith",
"email": "jane@example.com",
"password": "password123",
"role": "TUTOR",
"subjects": "Math, Physics, Chemistry",
"skillLevel": "Advanced",
"availability": "Mon-Fri 6-8 PM"
}'curl -X POST http://localhost:9090/api/sessions \
-H "Content-Type: application/json" \
-d '{
"tutorId": 2,
"studentId": 1,
"subject": "Math",
"dateTime": "2024-01-15T18:00:00"
}'curl -X POST http://localhost:9090/api/feedback \
-H "Content-Type: application/json" \
-d '{
"sessionId": 1,
"studentId": 1,
"tutorId": 2,
"rating": 5,
"comments": "Excellent tutoring session!"
}'/- Home page/login- Login page/register- Registration page/dashboard- Main dashboard (redirects based on role)/student-dashboard- Student interface/tutor-dashboard- Tutor interface/feedback- Feedback submission page/notifications- Notifications page
src/
├── main/
│ ├── java/com/peertutormatchmaker/
│ │ ├── entity/ # JPA entities
│ │ ├── repository/ # Data repositories
│ │ ├── service/ # Business logic
│ │ ├── controller/ # REST controllers
│ │ ├── dto/ # Data transfer objects
│ │ └── config/ # Configuration classes
│ └── resources/
│ ├── templates/ # HTML templates
│ └── application.properties
- BCrypt password encoding
- Role-based access control
- CSRF protection disabled for API endpoints
- Session-based authentication
After running the application, you can create test users through the registration page or API endpoints. The application will automatically create the database tables on first run.