-
Notifications
You must be signed in to change notification settings - Fork 0
Design
Kevin McWhirter edited this page Oct 27, 2023
·
2 revisions
This project is a component in the huntwords solution.
Huntwords is a word search puzzle editor and player written in Typescript using SolidJS.
It relies on services (written in Python) exposed to edit puzzles, and generate the puzzle boards.
For this version the focus is on composition using services using docker-compose; deploying into OMV6 (on RPi 4b cluster).
Component | API | Purpose |
---|---|---|
➡️ redis
|
provide storage infrastructure used by api
|
|
➡️ manager
|
CLI for managing the cache - initialization, export, import, etc. | |
➡️ huntwords (nginx)
|
Reverse proxy serving as an API Gateway (single stop shop for client). Also serves up static content for the huntwords component (SolidJS UI) | |
➡️ api
|
✅ | API for managing puzzle definitions and retrieving puzzle boards from cache (Python) |
puzzle-updated |
Updates puzzle - receives messages from manager
|
|
puzzles |
Returns list of defined puzzles | |
puzzleboard_consumed |
Generates and caches puzzle boards - receives messages from api as PuzzleBoards are delivered | |
puzzleboard_pop |
Returns next available puzzle board for puzzle - sends async puzzleboard_consumed message via api |
/--------> puzzle-updated (python) -->\
| |
|--------> puzzles (python) -->\
| |
|--> puzzleboard-consumed (python) -->\
| ^ |
|--------> puzzleboard_pop (python) -->\
| ^ |
\---------------| |
nginx ---> / --------> api (python) -->\ ---> (redis)
API Gateway | ^
(huntwords) \ ---> manager (python cli)