e9373c2Initial integrated workflow
The MVP connected submission, scheduling, storage and downstream delivery.
ResultSubmission tasks moved into one interface.
01 / Evolution through code
Selected production milestones from the repository history.
e9373c2The MVP connected submission, scheduling, storage and downstream delivery.
ResultSubmission tasks moved into one interface.
0012630A concentrated week of presigning, route, memory and transfer changes responded to the realities of large audio on serverless infrastructure.
ResultMedia no longer travelled through the application server.
c19eea2Mixcloud publishing extended Console beyond broadcast delivery into archive publishing.
ResultSubmissions could be published from the admin interface.
4521578Multipart retries, failure telemetry and adaptive part sizing made long uploads recoverable rather than opaque.
ResultFailures became observable states with recovery paths.
aaa4f73Confirmation email and daily schedule-readiness reporting gave operators visibility outside the dashboard.
ResultThe product became an operational feedback loop.
09baa9cInvitation-only passwordless access aligned producer identity with the schedule while keeping public signup closed.
ResultAccess became easier for residents and safer to operate.
becd889Calendar and social publishing joined artwork, Mixcloud and Webflow in a wider orchestration layer.
ResultConsole now coordinates more of the episode journey.
02 / Development intensity
Production branch activity from February to October 2026.
03 / Architecture
The systems involved from show selection to delivery and reporting.
Console reads upcoming occurrences and matches them to the authenticated producer.
Google Calendar → Supabase AuthThe browser uploads audio and artwork directly using short-lived presigned instructions.
Browser → Cloudflare R2Console validates metadata, stores the submission record and tracks each delivery state separately.
Next.js → SupabaseAudio is streamed from staging storage to the producer folder and scheduled for airing.
R2 → FTP → CentovaA durable workflow publishes the episode and reconciles the resulting archive records.
Mixcloud → WebflowConfirmation, partial failures and schedule readiness are reported to residents and operators.
Supabase → Resend04 / Decision log
Decisions addressing media size, external dependencies and partial failure.
ConstraintAudio files can reach 900 MB, beyond a sensible serverless request path.
DecisionThe browser uploads to R2 with short-lived presigned instructions, then submits only object keys and metadata.
ConsequenceLower server load and fewer request-size failures, with more client-side orchestration to manage.
ConstraintFTP, Drive, database and email delivery can succeed or fail independently.
DecisionPersist destination-level outcomes instead of reducing the workflow to one success boolean.
ConsequenceOperators can see what completed, recover what did not and avoid repeating successful work.
ConstraintA browser request is the wrong lifetime for uploading and reconciling a long Mixcloud publication.
DecisionStart a retryable background workflow and make reconciliation and cleanup separate steps.
ConsequenceNavigation cannot interrupt publishing, and cleanup failure cannot erase a successful publication.