init commit

This commit is contained in:
2025-11-02 01:14:41 -05:00
commit 7bf81109b3
31 changed files with 2387 additions and 0 deletions

51
docs/arch.md Normal file
View File

@@ -0,0 +1,51 @@
## Services & responsibilities
* **Caddy API Gateway**
* Edge routing for `/auth`, `/api`, `/ai`, `/vec`.
* TLS termination behind Cloudflare; preserves real client IP; gzip/br.
* Pass-through for SSE/WebSocket; access logging.
* **Front End (Flask)**
* Player Registration / Auth via SSR with Appwrite
* Player UX for character management, sessions, chat.
* Uses REST for CRUD; SSE/WebSocket for live DM replies/typing.
* **Auth Service (AppWrite)**
* Registration, login, refresh; JWT issuance/validation.
* Owns player identity and credentials.
* Simple rate limits via Redis.
* **Game API (Flask)**
* Core game domain (characters, sessions, inventory, rules orchestration).
* Persists messages; orchestrates retrieval and AI calls.
* Streams DM replies to clients (SSE/WebSocket).
* Generates pre-signed URLs for Garage uploads/downloads.
* **AI-DM Service (Flask)**
* Thin, deterministic wrapper around **Replicate** models (prompt shaping, retries, timeouts).
* Optional async path via job queue if responses are slow.
* **Embeddings Service (Flask)**
* Text → vector embedding (chosen model) and vector writes.
* KNN search API (top-K over `pgvector`) for context retrieval.
* Manages embedding version/dimension; supports re-embed workflows.
* **Postgres 16 + pgvector**
* Single source of truth for auth & game schemas.
* Stores messages with `vector` column; IVF/HNSW index for similarity.
* **Garage (S3-compatible)**
* Object storage for player assets (character sheets, images, exports).
* Access via pre-signed URLs (private buckets by default).
* **Redis**
* Caching hot reads (recent messages/session state).
* Rate limiting tokens; optional Dramatiq broker for long jobs.
---