This content originally appeared on DEV Community and was authored by Kirit Tanna
Would like to start of by saying that I’m incredibly grateful for the opportunity to take part in such a historic hackathon. A heartfelt thank you to the organizers for equipping us with an amazing builder pack, powerful tools, and inspiring challenges that pushed us to explore, innovate, and grow beyond our limits.
Bolt proved to me once again that, “learning by building is the best approach to learning.” #BuildSomething
Below I’ll briefly describe my experience using Bolt to build the 4 projects I’ve submitted to the World’s Largest Hackathon:
A) Carnival & Game Night Management SaaS platform: join-carnival.online
Background
Between 2022 and 2024, I had the meaningful opportunity to contribute to building a web-based app that supported a non-profit in organizing a real-world half-day carnival—an event full of games, food, and community spirit. Over the years, this carnival brought together between 1,200 to 1,800 participants in a single day, and the app played a vital role—streamlining registrations, managing game sessions, tracking prizes, and even enabling food ordering in its latest iteration.
But as impactful as the app was, it came with limitations. It was built specifically for this one event—everything hardcoded and tightly bound to a single use case. That leads to a bigger question, and perhaps a more exciting vision: What if anyone, anywhere, could host and manage their own carnival or community game event through a flexible, easy-to-use platform? Imagine a tool that empowers individuals, nonprofits, and local communities to bring people together through play, celebration, and shared joy—no custom code required.
Idea – SaaS platform to host carnivals and game nights
join-carnival.online is a SaaS platform with the goal of hosting carnival and game night events a seamless experience.
The process
The journey began slowly, as I took time to experiment with Bolt and explore its capabilities. My first step was to draft a minimal feature set—identifying what was essential for the MVP—and create a wishlist of additional features for later. I considered designing custom UI components in Figma, but quickly realized that would be time-consuming, especially since I lacked experience integrating Figma with Bolt.
As I dug deeper into the project, it became clear that a solid understanding of SaaS architecture and multi-tenant systems was critical to building the solution I envisioned. Despite working full-time as a UI engineer, I committed to carving out time in the evenings to upskill. I spent countless hours watching tutorials and researching core concepts like SaaS fundamentals, multi-tenancy, Stripe for payments, and Supabase for backend management—technologies I was using for the first time.
Building the thing
Started with a detailed prompt based on my previous failed attempts (multiple)
Create a SaaS web application with the following requirements:
- Users can register and manage their profile and have a default role of participant
- Users can buy a subscription to manage a carnival
- Users can have one of 3 roles: participant, admin or volunteer
- Users can buy passes for a specific carnival they’re participating in
- Users can redeem points they earn for prizes
- Carnival admins can add games to a carnival
- Carnival admins can add food items to the menu for a specific carnival
- Carnival admins can manage participant roles for a specific carnival
- Volunteers can setup games and assign winners
- Volunteers can give out prizes in exchange of points
- All interactions are recorded and visible to users as their activity log
Tech stack: Next.js 15, React 19, Jest & React Testing Library, ESLint, Prettier, Husky GIT hooks.
Generate environment variables using Next.js conventions for Supabase and Stripe integration.
Integrate Supabase to manage authentication for users, real-time features such as game sessions and food orders, role based access control.
Integrate Stripe for accepting payments to create carnivals or make purchases as a participant within the carnival.
Use best practices for the tech stack and setup everything based on official guides. Verify every step for correctness, fix errors and create unit tests to ascertain the generate code. Validate NPM packages and install the latest and accurate versions.
For the design, use a modern game and festive styled fun theme. Spice up the interactions with animations and use transitions where suitable.
Add a hint of 3d motion to hero elements and subtle animation to spice up the micro-interactions
Initially, I made the mistake of trying to implement multiple features all at once, which led to repeated failures and frequent rollbacks. It quickly became clear that this approach wasn’t sustainable. I shifted my strategy to focus on adding smaller, individual features incrementally, which allowed me to make steady progress toward the overall goal. One particularly challenging feature was dark mode—due to the use of gradient designs, it required a fair amount of manual tweaking to ensure visual consistency and usability across themes.
GitHub integration is key to incrementally building
One of the most valuable decisions I made early on was integrating GitHub into my workflow. It became essential not just for version control, but for maintaining a reliable history of changes and collaborating more effectively—even as a solo builder. GitHub made it easy to track progress, roll back to stable states, and experiment freely without fear of losing work. Combined with Bolt’s ability to pick up local changes, the integration provided a robust safety net that allowed for smoother debugging, more organized development, and greater confidence with every push. It turned out to be a foundational piece in managing complexity as the project grew.
SaaS with Supabase
Bolt wouldn’t connect to Supabase through the integration (which would’ve automated a few steps) suggesting I was using Next.js project which is not compatible. Nevertheless, it did a good job at scaffolding the features and generating SQL scripts which I was able to use to scaffold the Supabase project.
This was my first experience using Supabase, and it turned out to be a great choice. The platform offers a wide range of useful tools, and the user interface is straightforward and beginner-friendly. I started by setting up authentication, which initially went smoothly. However, I ran into some issues along the way—but after some troubleshooting, I was able to get everything working again.
Working with Row-Level Security (RLS) in Supabase introduced some unexpected complexity—especially once I started implementing advanced features and role-based permissions. It took time to fully understand how to configure it properly without breaking access logic. Integrating Stripe with Supabase was another major hurdle; syncing user subscriptions and handling webhooks proved challenging, but after plenty of trial and error, everything came together—and we officially had subscribers up and running! Looking back, it’s hard to believe how many Supabase features I’ve now worked with—many of which I hadn’t even heard of just a couple of months ago.
Subscriptions and Payments with Stripe
This was my first time integrating Stripe to build a subscription-based billing system, and I was pleasantly surprised by the quality of the documentation and community-supported examples. Stripe provides a well-structured set of APIs and SDKs that make it relatively straightforward to implement pricing models, checkout flows, and customer portals. Supabase, on the other hand, played a crucial role in handling authentication and securely storing user and subscription data.
The integration involved setting up Stripe products and pricing plans, connecting them to Supabase users via customer_id, and configuring webhooks to listen for subscription events like checkout.session.completed
and customer.subscription.updated
. These events triggered database updates within Supabase to keep user access levels in sync with their active plans.
While the foundation was solid, a few issues emerged during development. Some edge cases—like handling webhook retries or syncing metadata across systems—required manually debugging the code and applying targeted fixes. Working locally proved invaluable during this phase. I also learned the importance of verifying webhook signatures, using role-based access control (RBAC) in Supabase, and securely handling sensitive data throughout the payment flow.
The combination of Stripe’s powerful billing infrastructure and Supabase’s real-time backend made it possible to build a subscription system that was not only functional but also secure and scalable. For anyone tackling this for the first time, I’d recommend starting with Stripe’s official examples, using Supabase’s row-level security (RLS) thoughtfully, and setting up a robust local environment for testing webhook and auth logic.
Demo
What would I have done differently and the next steps:
Looking back, there are several architectural decisions I would approach differently if starting over. For instance, instead of embedding integration logic directly into the project, I’d opt for a more modular architecture—perhaps building out a set of microservices with a GraphQL API layer to improve scalability and maintainability. On the database side, I see opportunities to enhance Supabase by setting up additional Postgres extensions and refining the existing Row-Level Security (RLS) policies for more robust and granular access control. From a user experience perspective, there are certain UI interactions that could be polished further to make the interface more intuitive and responsive. I also realized the value of using Bolt’s “Discuss” mode more frequently to validate ideas and workflows before jumping straight into development. And while the foundation is solid, there are still several key features and improvements in the pipeline to bring this project closer to its full potential.
B) Single shot prompt challenge
One single prompt to kick off the entire build—how wild is that? This is vibe coding at its finest! And the fact that I’m doing it over the weekend, powered by unlimited tokens (20 million!) is just the perfect setup. It’s everything I needed to get into the flow, explore freely, and build without limits. What a ride!
Step 1: Attempted to build a 3D WebGL experience, but the project didn’t pan out as expected.
Step 2: Shifted gears and tried creating a visual effect using Canvas—unfortunately, that didn’t work either.
Step 3: Considered building a game, but wasn’t sure if it was feasible. Decided to keep it simple this time. Based on earlier failures, I realized how important it was to craft the prompt carefully, including all necessary details—since I only had one shot to get it right.
Step 4: Chose to build a digital version of Connect 4, inspired by its popularity at the carnival we host. It struck the perfect balance: simple to build, yet engaging and fun to play.
Step 5: The result exceeded all expectations. I was genuinely amazed by the accuracy and polish of the game and the computer player’s AI was surprisingly clever!
Demo
C) Silly Sh!t challenge – Guess The Country Game
I had no idea it was even possible to build and publish apps on Reddit—let alone do it so quickly! This was my first time building on the platform, and I was genuinely surprised by how smoothly it started out. The template worked great initially, but as I began customizing it, things broke down. Without GitHub integration in place, it became tricky to undo recent changes and recover earlier versions. The inspiration for the app came from a game I often play with my son during long drives—naming countries that begin with a specific letter—as well as a fun activity we did at work, guessing countries by their maps during team meetings. For the Devvit challenge, I decided to combine both ideas and add a layer of fun facts, turning it into an engaging geography quiz. I sourced a set of country map images and, with Bolt’s help, built out the core logic. While I envisioned multiple game modes and a high-score board, I wasn’t able to implement everything this time. Still, the experience was incredibly rewarding and opened my eyes to what’s possible on Reddit.
Demo
D) Celebrating 120k+ Hackathon participants
For my final adventure, I wanted to go out with something bold, visual, and downright fun—so I set out to build a celebratory landing page honoring the 120,000+ developers who joined the world’s largest hackathon. What better way to wrap things up than with a tribute to the global dev community? This project was about 95% pure vibe coding—just flowing with the creativity and letting the code take shape naturally. The only exception? Some manual fine-tuning on the WebGL globe to get it spinning just right. The result: a vibrant, interactive experience that captures the spirit and scale of this incredible event!
Demo
The month of June 2025 (hackathon period) has been one of the most intense and rewarding learning experiences I’ve ever had—compressing years’ worth of growth into just a few weeks. That one weekend with unlimited tokens unlocked something big for me: I couldn’t sleep because my mind was overflowing with ideas I could bring to life through pure “vibe coding,” without the usual constraints. It felt liberating and made me realize just how close we are to a future where anyone can build powerful, polished apps at lightning speed.
What Stood Out
- The scaffold generation is mind-blowing. Getting a fully working base to start with gave me a huge head start.
- Supabase and Stripe codegen was incredibly accurate—around 85% worked right out of the box. That level of automation saved hours.
- The default styling is solid and made it easier to focus on functionality before perfecting design.
- Rapid building without full understanding felt odd at first, but diving into the advanced features and generated code accelerated my learning curve. It helped me grasp complex concepts much faster than I ever expected.
- Bolt’s prompt improvisation is impressive, though it’s best used strategically—not a crutch.
- GitHub integration was a lifesaver. It made fixing and tweaking features that were hard to prompt for much easier.
What can be better?
- Support for branching and exploring alternate solutions—something like GitFlow—would open the door for more experimentation.
- Better integration with external tools, or the ability to set up custom integrations via MCP servers, would expand what’s possible.
- Auto-generating unit and end-to-end tests could help improve reliability, especially in more complex apps.
- More control over design and styles would be great for those who want to go beyond the default look and feel.
- While React, Next.js, and Tailwind feel like home, having more flexibility in choosing the tech stack would make this even more powerful for different types of builders.
This is a submission for the World’s Largest Hackathon Writing Challenge: Beyond the Code.
This content originally appeared on DEV Community and was authored by Kirit Tanna