50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
# Carrramba-encore-rate
|
|
# 🚧 Carrramba-encore-rate 🚧
|
|
|
|
|
|
[](medias/presentation.mp4)
|
|
```plantuml
|
|
@startuml
|
|
!include <C4/C4_Container>
|
|
|
|
!define ICONURL https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/v2.4.0
|
|
!includeurl ICONURL/common.puml
|
|
|
|
!includeurl ICONURL/font-awesome-5/users.puml
|
|
!includeurl ICONURL/devicons2/redis.puml
|
|
!includeurl ICONURL/devicons2/sqlalchemy.puml
|
|
!includeurl ICONURL/devicons2/postgresql.puml
|
|
|
|
title Carrramba-encore-rate - Back-end
|
|
|
|
LAYOUT_WITH_LEGEND()
|
|
|
|
Person(user, "User", "The service user", $sprite="users")
|
|
|
|
System_Boundary(cb1, "carrramba-encore-rate") {
|
|
Container(app, "SPA", "SolidJS", "The graphical interface used by users to consume services provided")
|
|
Container(api, "carrramba-encore-rate-api", "FastAPI / SQLAlchemy", "Provides the functionalities serving API endpoints", $sprite="sqlalchemy")
|
|
ContainerDb(db, "Postgres", "PostgreSQL database", "Stores stops/stop areas/lines/shapes and associations information.", $sprite="postgresql")
|
|
ContainerDb(cache, "In-Memory cache", "Redis", "Store previously computed results (stop, line, destination, next passages, shapes).", $sprite="redis")
|
|
|
|
Container(db_updater, "db-updater", "Sync the service static data with the IDFM ones")
|
|
}
|
|
|
|
System_Boundary(idfm, "IDFM") {
|
|
Container_Ext(static_, "Static data")
|
|
Container_Ext(dynamic_, "Dynamic data")
|
|
}
|
|
|
|
Rel(user, app, "Uses")
|
|
|
|
Rel(app, api, "Uses", "JSON/HTTPS")
|
|
|
|
Rel_R(api, db, "Reads from", "sync, PSQL")
|
|
Rel_L(api, cache, "Reads from and writes to", "sync, REdis Serialization Protocol")
|
|
Rel(api, dynamic_, "Get next passages", "JSON/HTTPS")
|
|
|
|
Rel_L(db_updater, db, "Writes to", "sync, PSQL")
|
|
Rel(db_updater, static_, "Get stops, lines andshapes")
|
|
@enduml
|
|
```
|