Inspiration
Most social platforms aren’t built for raw, real, emotional expression. That’s where Rantify comes in. Inspired by the idea of turning unfiltered emotion into meaningful reflection, I wanted to build a space where people could speak their minds without judgment, anonymously or not, and still feel heard.
What it does
- Tap a mic and record a rant
- See it live-transcribed into text
- Choose whether to post it publicly for others to see or privately so you can keep a personal journal of your rants
- Have the choice to post a rant anonymously
- Browse rants from others, like, comment, or even reply to comments
- View your own rants in a personal dashboard
How we built it
- At the core, Rantify is built on Next.js + shadcn/ui for the frontend
- For user authorization and storage of rants's audio files, Supabase Auth and Supabase object storage were used respectively
- For Speech to Text of Rants and Text to Speech of rants, with ElevenLabs paired Supabase edge function to deliver it, both logic for the edge function written by bolt.new (code at the end)
- Deployed to Netlify
- Built entirely with Bolt.new
Challenges we ran into
- Getting Supabase Auth to work properly since for some reason, whenever the the
outputproperty was not set toexportin thenext.config.js, Supabase Auth outright did not work on bolt, but worked on my local machine. - Due to that I was forced to set
output: exportinnext.config.jsthus, alot of features were not supported or did not work such as dynamic routes (/rant/[rantId]), I had to instead used query parameters (/rant?id=[rantId]) which does not look as clean - Setting
output: exportalso meant dynamic API routes did not work, so I had to resort to use Supabase Edge Functions for TTS of Rants and Speech to Text of rants - Bolt also used outdated packages which works for not but is not future proof as they are emit warnings and may stop working in the future
- Even though there is a built-in Supabase integration in Bolt, it does not support Next.js project although Supabase have extensive documentation on it
Accomplishments that we're proud of
- Entirely built and works on Bolt
- Designed a sleek, responsive UI that works great on both desktop and mobile
What we learned
- Working with audio can be particularly difficult at times
- How to use Bolt.new to rapidly scaffold and deploy a real-world app
What's next for Rantify
As of now, Rantify has numerous limitations as well as numerous new features that can make the experience a lot better.
Limitations
- Although it is not a concern now or won't be unless the app skyrockets, the username generation is limited to 63,935,936 unique usernames
- Libraries used such as for Supabase are outdated and should be upgraded to use the new libraries
- No moderation, which can result in unwanted content
Future Features
- Could add AI-powered mood detection or sentiment tagging
- Let users respond with voice (not just text) for more natural interactions
- Monetization via RevenueCat for a “Rant+” experience: extended rant time (currently limited to 3 minutes), insights, and emotional analytics
Why use Supabase Egde functions?
I was forced to use Supabase Edge function as export: output had to set in bolt.new otherwise, it would not work. This meant dynamics items such as dynamic routes, SSR, and API routes were not supported, so if I had to use ElevenLabs API in the browser, it would mean I would have expose my API to the public. The only other safe method was to use such a edge function.
Built With
- bolt
- elevenlabs-tts
- netlify
- nextjs
- shadcn/ui
- supabase
- supabase-auth
- supabase-object-storage
Log in or sign up for Devpost to join the conversation.