DEV Community

Cover image for Roast Feast is LIVE: How I shipped a social platform as a solo dev (Nuxt 3 + Supabase)
Mateusz Szczudłowski
Mateusz Szczudłowski

Posted on

Roast Feast is LIVE: How I shipped a social platform as a solo dev (Nuxt 3 + Supabase)

We are finally live! 🚀

A few months ago, I wrote about my journey starting "Roast Feast" – a dedicated platform for comedy roasts. What started as a "learning project" to master Nuxt 3 and Supabase has now evolved into a full-featured production app.

Today, I want to share the technical challenges I faced getting to v1.0, specifically around user identity, moderation, and the "final mile" of polish.

The Core Stack (Recap)

For those who missed the first post, the architecture is kept simple but powerful for a solo dev:

  • Frontend: Nuxt 3 (Vue 3 + Composition API)
  • Backend/DB: Supabase (PostgreSQL, Auth, Edge Functions)
  • State: Pinia
  • UI: Vuetify 3 (customized with SCSS)
  • Analytics: Umami (privacy-focused)

Challenge #1: The "Identity" Problem

One of the biggest hurdles I faced last week was: How do we handle usernames?

Roast-Themed Nickname Generator

On a roasting platform, people want to be funny, but allowing free-text usernames is a moderation nightmare (offensive names, impersonation, etc.). Plus, many users struggle to come up with a "cool" name.

The Solution: Forced Creativity
I decided to remove the ability to type a username. Instead, I built a "Roast-Themed Nickname Generator".

When you sign up, you get a randomly generated name like SaltyBrisket, SpicyJester, or CrispyTaco.

The Tech Implementation:

  1. Frontend Generation: A simple JS utility combines an array of Adjectives (e.g., Searing, Witty, Charred) with Nouns (e.g., Griller, Spark, Rib).
  2. Database Validation: To prevent any "clever" users from bypassing the UI and injecting their own names via API calls, I added a PostgreSQL Check Constraint function is_valid_roast_nickname.
-- Simplified logic of the SQL function
CREATE OR REPLACE FUNCTION public.is_valid_roast_nickname(nick text)
RETURNS boolean AS $$
BEGIN
    -- It must match our specific Adjective + Noun pattern
    -- (and allow our specific 'RoastFeast' admin handle)
    ...
END;
$$ LANGUAGE plpgsql;
Enter fullscreen mode Exit fullscreen mode

This ensures that every user on the platform fits the theme. It’s a small detail, but it sets the tone immediately.

Challenge #2: Preventing Abuse (The "Feast!" Sign)

The creator of the portal in the first roast event holds a sign with the word Feast!

The scariest part of building a roast platform is the potential for cyberbullying. How do we ensure the person being roasted actually wants to be roasted?

The Solution: The "Feast!" Verification.
I implemented a regulation (enforced by moderation) that requires every roast event to include a photo of the "roastee" holding a handwritten sign that says "Feast!".

It’s a low-tech solution to a high-tech problem, but it works. It proves consent in a way that a checkbox never could.

Privacy First: Private Roasts

Not everyone wants to be roasted by the whole world. I added a Private Roast feature that allows users to create unlisted events. These are shareable only via a direct link, perfect for friend groups or office parties who want to keep the jokes inside the circle. This required careful Row Level Security (RLS) policies in Supabase to ensure "private" truly means private.

Challenge #3: The "Launch" Polish

The last 10% of the work took 50% of the time.

  • Cookie Consent: I had to add a GDPR-compliant cookie banner (using a custom Vue component that checks localStorage).
  • Data Privacy: Updated regulations to be transparent about using Umami for analytics and storing only emails.
  • Performance: Optimized v-img lazy loading and Supabase queries.

What's Next?

Now that v1.0 is out, the real test begins: Users.

I've connected Umami to track how people actually use the site (vs how I think they use it). The next features (Stripe integration for tipping) will depend entirely on this initial feedback.

Try it out!

I’d love for you to roast the platform itself. In fact, I'm dogfooding the "Feast!" verification myself – I am the very first person to be roasted on the platform. Come take your best shot!

👉 Live Site: https://roastfeast.com

Let me know in the comments: What was the hardest "final mile" feature in your last project?


Follow me for more updates on building Roast Feast solo!

Top comments (0)