How najhelybs/vacunacioncard works
1. Overall shape
- This is a Java Spring Boot / Maven application for a digital vaccination card system.
- The code is organized as a classic layered architecture: domain models, repositories, services, and a very thin or not-yet-populated controller/config layer.
2. Entry point and runtime
- VacunacioncardApplication is the Spring Boot bootstrap class.
- Build and execution are managed with Maven Wrapper (mvnw, .mvn/) and configuration lives in src/main/resources/application.properties.
3. Core architectural boundary
- The most important boundary is between:
- model/: business entities and value objects
- repository/: persistence access
- service/: business rules and orchestration
- The repository tree strongly suggests Spring Data-style repositories, with services depending on repository interfaces rather than concrete storage details.
4. Domain subsystems
- The model layer is split into business domains:
- auth: CuentaUsuario, Rol, Permiso, SesionUsuario
- usuario: Usuario, Paciente, Enfermero, Administrador, SeguroMedico
- vacunacion: CartillaVacunacion, EsquemaVacunacion, Vacuna, RegistroVacuna, Laboratorio, UbicacionAplicacion
- cita: CitaVacunacion, Horario, DiaSemana
- campania: CampaniaVacunacion, CentroVacunacion
- salud: Alergia, CondicionMedica, Contraindicacion
- notificacion: Notificacion, NotificacionRecordatorio, NotificacionSistema
- comun: shared concepts such as Calendario, Contacto, Direccion, RegistroAuditoria
5. Business service layer
- Each domain has its own service interface and implementation package.
- This layer contains the application rules for:
- user/auth management
- vaccination card and vaccine records
- appointments and schedules
- vaccination campaigns and centers
- health restrictions and contraindications
- notifications
- auditing and calendar logic
- The pattern here is clear: interfaces define contracts, impl classes implement behavior.
6. Repository layer and persistence responsibility
- Repositories exist for each major aggregate/domain, such as PacienteRepository, CitaVacunacionRepository, VacunaRepository, NotificacionRepository, and others.
- This layer isolates persistence concerns from business logic and acts as the data access boundary for the services.
- There is no separate DAO layer; repositories are the persistence abstraction.
7. Notification subsystem
- Notification handling is a distinct subsystem:
- domain types distinguish system notifications from reminder notifications
- NotificacionServiceImpl orchestrates notification behavior
- INotificacionFactory plus concrete factories (RecordatorioNotificacionFactory, SistemaNotificacionFactory) implement Factory Method
- This subsystem likely creates the right notification type depending on the event or use case.
8. Shared cross-cutting concerns
- RegistroAuditoria and its service/repository provide an audit trail for system actions.
- Calendario and related services provide shared date/scheduling functionality reused by appointments and campaigns.
- ServiceException is the explicit application-level error type, indicating service-layer validation or business-rule failures.
9. Design patterns used intentionally
- The repository is a course project on design patterns, and the structure reflects that:
- Factory Method in the notification creation flow
- Singleton in ConfiguracionSistema
- These patterns are not just incidental; they are modeled as first-class parts of the service layer.
10. Data flow through the system
- The usual request path is:
- an upper layer would call a service
- the service applies business rules and coordinates domain objects
- the service delegates persistence to a repository
- domain objects such as patients, vaccines, appointments, or notifications are returned/updated
- Because controllers are not present in the tree, the top-most presentation boundary is currently absent or unfinished.
11. Testing and verification
- The test tree focuses on:
- the main application bootstrap
- notification model behavior
- notification factory behavior
- singleton configuration
- selected service implementations such as session, notification, and patient services
- This shows the project verifies both business logic and pattern behavior, not just persistence wiring.
12. What to diagram
- A good architecture diagram should center on:
- the Spring Boot application
- the service layer as the orchestration hub
- the repository layer as persistence boundary
- the major domain clusters: auth, usuario, vacunacion, cita, campania, salud, notificacion, comun
- the pattern subcomponents for notifications and system configuration
Main entry points: VacunacioncardApplication.java Spring Boot App · NotificacionServiceImpl.java Notificación Service · usuario Usuario Services · cita Cita Services
Components 28
Application
Spring Boot bootstrap and runtime entrypoint
- Spring Boot App · Application entrypoint and startup wiring
src/main/java/pe/edu/utp/vacunacioncard/VacunacioncardApplication.java
Domain Model
Business entities organized by domain
- Auth Model · Accounts, roles, permissions, and sessions
src/main/java/pe/edu/utp/vacunacioncard/model/auth - Usuario Model · Patient, nurse, admin, insurance, and user profiles
src/main/java/pe/edu/utp/vacunacioncard/model/usuario - Vacunación Model · Vaccination card, vaccine, records, labs, and application context
src/main/java/pe/edu/utp/vacunacioncard/model/vacunacion - Cita Model · Appointments and scheduling primitives
src/main/java/pe/edu/utp/vacunacioncard/model/cita - Campaña Model · Campaigns and vaccination centers
src/main/java/pe/edu/utp/vacunacioncard/model/campania - Salud Model · Allergies, medical conditions, and contraindications
src/main/java/pe/edu/utp/vacunacioncard/model/salud - Notificación Model · System and reminder notifications
src/main/java/pe/edu/utp/vacunacioncard/model/notificacion - Común Model · Shared calendar, contact, address, and audit concepts
src/main/java/pe/edu/utp/vacunacioncard/model/comun
Services
Business rules and orchestration layer
- Auth Services · User accounts, roles, permissions, and sessions
src/main/java/pe/edu/utp/vacunacioncard/service/auth - Usuario Services · User profile and patient-facing workflows
src/main/java/pe/edu/utp/vacunacioncard/service/usuario - Vacunación Services · Vaccines, cards, lab, and registry workflows
src/main/java/pe/edu/utp/vacunacioncard/service/vacunacion - Cita Services · Appointment and schedule orchestration
src/main/java/pe/edu/utp/vacunacioncard/service/cita - Campaña Services · Campaign and center management
src/main/java/pe/edu/utp/vacunacioncard/service/campania - Salud Services · Health restrictions and contraindications
src/main/java/pe/edu/utp/vacunacioncard/service/salud - Notificación Service · Notification creation and dispatch orchestration
src/main/java/pe/edu/utp/vacunacioncard/service/notificacion/impl/NotificacionServiceImpl.java - Común Services · Calendar and audit trail coordination
src/main/java/pe/edu/utp/vacunacioncard/service/comun
Repositories
Persistence abstraction layer
- Auth Repos · Account, role, permission, and session storage abstractions
src/main/java/pe/edu/utp/vacunacioncard/repository/auth - Usuario Repos · User, patient, nurse, admin, and insurance repositories
src/main/java/pe/edu/utp/vacunacioncard/repository/usuario - Vacunación Repos · Vaccination aggregates and lookup data repositories
src/main/java/pe/edu/utp/vacunacioncard/repository/vacunacion - Cita Repos · Appointment and schedule repositories
src/main/java/pe/edu/utp/vacunacioncard/repository/cita - Campaña Repos · Campaign and center repositories
src/main/java/pe/edu/utp/vacunacioncard/repository/campania - Salud Repos · Health restriction repositories
src/main/java/pe/edu/utp/vacunacioncard/repository/salud - Notificación Repo · Notification persistence abstraction
src/main/java/pe/edu/utp/vacunacioncard/repository/notificacion/NotificacionRepository.java - Común Repos · Calendar and audit persistence abstractions
src/main/java/pe/edu/utp/vacunacioncard/repository/comun
Patterns
Explicit design-pattern components
- Notification Factory · Creates reminder or system notifications
src/main/java/pe/edu/utp/vacunacioncard/service/patron/creacional/factorymethod - Sistema Config · Centralized system configuration instance
src/main/java/pe/edu/utp/vacunacioncard/service/patron/singleton/ConfiguracionSistema.java - Service Error · Shared service-layer business rule exception
src/main/java/pe/edu/utp/vacunacioncard/exception/ServiceException.java
Connections 29
- Spring Boot App → Auth Services: starts · Bootstraps the application services
- Spring Boot App → Usuario Services: starts · Bootstraps the application services
- Spring Boot App → Vacunación Services: starts · Bootstraps the application services
- Spring Boot App → Cita Services: starts · Bootstraps the application services
- Spring Boot App → Campaña Services: starts · Bootstraps the application services
- Spring Boot App → Salud Services: starts · Bootstraps the application services
- Spring Boot App → Notificación Service: starts · Bootstraps the application services
- Spring Boot App → Común Services: starts · Bootstraps the application services
- Auth Services → Auth Model: uses · Business logic over auth domain objects
- Auth Services → Auth Repos: persists via · Reads and writes auth data through repositories
- Usuario Services → Usuario Model: uses · Business logic over user domain objects
- Usuario Services → Usuario Repos: persists via · Reads and writes user data through repositories
- Vacunación Services → Vacunación Model: uses · Business logic over vaccination domain objects
- Vacunación Services → Vacunación Repos: persists via · Reads and writes vaccination data through repositories
- Cita Services → Cita Model: uses · Business logic over appointment domain objects
- Cita Services → Cita Repos: persists via · Reads and writes appointment data through repositories
- Campaña Services → Campaña Model: uses · Business logic over campaign domain objects
- Campaña Services → Campaña Repos: persists via · Reads and writes campaign data through repositories
- Salud Services → Salud Model: uses · Business logic over health restriction domain objects
- Salud Services → Salud Repos: persists via · Reads and writes health data through repositories
- Notificación Service → Notificación Model: uses · Notification orchestration over notification types
- Notificación Service → Notificación Repo: persists via · Stores and retrieves notifications
- Notificación Service → Notification Factory: creates · Chooses reminder or system notification creation path
- Común Services → Común Model: uses · Shared calendar and audit domain objects
- Común Services → Común Repos: persists via · Stores shared audit and calendar data
- Común Services → Sistema Config: configures · Uses central system configuration
- Notificación Service → Service Error: raises · Signals service-level validation and business-rule failures
- Usuario Services → Service Error: raises · Signals service-level validation and business-rule failures
- Cita Services → Service Error: raises · Signals service-level validation and business-rule failures