How biruk-mulatu/clinic_booking- works
Clinic Booking System is a Spring Boot clinic scheduling application with both Thymeleaf and React interfaces. Patients authenticate, inspect future slots, request or reschedule appointments, and receive confirmations; administrators manage doctors, departments, availability, patients, appointments, reminders, waitlists, queues, and visit records. Services orchestrate persistence and container-free policy/state-machine logic over a shared H2 database. The graph emphasizes sampled call paths and README-documented capabilities; several unsampled controllers are represented without speculative internal links.
Components 25
Presentation
- React UI
frontend/src/App.jsx - Server Pages
backend/src/main/java/et/aau/clinic/web/BookingController.java - Booking API
backend/src/main/java/et/aau/clinic/web/api/BookingApiController.java - Admin API
backend/src/main/java/et/aau/clinic/web/api/AdminApiController.java - Doctor API
backend/src/main/java/et/aau/clinic/web/api/DoctorApiController.java
Application Services
- Appointment Service
backend/src/main/java/et/aau/clinic/service/AppointmentService.java - Availability Service
backend/src/main/java/et/aau/clinic/service/AvailabilityService.java - Directory Service
backend/src/main/java/et/aau/clinic/service/DirectoryService.java - Notifications
backend/src/main/java/et/aau/clinic/service/NotificationService.java
Domain Rules
- Booking Policy
backend/src/main/java/et/aau/clinic/core/BookingPolicy.java - Appointment States
backend/src/main/java/et/aau/clinic/core/AppointmentStateMachine.java - Availability Expander
backend/src/main/java/et/aau/clinic/core/AvailabilityExpander.java - Slot Reconciler
backend/src/main/java/et/aau/clinic/core/SlotReconciler.java - Queue States
backend/src/main/java/et/aau/clinic/core/QueueStateMachine.java
Persistence
- Appointment Store
backend/src/main/java/et/aau/clinic/repository/AppointmentRepository.java - Slot Store
backend/src/main/java/et/aau/clinic/repository/SlotRepository.java - Clinic Stores
backend/src/main/java/et/aau/clinic/repository/DoctorRepository.java - Queue Store
backend/src/main/java/et/aau/clinic/repository/QueueEntryRepository.java - H2 Database
Clinic Operations
- Queue Service
backend/src/main/java/et/aau/clinic/service/QueueService.java - Reminder Scheduler
backend/src/main/java/et/aau/clinic/config/ReminderScheduler.java - Waitlist Scheduler
backend/src/main/java/et/aau/clinic/config/WaitlistOfferScheduler.java - Visit Records
backend/src/main/java/et/aau/clinic/service/VisitRecordService.java
Other components
- Patient
- Receptionist
Connections 31
- Patient → React UI: uses
- Receptionist → React UI: uses
- React UI → Booking API: calls
- React UI → Admin API: calls
- Server Pages → Appointment Service: calls
- Booking API → Appointment Service: delegates
- Admin API → Appointment Service: books
- Admin API → Appointment Store: reads
- Doctor API → Availability Service: manages
- Doctor API → Directory Service: manages
- Appointment Service → Booking Policy: evaluates
- Appointment Service → Appointment States: transitions
- Appointment Service → Appointment Store: reads/writes
- Appointment Service → Slot Store: checks
- Appointment Service → Notifications: notifies
- Availability Service → Availability Expander: expands
- Availability Service → Slot Reconciler: reconciles
- Availability Service → Slot Store: writes
- Availability Service → Clinic Stores: reads
- Directory Service → Clinic Stores: manages
- Queue Service → Queue States: transitions
- Queue Service → Appointment Service: marks attended
- Queue Service → Queue Store: reads/writes
- Queue Service → Appointment Store: checks
- Reminder Scheduler → Appointment Service: sweeps
- Waitlist Scheduler → Appointment Service: offers
- Visit Records → Appointment Store: links
- Appointment Store → H2 Database: persists
- Slot Store → H2 Database: persists
- Clinic Stores → H2 Database: persists
- Queue Store → H2 Database: persists