1+
2+ @startuml Elysium System Component Diagram
3+ !theme cerulean - outline
4+ !define FONTAWESOME https ://raw . githubusercontent . com /tupadr3 /plantuml - icon - font - sprites /master /font - awesome - 5
5+ !include FONTAWESOME /users . puml
6+ !include FONTAWESOME /database . puml
7+ !include FONTAWESOME /server . puml
8+ !include FONTAWESOME /cogs . puml
9+
10+ skinparam componentStyle rectangle
11+ skinparam backgroundColor transparent
12+ skinparam defaultTextAlignment center
13+ skinparam wrapWidth 200
14+ skinparam maxMessageSize 150
15+
16+ skinparam component {
17+ BackgroundColor #f5f5f5
18+ BorderColor #3498db
19+ ArrowColor #2c3e50
20+ FontColor #2c3e50
21+ BorderThickness 2
22+ FontSize 14
23+ }
24+ !define RECTANGLE class
25+
26+ skinparam componentStyle uml2
27+ skinparam component {
28+ BackgroundColor White
29+ BorderColor Black
30+ ArrowColor Black
31+ }
32+
33+ package "Elysium Frontend" <<Rectangle >> {
34+ [<<component >>\nReact Application ] as ReactApp
35+ [<<component >>\nAPI Service ] as ApiService
36+ [<<component >>\nAuthentication Module ] as AuthModule
37+ [<<component >>\nReservas Module ] as ReservasModule
38+ [<<component >>\nUsuarios Module ] as UsuariosModule
39+ [<<component >>\nSalones Module ] as SalonesModule
40+ [<<component >>\nState Management ] as StateManagement
41+ }
42+
43+ package "Elysium Backend" <<Rectangle >> {
44+ package "API Layer" {
45+ [<<component >>\nAuthController ] as AuthController
46+ [<<component >>\nUsuarioController ] as UsuarioController
47+ [<<component >>\nReservaController ] as ReservaController
48+ }
49+
50+ package "Service Layer" {
51+ [<<component >>\nUsuarioService ] as UsuarioService
52+ [<<component >>\nReservaService ] as ReservaService
53+ [<<component >>\nCustomUserDetailsService ] as UserDetailsService
54+ }
55+
56+ package "Repository Layer" {
57+ [<<component >>\nUsuarioRepository ] as UsuarioRepository
58+ [<<component >>\nSalonRepository ] as SalonRepository
59+ [<<component >>\nReservaRepository ] as ReservaRepository
60+ }
61+
62+ package "Security" {
63+ [<<component >>\nSecurityConfig ] as SecurityConfig
64+ [<<component >>\nJwtRequestFilter ] as JwtFilter
65+ [<<component >>\nJwtUtil ] as JwtUtil
66+ }
67+
68+ package "Domain Model" {
69+ [<<component >>\nUsuario ] as Usuario
70+ [<<component >>\nSalon ] as Salon
71+ [<<component >>\nReserva ] as Reserva
72+ [<<component >>\nDTOs ] as DTOs
73+ }
74+
75+ package "Configuration" {
76+ [<<component >>\nMongoConfig ] as MongoConfig
77+ }
78+ }
79+
80+ cloud "External Systems" {
81+ database "MongoDB Atlas" as MongoDB {
82+ [ReservasECIHades DB ] as DB
83+ }
84+ }
85+
86+ ' Frontend internal relationships
87+ ReactApp --> ApiService : uses
88+ ReactApp --> AuthModule : uses
89+ ReactApp --> ReservasModule : uses
90+ ReactApp --> UsuariosModule : uses
91+ ReactApp --> SalonesModule : uses
92+ AuthModule --> ApiService : uses
93+ ReservasModule --> ApiService : uses
94+ UsuariosModule --> ApiService : uses
95+ SalonesModule --> ApiService : uses
96+ ReactApp --> StateManagement : uses
97+
98+ ' Backend controller to service relationships
99+ AuthController --> UserDetailsService : uses
100+ AuthController --> JwtUtil : uses
101+ UsuarioController --> UsuarioService : uses
102+ ReservaController --> ReservaService : uses
103+
104+ ' Security relationships
105+ SecurityConfig --> JwtFilter : configures
106+ JwtFilter --> UserDetailsService : validates with
107+ JwtFilter --> JwtUtil : validates tokens with
108+
109+ ' Service to repository relationships
110+ UsuarioService --> UsuarioRepository : uses
111+ UsuarioService --> ReservaService : uses
112+ ReservaService --> ReservaRepository : uses
113+ UserDetailsService --> UsuarioRepository : uses
114+
115+ ' Repository to model relationships
116+ UsuarioRepository --> Usuario : manages
117+ SalonRepository --> Salon : manages
118+ ReservaRepository --> Reserva : manages
119+ UsuarioService --> DTOs : transforms
120+
121+ ' Database connections
122+ MongoConfig --> DB : configures
123+ UsuarioRepository --> DB : persists to
124+ SalonRepository --> DB : persists to
125+ ReservaRepository --> DB : persists to
126+
127+ ' Frontend-Backend communication
128+ ApiService -0 )- AuthController : HTTP/POST /api/login
129+ ApiService -0 )- AuthController : HTTP/POST /api/register
130+ ApiService -0 )- UsuarioController : HTTP/GET /api/usuarios
131+ ApiService -0 )- UsuarioController : HTTP/POST /api/usuarios
132+ ApiService -0 )- UsuarioController : HTTP/POST /api/usuarios/{id}/reservas
133+ ApiService -0 )- UsuarioController : HTTP/POST /api/usuarios/salones/{id}
134+ ApiService -0 )- UsuarioController : HTTP/GET /api/usuarios/{id}/reservas
135+
136+ ' Interfaces
137+ interface " " as AuthInterface
138+ interface " " as UserInterface
139+ interface " " as ReservaInterface
140+
141+ AuthController -- AuthInterface
142+ ApiService )-- AuthInterface
143+
144+ UsuarioController -- UserInterface
145+ ApiService )-- UserInterface
146+
147+ ReservaController -- ReservaInterface
148+ ApiService )-- ReservaInterface
149+
150+ @enduml
0 commit comments