cd ../projects

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.

Mixórdia

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

ReactSupabaseSASSResend

decisions

01

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.
02

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_follower RPC (SECURITY DEFINER), and a later migration explicitly revokes direct INSERT and UPDATE on followers for the public key, so a compromised frontend key still can't write anything by itself.
03

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 highlights table with a type column 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.