What it does: Upload an image → Celery worker picks it up → sends to OpenAI Vision API → tags get saved to PostgreSQL. Takes about 10 seconds, costs ~$0.004/image.
Why I built it this way:
I kept running into the same architecture decisions at work (swapping providers, handling async tasks, testing background workers) but never had full context. Building end-to-end gave me that.
The hardest bug: my tests were passing but production failed. Turned out BackgroundTasks grab new database sessions, so the worker couldn't see test data. Took 45 minutes to figure out it was a code duplication issue between my app and worker initialization.
Stack: FastAPI, PostgreSQL, MinIO (S3-compatible), Celery, Redis, Docker
Try it: https://chitram.io
Source: https://github.com/abhi10/chitram
Blog series documenting the build: https://araju.dev/blog
I'm an AI Automation engineer looking for my next role. Happy to answer questions about the architecture or the debugging rabbit holes I fell into.
loading...