# Carrramba-encore-rate # 🚧 Carrramba-encore-rate 🚧 [![Presentation](medias/presentation.png)](medias/presentation.mp4) ```plantuml @startuml !include !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 ```