# lowilt24/registro-de-naves architecture

> Architecture diagram of the GitHub repository lowilt24/registro-de-naves, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lowilt24/registro-de-naves
- Repository: https://github.com/lowilt24/registro-de-naves

## Overview

Registro de naves is a Spring-based maritime registration and review application. Its central workflow registers a vessel, gathers and reviews required documents, advances an application through DGMM decisions, and supports resulting registration records and provisional patent processes. The graph also includes identity, ownership, reports, and requirements guidance. Evidence is limited: no README or controller excerpts were provided, so several capabilities are represented from the source tree, while edges are limited to relationships visible in indexed source references.

Main entry points: [`src/main/java/pa/amp/registro_naves/tramite/TramiteService.java`](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/tramite/TramiteService.java) (Application workflow), [`src/main/java/pa/amp/registro_naves/nave/NaveService.java`](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveService.java) (Vessel rules), [`src/main/java/pa/amp/registro_naves/documento/DocumentoService.java`](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/DocumentoService.java) (Document handling), [`src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java`](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java) (Registration certificate)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and access"]
  node_auth["Authentication"]
  node_accounts["Accounts and roles"]
  node_user_store[("User store")]
end

subgraph group_registry["Vessel registry"]
  node_vessel_api["Vessel registration"]
  node_vessel_logic["Vessel rules<br/>[NaveService.java]"]
  node_vessel_store[("Vessel records")]
  node_people["Owners and agents"]
end

subgraph group_review["Documents and review"]
  node_documents["Document handling"]
  node_file_store["File storage"]
  node_requirements["Document requirements"]
  node_workflow["Application workflow"]
  node_workflow_store[("Application records")]
  node_notices["Agent notices<br/>[AvisoAlAgente.java]"]
end

subgraph group_outputs["Registration outputs"]
  node_certificate["Registration certificate"]
  node_certificate_store[("Certificate records")]
  node_certificate_pdf["Certificate PDF<br/>[ConstanciaPdf.java]"]
  node_patent["Provisional patent"]
  node_patent_pdf["Patent PDF<br/>[PatentePdf.java]"]
end

subgraph group_insights["Guidance and reporting"]
  node_guidance["Requirements guide"]
  node_reports["Operational reports"]
end

node_agent(("User / DGMM"))

node_accounts -->|"reads and writes"| node_user_store
node_vessel_logic -->|"checks and saves"| node_vessel_store
node_vessel_logic -->|"queries status"| node_workflow
node_documents -->|"stores and locates"| node_file_store
node_documents -->|"checks status"| node_workflow
node_workflow -->|"checks completeness"| node_requirements
node_workflow -->|"publishes notice"| node_notices
node_workflow -->|"records transitions"| node_workflow_store
node_certificate -->|"saves certificate"| node_certificate_store
node_certificate -->|"generates PDF"| node_certificate_pdf
node_patent -->|"reads evidence"| node_file_store
node_patent -->|"uses PDF generator"| node_patent_pdf
node_reports -->|"queries accounts"| node_user_store

click node_auth "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/usuario/AuthController.java"
click node_accounts "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/usuario/UsuarioService.java"
click node_user_store "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/usuario/UsuarioRepository.java"
click node_vessel_api "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveController.java"
click node_vessel_logic "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveService.java"
click node_vessel_store "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveRepository.java"
click node_people "https://github.com/lowilt24/registro-de-naves/tree/main/src/main/java/pa/amp/registro_naves/persona"
click node_documents "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/DocumentoService.java"
click node_file_store "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/AlmacenArchivos.java"
click node_requirements "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/RequisitosDocumentoService.java"
click node_workflow "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/tramite/TramiteService.java"
click node_workflow_store "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/tramite/TramiteRepository.java"
click node_notices "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/aviso/AvisoAlAgente.java"
click node_certificate "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java"
click node_certificate_store "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroRepository.java"
click node_certificate_pdf "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaPdf.java"
click node_patent "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/patente/PatenteService.java"
click node_patent_pdf "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/patente/PatentePdf.java"
click node_guidance "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/guia/GuiaRequisitosController.java"
click node_reports "https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/reporte/ReportesService.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_auth,node_accounts,node_user_store,node_agent toneBlue
class node_vessel_api,node_vessel_logic,node_vessel_store,node_people toneAmber
class node_documents,node_file_store,node_requirements,node_workflow,node_workflow_store,node_notices toneMint
class node_certificate,node_certificate_store,node_certificate_pdf,node_patent,node_patent_pdf toneRose
class node_guidance,node_reports toneIndigo
```

## Components

### Identity and access

- [Authentication](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/usuario/AuthController.java): `src/main/java/pa/amp/registro_naves/usuario/AuthController.java`
- [Accounts and roles](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/usuario/UsuarioService.java): `src/main/java/pa/amp/registro_naves/usuario/UsuarioService.java`
- [User store](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/usuario/UsuarioRepository.java): `src/main/java/pa/amp/registro_naves/usuario/UsuarioRepository.java`

### Vessel registry

- [Vessel registration](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveController.java): `src/main/java/pa/amp/registro_naves/nave/NaveController.java`
- [Vessel rules](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveService.java): `src/main/java/pa/amp/registro_naves/nave/NaveService.java`
- [Vessel records](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/nave/NaveRepository.java): `src/main/java/pa/amp/registro_naves/nave/NaveRepository.java`
- [Owners and agents](https://github.com/lowilt24/registro-de-naves/tree/main/src/main/java/pa/amp/registro_naves/persona): `src/main/java/pa/amp/registro_naves/persona`

### Documents and review

- [Document handling](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/DocumentoService.java): `src/main/java/pa/amp/registro_naves/documento/DocumentoService.java`
- [File storage](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/AlmacenArchivos.java): `src/main/java/pa/amp/registro_naves/documento/AlmacenArchivos.java`
- [Document requirements](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/documento/RequisitosDocumentoService.java): `src/main/java/pa/amp/registro_naves/documento/RequisitosDocumentoService.java`
- [Application workflow](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/tramite/TramiteService.java): `src/main/java/pa/amp/registro_naves/tramite/TramiteService.java`
- [Application records](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/tramite/TramiteRepository.java): `src/main/java/pa/amp/registro_naves/tramite/TramiteRepository.java`
- [Agent notices](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/aviso/AvisoAlAgente.java): `src/main/java/pa/amp/registro_naves/aviso/AvisoAlAgente.java`

### Registration outputs

- [Registration certificate](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java): `src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java`
- [Certificate records](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroRepository.java): `src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroRepository.java`
- [Certificate PDF](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/constancia/ConstanciaPdf.java): `src/main/java/pa/amp/registro_naves/constancia/ConstanciaPdf.java`
- [Provisional patent](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/patente/PatenteService.java): `src/main/java/pa/amp/registro_naves/patente/PatenteService.java`
- [Patent PDF](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/patente/PatentePdf.java): `src/main/java/pa/amp/registro_naves/patente/PatentePdf.java`

### Guidance and reporting

- [Requirements guide](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/guia/GuiaRequisitosController.java): `src/main/java/pa/amp/registro_naves/guia/GuiaRequisitosController.java`
- [Operational reports](https://github.com/lowilt24/registro-de-naves/blob/main/src/main/java/pa/amp/registro_naves/reporte/ReportesService.java): `src/main/java/pa/amp/registro_naves/reporte/ReportesService.java`

### Other components

- **User / DGMM**

## Connections

- Accounts and roles → User store: reads and writes (evidence: `src/main/java/pa/amp/registro_naves/usuario/UsuarioService.java`)
- Vessel rules → Vessel records: checks and saves (evidence: `src/main/java/pa/amp/registro_naves/nave/NaveService.java`)
- Vessel rules → Application workflow: queries status (evidence: `src/main/java/pa/amp/registro_naves/nave/NaveService.java`)
- Document handling → File storage: stores and locates (evidence: `src/main/java/pa/amp/registro_naves/documento/DocumentoService.java`)
- Document handling → Application workflow: checks status (evidence: `src/main/java/pa/amp/registro_naves/documento/DocumentoService.java`)
- Application workflow → Document requirements: checks completeness (evidence: `src/main/java/pa/amp/registro_naves/tramite/TramiteService.java`)
- Application workflow → Agent notices: publishes notice (evidence: `src/main/java/pa/amp/registro_naves/tramite/TramiteService.java`)
- Application workflow → Application records: records transitions (evidence: `src/main/java/pa/amp/registro_naves/tramite/TramiteService.java`)
- Registration certificate → Certificate records: saves certificate (evidence: `src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java`)
- Registration certificate → Certificate PDF: generates PDF (evidence: `src/main/java/pa/amp/registro_naves/constancia/ConstanciaRegistroService.java`)
- Provisional patent → File storage: reads evidence (evidence: `src/main/java/pa/amp/registro_naves/patente/PatenteService.java`)
- Provisional patent → Patent PDF: uses PDF generator (evidence: `src/main/java/pa/amp/registro_naves/patente/PatenteService.java`)
- Operational reports → User store: queries accounts (evidence: `src/main/java/pa/amp/registro_naves/reporte/ReportesService.java`)
