TutorSpace
Full-stack tutoring management platform
A comprehensive tutoring management web application designed to streamline session scheduling, student tracking, and administrative tasks for tutors and tutoring businesses.
Overview
TutorSpace provides tutors with a centralized platform to manage their students, schedule sessions, track progress, and handle administrative workflows. The platform features role-based authentication to support both tutors and students with appropriate access controls.
Tech Stack
Backend
- Spring Boot - REST API framework
- Spring Data JPA - Database persistence
- PostgreSQL - Relational database
- JWT - Stateless authentication
Frontend
- Next.js - React framework with server-side rendering
- React - Component-based UI
- TypeScript - Type-safe development
Key Features
Authentication & Authorization
- JWT-based authentication system
- Role-based access control (TUTOR/STUDENT)
- Secure session management
Session Management
- Create and schedule tutoring sessions
- Track session history
- Manage student enrollment
Architecture
- Layered architecture (Controller → Service → Repository)
- JPA entities for User and Session models
- RESTful API design
- Separation of concerns between frontend and backend
Current Status
In active development. Core authentication and session management features implemented. Next steps include adding payment processing, calendar integration, and student progress tracking.
What I Learned
- Building a full-stack application from scratch with modern frameworks
- Implementing JWT authentication in Spring Boot
- Designing RESTful APIs with proper layering
- Integrating React frontend with Spring Boot backend
- Database schema design for relational data
<!--
See https://www.debugbear.com/blog/responsive-images#w-descriptors-and-the-sizes-attribute and
https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images for info on defining 'sizes' for responsive images
-->
<source
class="responsive-img-srcset"
srcset="/assets/img/tutorspace-dashboard-480.webp 480w,/assets/img/tutorspace-dashboard-800.webp 800w,/assets/img/tutorspace-dashboard-1400.webp 1400w,"
type="image/webp"
sizes="95vw"
>
<img
src="/assets/img/tutorspace-dashboard.png"
class="img-fluid rounded z-depth-1"
width="100%"
height="auto"
title="Dashboard"
loading="lazy"
onerror="this.onerror=null; $('.responsive-img-srcset').remove();"
>
</picture>
</figure>
</div>
</div> –>