A public message form with private-by-default moderation, backed by Django, PostgreSQL, Redis and Celery and deployed automatically through the Project Graphite hosting path.
Follow-up fixes keep unsent message text out of URLs, raise faint text to WCAG AA contrast and add a health check for the production Celery worker. The favicon and header now carry the Project Graphite mark.
security
The message form posts its data, so unsent message text never reaches the URL or access logs when the page script fails to loadd24b42d · AmrMsCLL
added
The production Celery worker has a health check that pings it every 60 seconds4395fe1 · AmrMsCLL
changed
The favicon and header tile use the Project Graphite pencil-A markb3a63a5 · AmrMsCLL
fixed
Faint text meets WCAG AA contrastf21247e · AmrMsCLL
An audit pass closed gaps that could put private or flagged messages on the public wall, made the wall resilient to failed requests, and moved the site and admin onto the shared Graphite theme.
security
Messages that never requested publication can no longer be published to the wall, and a flagged display name now keeps a message private402cad8 · AmrMsCLL
changed
The site and the admin use the Graphite dark theme with a single SVG favicon in place of the upstream favicon kitcfaa1a1 · AmrMsCLL
fixed
A failed refresh keeps the messages already on the wall and shows a styled notice, form errors fall back to a readable message, screen readers no longer re-announce the wall on every refresh, and the header wraps at phone width35c51dc · AmrMsCLL
Docker Compose honours the documented APP_UID, APP_GID and CELERY_LOG_LEVEL settingsbd75c15 · AmrMsCLL
removed
DATABASE_URL is no longer read; PostgreSQL is configured only through the POSTGRES_* variables4017ed6 · AmrMsCLL
Message Lab went live at message-lab.project-graphite.com, deployed by Coolify from a production Compose stack that redeploys automatically after each successful push to main. Messages are now private by default and reach the public wall only after an administrator publishes them.
added
Production Compose stack that pulls the prebuilt GHCR images, limits CPU and memory, persists PostgreSQL and Redis in named volumes and runs migrations before Gunicorn starts95754e0 · AmrMsCLL
Trusted CSRF origins, HTTPS detection behind the proxy and secure cookies outside debug mode95754e0 · AmrMsCLL
Every successful push to main redeploys production through the Coolify deployment webhookd99ffc5 · AmrMsCLL
Visitors choose between Private and Public after review, every message lands in a private inbox, and only messages an administrator publishes appear on the public wall5b53693 · AmrMsCLL
The admin inbox shows each message's requested visibility and moderation flag, with bulk actions to publish messages or make them private5b53693 · AmrMsCLL
Messages containing flagged language are marked for moderation and always stay private5b53693 · AmrMsCLL
The project is registered in Project Graphite as a live, listed application4f4b04e · AmrMsCLL
changed
Production now runs as a Coolify-managed Docker Compose application instead of on Kubernetes95754e0 · AmrMsCLL
The first version of the lab: visitors post a short message, Django stores it in PostgreSQL, and a Celery worker processes it in the background while the page polls for the result. It ships with a local Docker Compose setup and container images published to GitHub Container Registry.
added
Visitors can post a message with their name from the browser and watch it appear on a feed that refreshes from the JSON API at /api/messages/2c96953 · AmrMsCLL
A Celery worker picks up each new message through Redis, counts its words and marks it processed2c96953 · AmrMsCLL
Health endpoints at /up/ and /up/databases report whether the app, PostgreSQL and Redis are reachable2c96953 · AmrMsCLL
Docker Compose setup for local development, with CI that publishes immutable web and worker images to GitHub Container Registry on every push to main2c96953 · AmrMsCLL
Production resources are generated for Kubernetes from the platform registry entry, with Docker Compose kept for local development only2973625 · AmrMsCLL