deedlit.dev
monorepo · npm workspace + FastAPI mesh

deedlit.dev

A generated-image library and landing site — an npm-workspace frontend over a mesh of standalone FastAPI services, sharing one @carneirofc/ui component system.

Explore Storybook View on GitHub

Web apps · npm workspace

Three frontends, one design system

Two Next.js apps and the shared component library they both consume. Every app talks only to the deedlit.api gateway.

deedlit.dev

:3001

Public Next.js site — home hub, reference book shelf, image gallery and self-hosted service links.

Source →

comfyhelper

:3000

ComfyHelper UI for the image library — hybrid search, tag/safety filters, a Neo4j graph filter and an ingestion admin.

Source →

@carneirofc/ui

lib

Shared, app-agnostic component library and the cyber/neon design system backing both apps — documented live in Storybook.

Open Storybook →

Backend · FastAPI mesh

Database-per-service, HTTP-only

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.

api

:8088

Gateway / BFF: aggregate detail pages, host MCP, dispatch ingest jobs.

catalog

:8001
owns · Postgres + RustFS

Canonical images, tags, params, references, ratings, notes, collections, thumbnails, cached vectors.

search

:8002
owns · Qdrant

Dense (CLIP) + sparse (SPLADE) hybrid vector search.

graph

:8003
owns · Neo4j

Shared-asset, tag co-occurrence and lineage edges.

ingest

:8004

Scan, hash, thumbnail; publishes the per-stage ingest DAG over RabbitMQ.

metadata

:8005

Bytes → embedded prompt / tags / params + resolved reference graph.

labelagent

:8006

Vision-LLM describe / safety / tags via a local llama-server.

vision

:8000

CLIP dense + SPLADE sparse embeddings (GPU).

Architecture

A queue-driven ingest DAG

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.

1 · Produce

folder-scan per file: sha · phash · thumb · metadata
catalog POST /images → VISIBLE

2 · Fan-out (choreography)

embed.dense · GPU
embed.sparse
index.graph
label · vision-LLM

3 · Fan-in & project

index.search both blobs present → upsert Qdrant point
catalog is the latch rebuildable projections converge
Postgres Neo4j Qdrant RustFS S3 RabbitMQ Redis Grafana · Loki · Tempo

Full design in IMAGE_LIBRARY.md, the ingest ADRs (0001, 0002) and the repo README.

Screens

The apps in motion

The public site, the ComfyHelper library and the shared component catalog — all built from @carneirofc/ui.

@carneirofc/ui Storybook
@carneirofc/ui — live Storybook
deedlit.dev home / services hub
deedlit.dev — home & services hub
deedlit.dev image gallery
deedlit.dev — image gallery
deedlit.dev reference shelf
deedlit.dev — reference shelf
ComfyHelper backend admin
ComfyHelper — backend admin