Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
575928c
refactor: refactor bounded contexts in candidate context recovery
Eric396 May 6, 2026
64f52ba
refactor: change domain message flow modeling according to new bounde…
Eric396 May 7, 2026
6df2e97
refactor: make new bounded context canvases for new bounded contexts
Eric396 May 7, 2026
48a61fd
refactor: refactor context mapping
Eric396 May 7, 2026
7382a4d
refactor: refactor container level diagrams
Eric396 May 7, 2026
b69c9a2
refactor: refactor eventstorming with new format
Eric396 May 8, 2026
6b472a0
Merge pull request #21 from Kntro-Soft/feature/refactor-bounded-contexts
jhosepmyr May 8, 2026
b5d5730
docs(readme): fix table formatting issues and text inconsistencies
jhosepmyr May 8, 2026
04ca37c
docs(readme): standardize table styles and improve padding consistency
jhosepmyr May 8, 2026
7a93f21
docs(readme): improve question formatting for better readability
jhosepmyr May 8, 2026
e4ddfa0
docs(readme): fix grammar and terminology inconsistencies
jhosepmyr May 8, 2026
f28b38e
refactor: implement reverse proxy on architecture
Eric396 May 9, 2026
1defeea
docs(readme): fix grammar, terminology, and formatting inconsistencies
jhosepmyr May 9, 2026
15bed6f
Merge pull request #22 from Kntro-Soft/bugfix/fix-formatting-and-stru…
jhosepmyr May 9, 2026
cfd0077
Merge branch 'develop' into feature/refactor-bounded-contexts
jhosepmyr May 9, 2026
934c6a4
Merge pull request #23 from Kntro-Soft/feature/refactor-bounded-contexts
jhosepmyr May 9, 2026
75f0d37
docs(readme): fix grammar, terminology, and formatting issues in arch…
jhosepmyr May 9, 2026
dae2805
docs(readme): update version history table with new refinements and f…
jhosepmyr May 9, 2026
11c0fb9
Merge pull request #24 from Kntro-Soft/feature/refine-context-mapping…
jhosepmyr May 9, 2026
91a8619
Feature/add GitHub community health files (#26)
jhosepmyr May 9, 2026
c8552fc
docs: update repository links and names to reflect `ReqsAI-Report` tr…
jhosepmyr May 9, 2026
3d66ab0
Feature/generate readme pdf (#30)
jhosepmyr May 9, 2026
8e4dd0b
docs(changelog): update for version 2.2 with new features and updates
jhosepmyr May 9, 2026
c9921f9
Merge branch 'main' into develop
jhosepmyr May 9, 2026
df7f90c
ci(workflows): enhance PDF generation workflow with job summary (#32)
jhosepmyr May 9, 2026
200f344
Merge branch 'main' into develop
jhosepmyr May 9, 2026
5927821
docs(readme): fix table formatting and text inconsistencies in system…
jhosepmyr May 10, 2026
e0eaca7
docs(readme): update functionality inventory table for improved clari…
jhosepmyr May 10, 2026
34bda2e
docs(readme): expand functionality inventory with additional scenario…
jhosepmyr May 10, 2026
a4f3fa1
docs(readme): update functionality inventory with complete structure …
jhosepmyr May 10, 2026
e4c8b0f
docs(readme): refine functionality inventory with expanded descriptio…
jhosepmyr May 11, 2026
5966647
docs(readme): adjust inventory table for consistency and readability …
jhosepmyr May 11, 2026
c5ac7fa
feat(subs): add Applications Mock-ups frames and description
VarBus May 14, 2026
bb0ffee
feat(ui/ux): add wireflow and wireframes sections for web application
VarBus May 14, 2026
5b326ab
feat(ui/ux): add style guidelines and student outcome marcelo
VarBus May 14, 2026
1ed7692
Merge branch 'feature/UI/UX' into develop
VarBus May 14, 2026
c222793
docs(readme): expand functionality inventory with additional scenario…
jhosepmyr May 14, 2026
6a7f1a6
Merge pull request #34 from Kntro-Soft/feature/refine-user-stories-an…
Eric396 May 14, 2026
99619e4
docs(codeowners): update ownership assignments for assets and chapters
jhosepmyr May 14, 2026
bc30b50
Merge pull request #35 from Kntro-Soft/feature/ui-ux-design
VarBus May 14, 2026
785a46f
docs(assets): rename UI asset files for improved consistency and clarity
jhosepmyr May 15, 2026
f2c54c2
docs(readme): correct formatting inconsistencies and improve alignmen…
jhosepmyr May 15, 2026
ae4904e
docs(codeowners): add ownership for Solution UX Design assets directory
jhosepmyr May 15, 2026
5d33d9f
Merge pull request #36 from Kntro-Soft/bugfix/fix-chaptervi-image-att…
jhosepmyr May 15, 2026
b816db2
docs(readme): update Bounded Context sections with detailed structure…
Kyrubi May 15, 2026
0d20c21
Merge pull request #37 from Kntro-Soft/feature/5-bounded-structure-re…
jhosepmyr May 15, 2026
788d744
docs(readme): expand IAM Domain Layer and Interface Layer sections wi…
Kyrubi May 15, 2026
a1e4741
docs(readme): expand Outbound Service Ports and Infrastructure Layer …
Kyrubi May 15, 2026
64709a8
docs(readme): enhance IAM Bounded Context section with detailed domai…
jhosepmyr May 15, 2026
4bd5a10
docs(assets): add IAM Bounded Context class diagram with detailed dom…
jhosepmyr May 15, 2026
4f2f054
docs(readme): add IAM Bounded Context Domain Layer class diagram
jhosepmyr May 15, 2026
058ca40
docs(iam): add and enhance architecture diagrams
jhosepmyr May 15, 2026
d1a45ae
docs(readme): add detailed domain model for Billing Bounded Context
jhosepmyr May 15, 2026
766f0d5
docs(assets): add C4-PlantUML file for C4 diagrams
jhosepmyr May 15, 2026
72bf436
docs(assets): add standard styling files for PlantUML diagrams
jhosepmyr May 15, 2026
3bc4705
docs(assets): apply standardized styling to IAM diagrams
jhosepmyr May 15, 2026
befb696
docs(assets): update `reqsai-c4-component-style.puml` with standardiz…
jhosepmyr May 15, 2026
d95d067
docs(assets): reorganize `iam-class.puml` with package structure and …
jhosepmyr May 15, 2026
6dd6de6
docs(assets): extend `reqsai-class-style.puml` with architectural ste…
jhosepmyr May 15, 2026
be0564a
docs(assets): extend `iam-class.puml` with detailed architectural lay…
jhosepmyr May 15, 2026
4a5b0fe
docs(assets): enhance `iam-class.puml` with tactical patterns and det…
jhosepmyr May 15, 2026
9f4473d
docs(assets): refactor `iam-class.puml` to relocate exceptions for im…
jhosepmyr May 15, 2026
71fb422
docs(assets): update IAM diagrams with revised visuals for class, com…
jhosepmyr May 15, 2026
d007efc
docs(assets): reorganize `iam-class.puml` with refined package struct…
jhosepmyr May 15, 2026
81bb4dd
Merge branch 'develop' of https://github.com/Kntro-Soft/ReqsAI-Report…
VarBus May 15, 2026
65e22df
docs(assets): simplify `iam-class.puml` legend and refine stereotype …
jhosepmyr May 15, 2026
7142bb3
docs(assets): update `iam-class.png` with refreshed diagram visuals
jhosepmyr May 15, 2026
bd7ddfe
docs(README): add detailed domain model and REST API documentation fo…
jhosepmyr May 15, 2026
754eafe
docs(assets): add and structure diagrams for Billing, Discovery, and …
jhosepmyr May 15, 2026
372a2df
docs(README): add detailed architecture diagrams for Billing, Workspa…
jhosepmyr May 15, 2026
d335f92
Merge pull request #38 from Kntro-Soft/feature/tactical-level-softwar…
jhosepmyr May 15, 2026
65bfb0f
docs(readme): enhance user stories and constraints with architectural…
Kyrubi May 15, 2026
f0aec46
docs(assets): add C4 architecture diagrams for ReqsAI platform
jhosepmyr May 15, 2026
086ab44
docs(assets): remove outdated C4 architecture diagrams
jhosepmyr May 15, 2026
ac7346a
docs(README): update architecture diagrams and enhance descriptions
jhosepmyr May 15, 2026
1941dde
docs(README): fix grammatical inconsistencies in architecture descrip…
jhosepmyr May 15, 2026
a854732
Merge pull request #39 from Kntro-Soft/feature/c4-architecture-diagrams
Eric396 May 15, 2026
bf4e6c3
docs(assets): update aggregates and bounded contexts diagrams
jhosepmyr May 15, 2026
bf3e307
docs(assets): update c4 landscape diagram
Eric396 May 16, 2026
ba572bf
docs(assets): implement customer support channel service in system la…
Eric396 May 16, 2026
4a40ecc
Merge pull request #40 from Kntro-Soft/feature/update-system-landscape
jhosepmyr May 16, 2026
4a89368
feat: update README with detailed wireframes and design principles fo…
salimramirez May 16, 2026
c8360ff
feat: add detailed mock-ups for Landing Page sections in README
salimramirez May 16, 2026
6a2e818
Merge pull request #41 from Kntro-Soft/feature/landing-page-design
Eric396 May 16, 2026
02baaf2
feat: add mobile application wireframes and descriptions to README
salimramirez May 16, 2026
6e28ffa
feat: add mobile application wireflow diagrams and descriptions to RE…
salimramirez May 16, 2026
618e6c4
docs(readme): refactor architectonic impact
Eric396 May 16, 2026
41f3eef
docs(readme): refactor constraints justifications
Eric396 May 16, 2026
17e820f
feat: add high-fidelity mock-ups for mobile application screens to RE…
salimramirez May 16, 2026
8ddb47f
Merge pull request #42 from Kntro-Soft/feature/fix-add-attributes
Eric396 May 16, 2026
7e3227f
feat: add mobile application user flow diagrams and descriptions to R…
salimramirez May 16, 2026
4af90a9
docs(README): improve table formatting and fix typos in architectural…
jhosepmyr May 16, 2026
66d610d
feat: add high-fidelity interactive prototype and video links for mob…
salimramirez May 16, 2026
6e73cba
Merge pull request #43 from Kntro-Soft/feature/mobile-application-design
jhosepmyr May 16, 2026
f08cf59
Merge branch 'develop' of https://github.com/Kntro-Soft/ReqsAI-Report…
VarBus May 16, 2026
d749a1b
docs(readme): update student outcomes for tp
Eric396 May 16, 2026
42546d2
feat(ui): add web application wireflows
VarBus May 16, 2026
32148c4
docs(readme): add prototyping for web application
Eric396 May 16, 2026
8c6d763
docs(readme): add version report for tp
Eric396 May 16, 2026
510bf8f
Merge pull request #44 from Kntro-Soft/feature/update-student-outcome…
Eric396 May 16, 2026
3286692
feat: add protoype
VarBus May 16, 2026
e853818
Merge branch 'develop' into feature/ui
Eric396 May 16, 2026
c55b218
feat(image): add web application protoype image
VarBus May 16, 2026
90365e8
Merge branch 'feature/ui' of https://github.com/Kntro-Soft/ReqsAI-Rep…
VarBus May 16, 2026
50e606c
Merge pull request #46 from Kntro-Soft/feature/ui
Eric396 May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
* @jhosepmyr

# ─── Cover page, Version History, and general structure ─────────────────────
README.md @jhosepmyr @Eric396
README.md @jhosepmyr @Eric396 @salimramirez @VarBus @Kyrubi

# ─── Brand & logos ──────────────────────────────────────────────────────────
assets/brand/ @Eric396
assets/brand/ @jhosepmyr

# ─── Team photos ────────────────────────────────────────────────────────────
assets/team/ @jhosepmyr
Expand All @@ -22,25 +22,28 @@ assets/team/ @jhosepmyr
assets/insights/ @jhosepmyr

# ─── Chapter I: Lean UX ─────────────────────────────────────────────────────
assets/lean-ux/ @Eric396
assets/lean-ux/ @jhosepmyr

# ─── Chapter II: Interviews ─────────────────────────────────────────────────
assets/interviews/ @salimramirez @VarBus
assets/interviews/ @jhosepmyr

# ─── Chapter II: User Research ──────────────────────────────────────────────
assets/user-research/ @Kyrubi @jhosepmyr
assets/user-research/ @jhosepmyr

# ─── Chapter IV: EventStorming ──────────────────────────────────────────────
assets/event-storming/ @Eric396 @jhosepmyr
assets/event-storming/ @jhosepmyr

# ─── Chapter IV: Domain-Driven Design ───────────────────────────────────────
assets/ddd/ @Eric396 @jhosepmyr
assets/ddd/ @jhosepmyr

# ─── Chapter IV: Software Architecture (C4) ─────────────────────────────────
assets/architecture/ @jhosepmyr

# ─── Chapter VI: Solution UX Design (wireframes, wireflows, mockups, style) ─
assets/ui/ @jhosepmyr

# ─── Annexes ────────────────────────────────────────────────────────────────
assets/annexes/ @VarBus @salimramirez
assets/annexes/ @jhosepmyr

# ─── Repository governance files ────────────────────────────────────────────
CHANGELOG.md @jhosepmyr
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/generate-pdf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,26 @@ jobs:
mv README.pdf ReqsAI-Report.pdf

- name: Upload artifact
id: upload
uses: actions/upload-artifact@v7
with:
name: ReqsAI-Report-PDF
path: ReqsAI-Report.pdf
retention-days: 90

- name: Job summary
run: |
echo "## ReqsAI Report — PDF generado" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| | |" >> $GITHUB_STEP_SUMMARY
echo "|---|---|" >> $GITHUB_STEP_SUMMARY
echo "| **Commit** | \`${{ github.sha }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| **Branch** | \`${{ github.ref_name }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| **Fecha** | $(date +'%Y-%m-%d %H:%M UTC') |" >> $GITHUB_STEP_SUMMARY
echo "| **Tamaño** | $(du -sh ReqsAI-Report.pdf | cut -f1) |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### [Descargar PDF](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY

- name: Attach to release (if tagged)
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v3
Expand Down
4,603 changes: 4,251 additions & 352 deletions README.md

Large diffs are not rendered by default.

Binary file removed assets/architecture/container-diagram.png
Binary file not shown.
Binary file removed assets/architecture/deployment-diagram.png
Binary file not shown.
Binary file removed assets/architecture/system-context.png
Binary file not shown.
Binary file removed assets/architecture/system-landscape.png
Binary file not shown.
Binary file modified assets/ddd/bounded-contexts.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
90 changes: 90 additions & 0 deletions assets/diagrams/architecture/container-diagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
@startuml container-diagram
!include ../c4/C4_Container.puml
!include ../c4/C4_Component.puml
!include ../styles/reqsai-palette.puml

HIDE_PERSON_SPRITE()

skinparam defaultFontName "Segoe UI"
skinparam shadowing false

UpdateElementStyle(person, $bgColor=$REQSAI_NAVY_800, $fontColor="#FFFFFF", $borderColor="#1A3A5C")
UpdateElementStyle(system_ext, $bgColor="#455A64", $fontColor="#FFFFFF", $borderColor="#263238")
UpdateElementStyle(container, $bgColor=$REQSAI_BLUE_700, $fontColor="#FFFFFF", $borderColor=$REQSAI_BLUE_800)
UpdateElementStyle(containerDb, $bgColor=$REQSAI_TEAL_800, $fontColor="#FFFFFF", $borderColor=$REQSAI_TEAL_900)
UpdateElementStyle(component, $bgColor=$REQSAI_BLUE_600, $fontColor="#FFFFFF", $borderColor=$REQSAI_BLUE_700)

AddContainerTag("edge", $bgColor="#37474F", $fontColor="#FFFFFF", $borderColor="#263238", $legendText="Edge / Routing Layer (AWS)")
AddContainerTag("frontend", $bgColor=$REQSAI_NAVY_800, $fontColor="#FFFFFF", $borderColor="#1A3A5C", $legendText="Frontend Application")

title Container Diagram -- ReqsAI (C4 Level 2)

' ── Actors ──────────────────────────────────────────────────────────
Person(techLead, "Technical Lead", "Inicia grabaciones y\naprueba historias de usuario.")
Person(analyst, "Enterprise Analyst", "Administra la organizacion\ny el plan de suscripcion.")

' ── Edge layer ──────────────────────────────────────────────────────
Container(cdn, "CDN & Reverse Proxy", "Amazon CloudFront", "Sirve los activos estaticos del SPA Angular\ndesde ubicaciones globales (Edge Locations),\ncachea respuestas, mitiga DDoS y enruta\nel trafico de API hacia el API Gateway.", $tags="edge")
Container(apiGw, "API Gateway", "AWS API Gateway", "Punto de entrada unificado para peticiones\nREST y WebSocket desde web y mobile.\nGestiona throttling, metricas y SSL.", $tags="edge")

' ── Frontends ────────────────────────────────────────────────────────
Container(web, "Web Application", "Angular", "SPA web principal. Revision de historias,\nconfiguracion de proyectos y administracion\nde la organizacion. Servida por CloudFront.", $tags="frontend")
Container(mobile, "Mobile App", "Flutter", "App movil multiplataforma (iOS/Android).\nGrabacion de reuniones y revision\nde requerimientos. Llama al API Gateway\ndirectamente (no pasa por CDN).", $tags="frontend")

' ── Backend: Monolito Modular ─────────────────────────────────────────
Container_Boundary(backend, "ReqsAI Backend Service [Java 25 + Spring Boot 4 -- Monolito Modular / Spring Modulith]") {

Component(iam, "IAM", "Spring Modulith Module", "Autenticacion JWT, registro de cuentas,\nverificacion de email, sesiones y\ngestion de perfil de usuario.")

Component(billing, "Billing & Subscriptions", "Spring Modulith Module", "Ciclo de vida de suscripciones, control de\ncuotas de tokens e integracion con\nla pasarela de pagos externa.")

Component(workspace, "Workspace Management", "Spring Modulith Module", "Organizaciones, proyectos, miembros, roles,\ndocumentos, glosarios y aplicacion de\nlimites de plan (Row Level Security).")

Component(discovery, "Requirement Discovery", "Spring Modulith Module", "Captura de audio, transcripcion STT,\nmotor RAG con embeddings y generacion\nde historias Gherkin via LLM.")

Component(gateway, "Integration Gateway", "Spring Modulith Module", "Exportacion de historias de usuario\naprobadas a herramientas externas\nde gestion de proyectos.")
}

' ── Database ─────────────────────────────────────────────────────────
ContainerDb(db, "Database", "PostgreSQL + pgvector\n[AWS RDS]", "Base de datos relacional administrada.\nLa extension pgvector habilita almacenamiento\nde embeddings vectoriales para el motor RAG.")

' ── External Systems ─────────────────────────────────────────────────
System_Ext(email, "Email Service Provider", "Correos transaccionales:\nverificacion, recuperacion, invitaciones.")
System_Ext(payment, "Payment Gateway", "Procesamiento de pagos B2B.\nEj: Stripe, Culqi, Mercado Pago.")
System_Ext(stt, "STT API", "Speech-to-Text: convierte audio\nen texto en tiempo real (< 2 seg).")
System_Ext(embedApi, "Embedding API", "Convierte texto en vectores para\nel indice RAG (pgvector). Ej: OpenAI\ntext-embedding-3-small, Cohere Embed.")
System_Ext(llm, "LLM API", "Large Language Model generativo.\nEj: GPT-4o, Claude, Gemini.")
System_Ext(pmtool, "Project Management API", "Crea issues automaticamente\nen el backlog. Ej: Jira, Trello, Linear.")

' ── Relations ────────────────────────────────────────────────────────
' Web: pasa por CDN
Rel(techLead, cdn, "Accede via navegador", "HTTPS")
Rel(analyst, cdn, "Accede via navegador", "HTTPS")
Rel(cdn, web, "Sirve SPA estatico", "HTTPS")
Rel(cdn, apiGw, "Enruta llamadas API", "HTTPS")
Rel(web, apiGw, "Llamadas API", "HTTPS / REST")

' Mobile: directo al API Gateway (app instalada desde App Store, no desde CDN)
Rel(techLead, mobile, "Usa app movil", "App Store / Play Store")
Rel(mobile, apiGw, "Llamadas API directas","HTTPS / REST + WebSocket")

Rel(apiGw, backend, "Enruta peticiones al monolito", "HTTPS / REST")

Rel(iam, db, "Lee y escribe", "JDBC / JPA")
Rel(billing, db, "Lee y escribe", "JDBC / JPA")
Rel(workspace, db, "Lee y escribe", "JDBC / JPA")
Rel(discovery, db, "Lee y escribe", "JDBC / JPA")
Rel(gateway, db, "Lee y escribe", "JDBC / JPA")

Rel(iam, email, "Envia correos transaccionales via", "REST API")
Rel(billing, payment, "Procesa pagos de suscripcion via", "REST API")
Rel(workspace, embedApi, "Vectoriza docs + glosario para RAG via", "REST API")
Rel(workspace, llm, "Procesa contenido de documentos via", "REST API")
Rel(discovery, stt, "Envia audio para transcripcion via", "REST / Streaming")
Rel(discovery, embedApi, "Vectoriza user stories generadas via", "REST API")
Rel(discovery, llm, "Infiere historias en Gherkin via", "REST API")
Rel(gateway, pmtool, "Exporta historias aprobadas via", "REST API")

SHOW_LEGEND()

@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
128 changes: 128 additions & 0 deletions assets/diagrams/architecture/deployment-diagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
@startuml deployment-diagram
!include ../styles/reqsai-palette.puml

skinparam defaultFontName "Segoe UI"
skinparam shadowing false
skinparam backgroundColor #FFFFFF
skinparam ArrowColor $REQSAI_ARROW
skinparam ArrowFontColor $REQSAI_NEUTRAL_800
skinparam ArrowFontSize 11

skinparam node {
BackgroundColor $REQSAI_NEUTRAL_100
BorderColor $REQSAI_NEUTRAL_600
FontColor $REQSAI_NEUTRAL_800
FontSize 12
FontStyle bold
}

skinparam artifact {
BackgroundColor $REQSAI_BLUE_700
BorderColor $REQSAI_BLUE_900
FontColor #FFFFFF
FontSize 11
}

skinparam database {
BackgroundColor $REQSAI_TEAL_800
BorderColor $REQSAI_TEAL_900
FontColor #FFFFFF
FontSize 11
}

skinparam component {
BackgroundColor $REQSAI_NAVY_800
BorderColor "#1A3A5C"
FontColor #FFFFFF
FontSize 11
}


title Deployment Diagram -- ReqsAI (C4 Level 4)

' ────────────────────────────────────────────────────────────────────
' CLIENT SIDE
' ────────────────────────────────────────────────────────────────────
node "Mobile Devices [iOS / Android]" as mobileDevices {
node "User Smartphone" as smartphone {
artifact "Mobile App\n[Flutter Engine]" as mobileApp
}
}

node "User Workstations [Windows / macOS / Linux]" as workstations {
node "Web Browser [Browser Runtime]" as browser {
artifact "Web Application\n[Angular SPA]" as webApp
}
}

' ────────────────────────────────────────────────────────────────────
' AWS EDGE LOCATION
' ────────────────────────────────────────────────────────────────────
node "AWS Edge Location [Amazon CloudFront]" as edgeLayer {
artifact "CDN & Reverse Proxy\n[Amazon CloudFront]\nSirve SPA estatico + enruta API" as cdn
}

' ────────────────────────────────────────────────────────────────────
' AWS NORTH AMERICA (us-east-1 — Virginia)
' ────────────────────────────────────────────────────────────────────
node "AWS North America [AWS Region us-east-1 (Virginia)]" as awsNorthAmerica {

node "API Gateway [AWS API Gateway]" as apiGatewayNode {
artifact "API Gateway\n[AWS API Gateway]\nRouting REST + WebSocket" as apiGw
}

node "ECS Cluster [AWS ECS + Fargate]" as ecsCluster {
component "ReqsAI Backend Service\n[Java 25 + Spring Boot 4 / Docker Container]\n\nModulos: IAM · Billing · Workspace\nRequirement Discovery · Integration Gateway" as backend
artifact "Grafana Alloy\n[Sidecar Container]\nColecta metricas, logs y trazas\ndel backend y los envia al\nservidor de observabilidad" as alloy
}

node "Observability Server [AWS EC2 + Docker Compose]" as obsServer {
component "Prometheus\n[Metricas]" as prometheus
component "Loki\n[Logs]" as loki
component "Tempo\n[Trazas distribuidas]" as tempo
component "Grafana\n[Dashboards]" as grafana
}
}

' ────────────────────────────────────────────────────────────────────
' AWS RDS
' ────────────────────────────────────────────────────────────────────
node "AWS RDS [Managed Relational Database]" as dbNode {
database "PostgreSQL + pgvector\n[ReqsAI Main Database]" as db
}

' ────────────────────────────────────────────────────────────────────
' RELATIONS
' ────────────────────────────────────────────────────────────────────
' Web: pasa por CloudFront
webApp --> cdn : "HTTPS"
cdn --> webApp : "Sirve SPA estatico\n(Edge Locations)"
cdn --> apiGw : "Enruta trafico API\nHTTPS"

' Mobile: directo al API Gateway (app instalada, no servida por CDN)
mobileApp --> apiGw : "Llamadas API directas\nHTTPS / REST + WebSocket"

apiGw --> backend : "Route all requests\nHTTPS / REST"

' Observabilidad: Alloy como sidecar recolecta del backend
backend --> alloy : "Metricas /actuator/prometheus\nLogs stdout · Trazas OTLP"
alloy --> prometheus : "Push metricas\nRemote Write"
alloy --> loki : "Push logs"
alloy --> tempo : "Push trazas\nOTLP"
grafana --> prometheus : "Query metricas\nPromQL"
grafana --> loki : "Query logs\nLogQL"
grafana --> tempo : "Query trazas\nTraceQL"

' Persistencia
backend --> db : "Reads and writes\nJDBC / JPA"

legend bottom right
|= Elemento |= Descripcion |
|<back:$REQSAI_NEUTRAL_100><color:$REQSAI_NEUTRAL_800><b> Nodo </b></color></back> | Infraestructura / entorno de despliegue |
|<back:$REQSAI_BLUE_700><color:#FFFFFF><b> Artefacto </b></color></back> | Aplicacion o servicio desplegado |
|<back:$REQSAI_NAVY_800><color:#FFFFFF><b> Componente </b></color></back> | Modulo de aplicacion (Spring Modulith) |
|<back:$REQSAI_TEAL_800><color:#FFFFFF><b> Base de datos </b></color></back> | Almacenamiento relacional (PostgreSQL) |
| -> | Comunicacion entre nodos |
endlegend

@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading