Inspiration

I've always loved games that mix simplicity with intense psychological strategy. Reddit is all about quick, fun interactions, and I wanted to create a game that felt like a true "mind game" against an opponent, but one that thousands of people could play asynchronously. The classic penalty shootout was the perfect fit. Instead of just picking Left/Right, I was inspired by the tactical depth of splitting the goal into six distinct blocks. This turns a random event into a highly repeatable, competitive guessing game for the entire subreddit.

What it does

Soqer is a simple, addictive, and massively multiplayer penalty shootout game that lives entirely within a single Interactive Post on Reddit.

*When a user engages: *

  1. I present a clear, mobile-friendly 6-block goal grid to the user (Striker).
  2. The user selects one block to shoot at.
  3. Simultaneously, my server-side AI Goalkeeper selects a block to dive to.
  4. The result is immediate: GOAL (if choices differ) or SAVE (if choices match).

All attempts are instantly recorded and reflected in a persistent, global Community Leaderboard, where the entire subreddit competes for the best Goals Scored and Save Percentage.

How I built it

I built Soqer on the Devvit Web framework, using React for the front-end UI and Devvit's serverless functions for the core game logic.My biggest architectural focus was the Community Play aspect. I handled this by leveraging Devvit's built-in data persistence (KV store) to log every player's stats against their unique Reddit username, allowing the Leaderboard to update in real-time without bottlenecks.

I initiated a Spec to formally define the entire game's architecture, including the AI logic, the necessary data model, and the client/server flow. This approach ensured my core logic was robust and optimized before I wrote any implementation code, which was key to meeting the polish requirements of this hackathon.

Challenges I ran into

The primary challenge was managing cross-platform consistency and mobile responsiveness required by Devvit. Building a precise 6-block grid that is easily tappable on a narrow mobile screen while maintaining its aspect ratio on a desktop view required careful CSS and component design. I had to iterate several times on the layout to ensure there were no cumulative layout shifts (CLS) on mobile devices, a common issue for feed-embedded apps.

More critically, I started working on the project pretty late in the game. I only saw around 6 hours left for the deadline when I really got into the core implementation. Thankfully, Reddit generously extended the timeline, which gave me the crucial extra hours I needed to polish the UI and ensure the Kiro Specs were fully integrated. That extension saved the project and allowed me to submit a much higher quality final product.

Accomplishments that I am proud of

I'm most proud of the seamless Kiro integration and the resulting code quality. Using Kiro's Spec to define the architecture made the usually difficult task of integrating the persistent leaderboard data with the real-time client state clean and testable. I was also successful in implementing a mobile-first, highly responsive UI for the game grid and the leaderboard, which should make the game truly enjoyable for all redditors.

What I learned

I learned the immense value of Spec-Driven Development in a serverless environment like Devvit. By generating detailed requirement and design documents with Kiro first, I avoided hours of debugging assumptions about data persistence and server/client communication. I also learned that Devvit’s user context provides a powerful, friction-free way to implement large-scale competitive games that rely on automatic username identification.

What's next for Soqer

Next, I plan to expand Soqer with more features to deepen the community experience:

AI Progression: Introduce a difficulty curve where the AI Goalkeeper's predictive skill adapts based on the community's overall Save Percentage.

UGC: Allow subreddits to customize the goal's color scheme or the Striker/Goalkeeper sprites.

Team Mode: Allow users to join a team (e.g., Team Red vs. Team Blue) and contribute their shots to a collective league table.

Built With

Share this project:

Updates