Inspiration
The idea behind (in)valid was born from a simple realization: people have great ideas, but most of them get buried. Often, the most upvoted thoughts aren’t necessarily the best—they’re just the ones that appeared first. This leads to early comments dominating discussions, regardless of their actual merit.
I wanted to create a dynamic space where thoughts could battle it out live, evolving and shifting in real time. This is why (in)valid features an interactive visualization, where winning thoughts become more prevalent, while weaker ones gradually fade away.
What It Does
At its core, (in)valid is like an advanced polling system with a unique twist:
- Ask a question – Users pose a thought-provoking question to the community.
- Submit responses – People share their thoughts and answers.
- Watch the battle unfold – Responses appear in a live stream, categorized based on similarity. As thoughts gain or lose support, they dynamically rise and fall within the feed.
How I Built It
The frontend was designed exclusively using interactive posts and Devvit blocks to ensure a seamless user experience. The goal was to make the battle of thoughts visible without requiring direct interaction—it just happens right in front of you.
Behind the Scenes, We Used:
- Redis – Manages submission status for each user.
- Backend API – Stores and retrieves submitted thoughts.
- Google Gemini API – Categorizes and aggregates similar thoughts.
Challenges We Faced
- Limited customization options in native blocks made it difficult to build a complex "Battle of Thoughts" interface.
- State management was tricky due to unclear transitions between server and client functions.
Accomplishments We're Proud Of
We successfully constrained the entire UI to Devvit blocks, ensuring a smooth and interactive experience without requiring extra user actions.
What We Learned
- Devvit's AI-powered documentation assistant is surprisingly effective.
What's Next for (in)valid Thoughts
- Enhancing the Battle of Thoughts UI – Making it even more dynamic and engaging.
- Introducing Timed Submissions – Users can create time-sensitive prompts (e.g., What are you doing at 3:00 PM?).
- Layered Thought Categorization – Instead of forcing new thoughts into existing categories, we’ll allow them to combine when they only partially fit, forming a broader, more nuanced category.
Built With
- bun
- gemini
- javascript
- postgresql
- railway
- redis
Log in or sign up for Devpost to join the conversation.