mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
docs: update architecture — 47 tools, user file library, teams, branding, runtime settings
This commit is contained in:
@@ -46,13 +46,16 @@ Shared TypeScript types, constants (like `APP_VERSION` and tool definitions), an
|
||||
|
||||
### API (`apps/api`)
|
||||
|
||||
A Fastify v5 server that handles:
|
||||
A Fastify v5 server exposing 47 tool routes (34 standard image operations + 13 AI-powered) that handles:
|
||||
- File uploads, temporary workspace management, and persistent file storage
|
||||
- User file library with version chains (`user_files` table) -- each processed result links back to its source file and records which tool was applied, with auto-generated thumbnails for the Files page
|
||||
- Tool execution (routes each tool request to the image engine or AI bridge)
|
||||
- Pipeline orchestration (chaining multiple tools sequentially)
|
||||
- Batch processing with concurrency control via p-queue
|
||||
- User authentication, teams, API key management, and rate limiting
|
||||
- Admin settings (tool visibility, feature flags, cleanup config, branding)
|
||||
- User authentication, RBAC (admin/user roles with a full permission set), API key management, and rate limiting
|
||||
- Teams management -- admin-only CRUD; users are assigned to a team via the `team` field on their profile
|
||||
- Runtime settings -- a key-value store in the `settings` table that controls `disabledTools`, `enableExperimentalTools`, `loginAttemptLimit`, and other operational knobs without redeploying
|
||||
- Custom branding -- logo upload endpoint; the uploaded image is stored at `data/branding/logo.png` and served to the frontend
|
||||
- Swagger/OpenAPI documentation at `/api/docs`
|
||||
- Serving the built frontend as a SPA in production
|
||||
|
||||
|
||||
Reference in New Issue
Block a user