Reviewed: 2026-08-19
Develop this into an observable product-inventory CSV import pipeline. Use the project to learn Celery with local Supabase Auth, Storage, Postgres, Realtime, and row-level security.
- Demonstrates asynchronous workflow design, durable job state, retries, idempotency, progress reporting, and user isolation.
- Provides a real workload that can later become the sample application for
../observability-platform/.
- Small web dashboard for login, CSV upload, live progress, and row errors.
- Fixed product schema using SKU, name, price, and quantity.
- Supabase Auth for users and row-level security.
- Supabase Storage for uploaded CSV files.
- Supabase Postgres for jobs, products, and validation failures.
- Supabase Realtime for job-level progress.
- Redis database 0 as the Celery broker and database 1 as the temporary result backend.
- OpenTelemetry traces and metrics across API, queue, worker, and Supabase calls.
- Do not install RabbitMQ for the first version. Redis is already available locally and is sufficient to validate the workflow with fewer moving parts.
- Add RabbitMQ later as an optional broker-comparison profile if its delivery, routing, or operational behavior is specifically being studied.
- Do not containerize the whole system before the local workflow works.
- Keep local Supabase managed by
supabase start; do not package Supabase into the application container. - Later Compose packaging should use separate services for the API, Celery worker, Redis, and optional Flower/Beat. RabbitMQ remains optional.
- Replace arithmetic tasks with a tested product-row validation function.
- Clean dependencies and read Celery/Supabase configuration from environment variables.
- Define Supabase tables, Storage bucket, Auth flow, and RLS policies.
- Add the FastAPI job-creation and status endpoints.
- Implement CSV upload and the Redis-backed Celery import workflow.
- Add idempotent product upserts, retries, row errors, and durable job progress.
- Build the small dashboard and subscribe to job progress through Realtime.
- Add OpenTelemetry tracing, structured logs, metrics, and failure tests.
- Containerize the API and worker, then add Redis and optional monitoring services to Compose.
- Evaluate RabbitMQ only after the Redis-based version is complete and measured.
Publish after the local workflow is reproducible, authenticated, tested, and observable. It can then serve as the workload for the consolidated observability platform.