How samueldazag2/personapp-hexa-spring-boot works
PersonAPP is a Java service for managing people and their related phone, profession, and study records. Its implemented person workflow accepts REST requests or CLI input, selects MariaDB or MongoDB, invokes a use case, and persists through an output adapter. The README documents the broader four-entity ports and persistence adapters, while noting that REST and CLI CRUD beyond person listing and creation is still pending. Some subsystem links below are documented rather than verified against unsampled implementation files.
Main entry points: PersonUseCase.java Person use case · PersonaInputAdapterRest.java REST input adapter · PersonaInputAdapterCli.java CLI input adapter · adapter MariaDB output adapters
Components 19
Input adapters
- Person REST controller
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/controller/PersonaControllerV1.java - REST input adapter
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/adapter/PersonaInputAdapterRest.java - REST mapper
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/mapper/PersonaMapperRest.java - CLI menu
cli-input-adapter/src/main/java/co/edu/javeriana/as/personapp/terminal/menu/PersonaMenu.java - CLI input adapter
cli-input-adapter/src/main/java/co/edu/javeriana/as/personapp/terminal/adapter/PersonaInputAdapterCli.java
Application core
- Person use case
application/src/main/java/co/edu/javeriana/as/personapp/application/usecase/PersonUseCase.java - Person ports
application/src/main/java/co/edu/javeriana/as/personapp/application/port/in/PersonInputPort.java - Person and related models
domain/src/main/java/co/edu/javeriana/as/personapp/domain/Person.java - Phone, study, profession use cases
application/src/main/java/co/edu/javeriana/as/personapp/application/usecase
MariaDB persistence
- MariaDB output adapters
maria-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mariadb/adapter - MariaDB repositories
maria-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mariadb/repository - MariaDB entities
maria-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mariadb/entity/PersonaEntity.java - MariaDB
MongoDB persistence
- MongoDB output adapters
mongo-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mongo/adapter - MongoDB repositories
mongo-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mongo/repository - MongoDB documents
mongo-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mongo/document - MongoDB
Other components
- REST client
- CLI user
Connections 22
- REST client → Person REST controller: sends requests
README.md - Person REST controller → REST input adapter: delegates to
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/controller/PersonaControllerV1.java - REST input adapter → REST mapper: maps data
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/adapter/PersonaInputAdapterRest.java - CLI user → CLI menu: chooses options
README.md - CLI menu → CLI input adapter: invokes
cli-input-adapter/src/main/java/co/edu/javeriana/as/personapp/terminal/menu/PersonaMenu.java - REST input adapter → Person use case: invokes
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/adapter/PersonaInputAdapterRest.java - CLI input adapter → Person use case: constructs
cli-input-adapter/src/main/java/co/edu/javeriana/as/personapp/terminal/adapter/PersonaInputAdapterCli.java - Person use case → Person ports: implements input port
application/src/main/java/co/edu/javeriana/as/personapp/application/usecase/PersonUseCase.java - Person use case → Person and related models: uses models
application/src/main/java/co/edu/javeriana/as/personapp/application/usecase/PersonUseCase.java - REST input adapter → MariaDB output adapters: selects output
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/adapter/PersonaInputAdapterRest.java - REST input adapter → MongoDB output adapters: selects output
rest-input-adapter/src/main/java/co/edu/javeriana/as/personapp/adapter/PersonaInputAdapterRest.java - CLI input adapter → MariaDB output adapters: selects output
cli-input-adapter/src/main/java/co/edu/javeriana/as/personapp/terminal/adapter/PersonaInputAdapterCli.java - CLI input adapter → MongoDB output adapters: selects output
cli-input-adapter/src/main/java/co/edu/javeriana/as/personapp/terminal/adapter/PersonaInputAdapterCli.java - Person use case → MariaDB output adapters: calls output port
application/src/main/java/co/edu/javeriana/as/personapp/application/usecase/PersonUseCase.java - Person use case → MongoDB output adapters: calls output port
- MariaDB output adapters → MariaDB repositories: persists through
README.md - MariaDB repositories → MariaDB entities: uses entities
maria-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mariadb/repository/PersonaRepositoryMaria.java - MariaDB repositories → MariaDB: reads and writes
README.md - MongoDB output adapters → MongoDB repositories: persists through
README.md - MongoDB repositories → MongoDB documents: uses documents
mongo-output-adapter/src/main/java/co/edu/javeriana/as/personapp/mongo/repository/PersonaRepositoryMongo.java - MongoDB repositories → MongoDB: reads and writes
README.md - Phone, study, profession use cases → Person ports: shares ports
application/src/main/java/co/edu/javeriana/as/personapp/application/usecase/PersonUseCase.java