Stefan (dadbod games)
banner
dadbod-games.com
Stefan (dadbod games)
@dadbod-games.com
Turning coffee into video games.

Check out I.T Never Ends on Steam here: https://store.steampowered.com/app/4225400/IT_Never_Ends/
Players can submit feedback in seconds without leaving the game. The data is secure, the UX is smooth, and it works across all platforms.

Try the demo and let me know what you think! 🎮

store.steampowered.com/app/4225400/...

#GameDev #IndieDev #Supabase #WebDev #SteamDeck
I.T Never Ends on Steam
The printer is bleeding, the Wi-Fi is haunted, and Ticket #666 just came in. As the latest hire for a company run by cosmic horrors, your job is simple: Swipe to survive. Make binary decisions to surv...
store.steampowered.com
February 2, 2026 at 6:55 PM
**Discord Webhook Code Structure**
The Deno edge function receives the database payload, extracts the record, and formats it into a Discord embed with.

If Discord fails, it logs the error but doesn't break the feedback submission.
February 2, 2026 at 6:55 PM
**Discord Webhook Automation**
When new feedback is inserted, a Supabase database trigger fires an edge function that formats and posts to Discord.

The edge function:
- Formats feedback into a Discord embed
- Creates visual star ratings (⭐ for enjoyment, 💰 for purchase intent)
February 2, 2026 at 6:55 PM
**Why Write-Only?**
- Privacy: Players can't see other players' feedback
- Security: Even if someone gets the anon key, they can only submit data, not read it
- Simplicity: No authentication needed for demo feedback
February 2, 2026 at 6:55 PM
**Security: Write-Only RLS Policy**
The RLS policy ensures anonymous users can ONLY insert data. They can't read, update, or delete anything. This is the "write-only" pattern.

`anon` can INSERT, but SELECT/UPDATE/DELETE are blocked. This means the public key is safe to use in client-side code.
February 2, 2026 at 6:55 PM
**Supabase Integration**
Using the Supabase JS client with the public "anon" key. This is safe because Row Level Security (RLS) policies restrict what operations are allowed.

The client code is simple and uses a (safely) publishable API key

Security happens at the database level thru RLS (below)
February 2, 2026 at 6:55 PM
**Frontend: React Component**
Built with react (the whole game is).
The form is accessible from both the main menu and demo end screen.

Key feature: graceful degradation. If Supabase isn't configured, the form simply doesn't appear. No errors, no broken UX.
February 2, 2026 at 6:55 PM
**The Form Structure**
4 questions that give actionable insights:
1. Enjoyment rating (1-10) + "What would you tell a friend?"
2. Friction points (free text)
3. Purchase intent (1-10)
4. Suggested price (with auto currency detection)

Plus auto-captured metadata: playtime, game version, OS/platform.
February 2, 2026 at 6:55 PM
**Why in-game feedback?**
- Lower friction = more responses
- Capture context (playtime, game version, system info)
- Better UX than external links

For a Steam Next Fest demo, every piece of feedback is gold. This makes it easy to collect.
February 2, 2026 at 6:55 PM
I'm writing up a more in-depth walk-through right now actually, since you're not the first person to ask, but the short version of it is that I'm running a free supabase project with an edge function that pokes the webhook whenever a row is inserted into a table
February 2, 2026 at 6:39 PM
Thanks man! It's working really well. Every ingame submission is posted directly and publicly in discord and lets everyone see all feedback as it comes in. It's really neat
February 2, 2026 at 6:15 PM
Reposted by Stefan (dadbod games)
call me Ahab the way I hunt that one whale
January 30, 2026 at 10:49 AM
Reposted by Stefan (dadbod games)
Finally a chance to use one of my favourite memes
January 30, 2026 at 10:24 AM