# koder95/school-booking-platform-backend architecture

> Architecture diagram of the GitHub repository koder95/school-booking-platform-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/koder95/school-booking-platform-backend
- Repository: https://github.com/koder95/school-booking-platform-backend

## Overview

School Booking Platform Backend is a Spring Boot REST API for school lesson scheduling and booking. Its core flow exposes teacher availability, generates availability slots and lessons, lets students book lessons, and serves lesson searches and booking views; administrators also manage teachers, students, subjects, and resources. Authentication supports password/JWT and one-time-token login, with login notifications and logged email delivery. The tree and README establish the broader capabilities; sampled controller and service sources confirm selected call paths, so uncertain service-to-storage wiring is omitted.

Main entry points: [`src/main/java/pl/koder95/sbp/backend/controller/TeacherController.java`](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/TeacherController.java) (Teacher API), [`src/main/java/pl/koder95/sbp/backend/service/impl`](https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/service/impl) (Authentication services), [`src/main/java/pl/koder95/sbp/backend/service/impl/OneTimeTokenAuthenticationServiceImpl.java`](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/OneTimeTokenAuthenticationServiceImpl.java) (One-time tokens), [`src/main/java/pl/koder95/sbp/backend/service/impl/EmailDeliveryServiceImpl.java`](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/EmailDeliveryServiceImpl.java) (Email delivery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_authapi["Authentication API"]
  node_lessonapi["Lesson API"]
  node_teacherapi["Teacher API"]
  node_subjectapi["Subject API"]
  node_otherapi["Other APIs"]
end

subgraph group_identity["Identity and access"]
  node_authservice["Authentication services"]
  node_security["JWT security"]
  node_userrepo["User repository"]
  node_ott["One-time tokens"]
end

subgraph group_schedule["Scheduling and booking"]
  node_availability["Availability services"]
  node_slots["Availability slot services"]
  node_lessons["Lesson services"]
  node_bookings["Booking services"]
end

subgraph group_school["School records"]
  node_teacher["Teacher services"]
  node_students["Student services"]
  node_subjects["Subject services"]
  node_resources["Resource services"]
end

subgraph group_delivery["Email delivery"]
  node_email["Email delivery"]
  node_emailservice["Email services"]
end

node_client(("API client"))
node_database[("PostgreSQL")]
node_smtp["SMTP mail server"]

node_client -->|"requests login"| node_authapi
node_client -->|"requests lessons"| node_lessonapi
node_client -->|"manages availability"| node_teacherapi
node_client -->|"manages subjects"| node_subjectapi
node_client -->|"uses APIs"| node_otherapi
node_authapi -->|"dispatches"| node_authservice
node_authapi -->|"dispatches OTT"| node_ott
node_authservice -->|"creates JWT"| node_security
node_security -->|"loads user"| node_userrepo
node_ott -->|"resolves principal"| node_userrepo
node_ott -->|"sends notification"| node_email
node_authservice -->|"sends notification"| node_email
node_lessonapi -->|"dispatches"| node_lessons
node_lessonapi -->|"dispatches booking"| node_bookings
node_teacherapi -->|"dispatches"| node_teacher
node_teacherapi -->|"dispatches availability"| node_availability
node_teacherapi -->|"dispatches slots"| node_slots
node_subjectapi -->|"dispatches"| node_subjects
node_slots -->|"generates lessons"| node_lessons
node_otherapi -->|"dispatches student operations"| node_students
node_otherapi -->|"dispatches resource operations"| node_resources
node_authservice -->|"reads users"| node_database
node_ott -->|"stores token data"| node_database
node_email -->|"sends email"| node_smtp
node_email -->|"records deliveries"| node_database

click node_authapi "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/AuthenticationController.java"
click node_lessonapi "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/LessonController.java"
click node_teacherapi "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/TeacherController.java"
click node_subjectapi "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/SubjectController.java"
click node_otherapi "https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/controller"
click node_authservice "https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/service/impl"
click node_security "https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/security"
click node_userrepo "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/repository/UserRepository.java"
click node_ott "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/OneTimeTokenAuthenticationServiceImpl.java"
click node_teacher "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/TeacherServiceImpl.java"
click node_students "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/StudentServiceImpl.java"
click node_subjects "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/SubjectServiceImpl.java"
click node_resources "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/ResourceServiceImpl.java"
click node_availability "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/AvailabilityServiceImpl.java"
click node_slots "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/AvailabilitySlotServiceImpl.java"
click node_lessons "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/LessonServiceImpl.java"
click node_bookings "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/BookingServiceImpl.java"
click node_email "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/EmailDeliveryServiceImpl.java"
click node_emailservice "https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/EmailServiceImpl.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_authapi,node_lessonapi,node_teacherapi,node_subjectapi,node_otherapi,node_client toneBlue
class node_authservice,node_security,node_userrepo,node_ott,node_database toneAmber
class node_availability,node_slots,node_lessons,node_bookings,node_smtp toneMint
class node_teacher,node_students,node_subjects,node_resources toneRose
class node_email,node_emailservice toneIndigo
```

## Components

### REST API

- [Authentication API](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/AuthenticationController.java): `src/main/java/pl/koder95/sbp/backend/controller/AuthenticationController.java`
- [Lesson API](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/LessonController.java): `src/main/java/pl/koder95/sbp/backend/controller/LessonController.java`
- [Teacher API](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/TeacherController.java): `src/main/java/pl/koder95/sbp/backend/controller/TeacherController.java`
- [Subject API](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/controller/SubjectController.java): `src/main/java/pl/koder95/sbp/backend/controller/SubjectController.java`
- [Other APIs](https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/controller): `src/main/java/pl/koder95/sbp/backend/controller`

### Identity and access

- [Authentication services](https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/service/impl): `src/main/java/pl/koder95/sbp/backend/service/impl`
- [JWT security](https://github.com/koder95/school-booking-platform-backend/tree/master/src/main/java/pl/koder95/sbp/backend/security): `src/main/java/pl/koder95/sbp/backend/security`
- [User repository](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/repository/UserRepository.java): `src/main/java/pl/koder95/sbp/backend/repository/UserRepository.java`
- [One-time tokens](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/OneTimeTokenAuthenticationServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/OneTimeTokenAuthenticationServiceImpl.java`

### Scheduling and booking

- [Availability services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/AvailabilityServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/AvailabilityServiceImpl.java`
- [Availability slot services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/AvailabilitySlotServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/AvailabilitySlotServiceImpl.java`
- [Lesson services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/LessonServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/LessonServiceImpl.java`
- [Booking services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/BookingServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/BookingServiceImpl.java`

### School records

- [Teacher services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/TeacherServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/TeacherServiceImpl.java`
- [Student services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/StudentServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/StudentServiceImpl.java`
- [Subject services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/SubjectServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/SubjectServiceImpl.java`
- [Resource services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/ResourceServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/ResourceServiceImpl.java`

### Email delivery

- [Email delivery](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/EmailDeliveryServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/EmailDeliveryServiceImpl.java`
- [Email services](https://github.com/koder95/school-booking-platform-backend/blob/master/src/main/java/pl/koder95/sbp/backend/service/impl/EmailServiceImpl.java): `src/main/java/pl/koder95/sbp/backend/service/impl/EmailServiceImpl.java`

### Other components

- **API client**
- **PostgreSQL**
- **SMTP mail server**

## Connections

- API client → Authentication API: requests login
- API client → Lesson API: requests lessons
- API client → Teacher API: manages availability
- API client → Subject API: manages subjects
- API client → Other APIs: uses APIs
- Authentication API → Authentication services: dispatches
- Authentication API → One-time tokens: dispatches OTT
- Authentication services → JWT security: creates JWT
- JWT security → User repository: loads user
- One-time tokens → User repository: resolves principal
- One-time tokens → Email delivery: sends notification
- Authentication services → Email delivery: sends notification
- Lesson API → Lesson services: dispatches
- Lesson API → Booking services: dispatches booking
- Teacher API → Teacher services: dispatches
- Teacher API → Availability services: dispatches availability
- Teacher API → Availability slot services: dispatches slots
- Subject API → Subject services: dispatches
- Availability slot services → Lesson services: generates lessons
- Other APIs → Student services: dispatches student operations
- Other APIs → Resource services: dispatches resource operations
- Authentication services → PostgreSQL: reads users
- One-time tokens → PostgreSQL: stores token data
- Email delivery → SMTP mail server: sends email
- Email delivery → PostgreSQL: records deliveries
