A generated-image library and landing site — an npm-workspace frontend
over a mesh of standalone FastAPI services, sharing one
@carneirofc/ui component system.
Web apps · npm workspace
Two Next.js apps and the shared component library they both consume.
Every app talks only to the deedlit.api gateway.
Public Next.js site — home hub, reference book shelf, image gallery and self-hosted service links.
Source →ComfyHelper UI for the image library — hybrid search, tag/safety filters, a Neo4j graph filter and an ingestion admin.
Source →Shared, app-agnostic component library and the cyber/neon design system backing both apps — documented live in Storybook.
Open Storybook →Backend · FastAPI mesh
Each service is the sole writer of its datastore and they never call each
other — search and graph are rebuildable
projections of catalog, the canonical truth.
Gateway / BFF: aggregate detail pages, host MCP, dispatch ingest jobs.
Canonical images, tags, params, references, ratings, notes, collections, thumbnails, cached vectors.
Dense (CLIP) + sparse (SPLADE) hybrid vector search.
Shared-asset, tag co-occurrence and lineage edges.
Scan, hash, thumbnail; publishes the per-stage ingest DAG over RabbitMQ.
Bytes → embedded prompt / tags / params + resolved reference graph.
Vision-LLM describe / safety / tags via a local llama-server.
CLIP dense + SPLADE sparse embeddings (GPU).
Architecture
Ingest is fully queue-driven over RabbitMQ as a per-stage DAG — the catalog write is the durability boundary, and projections converge via idempotent rebuilds. The cross-service id is the SHA-256 of the image bytes.
Full design in IMAGE_LIBRARY.md, the ingest ADRs (0001, 0002) and the repo README.
Screens
The public site, the ComfyHelper library and the shared component
catalog — all built from @carneirofc/ui.