2026 · Freelance · took over & rebuilt
Mixórdia
A signup portal for an electronic-music events brand, inherited as a half-built React + Flask project, rebuilt on Supabase, and turned into a full CRT-television experience: a power-on boot sequence, scanlines and flicker running through the whole site.
context
Mixórdia runs electronic-music events in Brazil and abroad, and needed a site to turn visitors into subscribers. Another developer had started it (a React front end, a Flask server and a gallery pulled from Google Drive), and the TV-screen look was already part of the brand.
I took the project over in March 2026 and rebuilt it end to end: a new Supabase data layer, a signup flow with LGPD consent, a page for the brand's own rituals, recordings and merch, a partner directory, and the TV power-on intro and CRT effects we wanted as part of Mixórdia's identity.
stack
decisions
Replace the Flask server with Supabase
- considered
- Keeping the inherited Flask backend and the Google Drive gallery.
- why
- A marketing site shouldn't need a server to host and babysit. Supabase gives the database, file storage and a function runtime in one place, so I could delete the backend entirely.
Signups go through one locked-down function
- considered
- Row-level-security policies that let the public key insert into the subscribers table.
- why
- The public key ships to every browser. All signups go through one
subscribe_followerRPC (SECURITY DEFINER), and a later migration explicitly revokes direct INSERT and UPDATE onfollowersfor the public key, so a compromised frontend key still can't write anything by itself.
One table drives three sections of the site
- considered
- A separate table, or a separate CMS collection, for events, recordings and merch.
- why
- The three sections (rituals, recordings, merch) are the same shape: a name, a description, a link, an image, a toggle to show or hide it. One
highlightstable with atypecolumn routes each row to its section, so a new kind of content later means adding a value to an enum, not a new table and a new page. Same instinct as the config-driven queues I build at PicPay, aimed at a marketing site instead of a fraud workspace.
outcome
- ▸Live at mixordiamusic.com on Vercel, with a protected preview environment on a separate branch, so the site can keep evolving and new features get tested before they reach production.
- ▸Signup with LGPD consent capture, de-duplicated by CPF (or by email for foreign visitors), and a welcome email sent through Resend.
- ▸The owner runs the site themselves: an operations manual with two embedded tools, a UTM link builder and SQL insert generators for partners and highlights, means adding content never requires writing SQL by hand or asking me for a deploy.
- ▸Every signup records which campaign and channel brought it in, so the team can tell which Instagram story or WhatsApp broadcast actually turns into subscribers, not just clicks.
- ▸Bilingual in Portuguese and English, matching an audience that spans Brazil and events abroad.