-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcomponents.puml
More file actions
129 lines (107 loc) · 3.86 KB
/
components.puml
File metadata and controls
129 lines (107 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
@startuml Elysium System Component Diagram
!define RECTANGLE class
skinparam componentStyle uml2
skinparam component {
BackgroundColor White
BorderColor Black
ArrowColor Black
}
package "Elysium Frontend" <<Rectangle>> {
[<<component>>\nReact Application] as ReactApp
[<<component>>\nAPI Service] as ApiService
[<<component>>\nAuthentication Module] as AuthModule
[<<component>>\nReservas Module] as ReservasModule
[<<component>>\nUsuarios Module] as UsuariosModule
[<<component>>\nSalones Module] as SalonesModule
[<<component>>\nState Management] as StateManagement
}
package "Elysium Backend" <<Rectangle>> {
package "API Layer" {
[<<component>>\nAuthController] as AuthController
[<<component>>\nUsuarioController] as UsuarioController
[<<component>>\nReservaController] as ReservaController
}
package "Service Layer" {
[<<component>>\nUsuarioService] as UsuarioService
[<<component>>\nReservaService] as ReservaService
[<<component>>\nCustomUserDetailsService] as UserDetailsService
}
package "Repository Layer" {
[<<component>>\nUsuarioRepository] as UsuarioRepository
[<<component>>\nSalonRepository] as SalonRepository
[<<component>>\nReservaRepository] as ReservaRepository
}
package "Security" {
[<<component>>\nSecurityConfig] as SecurityConfig
[<<component>>\nJwtRequestFilter] as JwtFilter
[<<component>>\nJwtUtil] as JwtUtil
}
package "Domain Model" {
[<<component>>\nUsuario] as Usuario
[<<component>>\nSalon] as Salon
[<<component>>\nReserva] as Reserva
[<<component>>\nDTOs] as DTOs
}
package "Configuration" {
[<<component>>\nMongoConfig] as MongoConfig
}
}
cloud "External Systems" {
database "MongoDB Atlas" as MongoDB {
[ReservasECIHades DB] as DB
}
}
' Frontend internal relationships
ReactApp --> ApiService : uses
ReactApp --> AuthModule : uses
ReactApp --> ReservasModule : uses
ReactApp --> UsuariosModule : uses
ReactApp --> SalonesModule : uses
AuthModule --> ApiService : uses
ReservasModule --> ApiService : uses
UsuariosModule --> ApiService : uses
SalonesModule --> ApiService : uses
ReactApp --> StateManagement : uses
' Backend controller to service relationships
AuthController --> UserDetailsService : uses
AuthController --> JwtUtil : uses
UsuarioController --> UsuarioService : uses
ReservaController --> ReservaService : uses
' Security relationships
SecurityConfig --> JwtFilter : configures
JwtFilter --> UserDetailsService : validates with
JwtFilter --> JwtUtil : validates tokens with
' Service to repository relationships
UsuarioService --> UsuarioRepository : uses
UsuarioService --> ReservaService : uses
ReservaService --> ReservaRepository : uses
UserDetailsService --> UsuarioRepository : uses
' Repository to model relationships
UsuarioRepository --> Usuario : manages
SalonRepository --> Salon : manages
ReservaRepository --> Reserva : manages
UsuarioService --> DTOs : transforms
' Database connections
MongoConfig --> DB : configures
UsuarioRepository --> DB : persists to
SalonRepository --> DB : persists to
ReservaRepository --> DB : persists to
' Frontend-Backend communication
ApiService -0)- AuthController : HTTP/POST /api/login
ApiService -0)- AuthController : HTTP/POST /api/register
ApiService -0)- UsuarioController : HTTP/GET /api/usuarios
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios/{id}/reservas
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios/salones/{id}
ApiService -0)- UsuarioController : HTTP/GET /api/usuarios/{id}/reservas
' Interfaces
interface " " as AuthInterface
interface " " as UserInterface
interface " " as ReservaInterface
AuthController -- AuthInterface
ApiService )-- AuthInterface
UsuarioController -- UserInterface
ApiService )-- UserInterface
ReservaController -- ReservaInterface
ApiService )-- ReservaInterface
@enduml