Inspiration
Memes are the internet’s native language — fast, funny, chaotic. Reddit is full of meme-makers, yet there’s no native way to collaborate on meme creation. We wanted to build something that combines Reddit's upvote culture with real-time creativity. The idea was to create a space where users don’t just consume memes — they compete to make the funniest one.
Thus, UpCap was born: a silly, community-driven meme generator where everyone gets to upload, caption, and let the crowd decide what’s hilarious.
What it does
The app lets users upload an image and crowdsource creative captions from the Reddit-style community. Other users can add text captions to the top, bottom, or extended bars of the image, then upvote their favorites. After a set time chosen by the uploader, the top 3 captions are showcased on the image with credit to the caption creators. It’s a gamified, community-driven way to create and surface the funniest or most clever takes on any image.
How we built it
We built the entire app using Bolt.new, which allowed us to rapidly develop and deploy the frontend, user interactions, and state management without writing boilerplate code. Bolt.new handled user authentication, image uploads, and the dynamic UI logic. To generate captioned images, we integrated a custom Firebase Function, which takes the original image and the user's caption placements, then renders and returns a final composited image. This setup gave us the flexibility of custom backend logic while keeping the main app logic clean and fast to iterate.
Challenges we ran into
One of the biggest challenges was the experimental nature of Devvit Web, which currently lacks comprehensive documentation. This led to several frustrating moments where things broke without clear explanations — and I had to rebuild the project multiple times just to isolate the issues. Fortunately, using Bolt.new made recovery and iteration much faster. Its modular structure and speed helped me quickly retrace my steps, identify where things went wrong, and rebuild the app efficiently each time. This cycle of trial and error turned into a valuable debugging process.
What we learned
Before this competition, I had no experience with React, but through working on this project and examining the Bolt.new-generated source code, I learned a lot about how React components interact, how props/state flow, and how to debug them in a real-world context. I also learned about the Devvit Web Experimental framework — particularly how it enables a new model of communication between WebView (client side) and Devvit Components (server side). This helped me better understand the architecture of Reddit apps and how to build more interactive, real-time user experiences.
Log in or sign up for Devpost to join the conversation.