đź§» Inspiration

We wanted to turn an awkward, everyday experience—pooping—into something fun, and approachable. Inspired by stat-based decision games and our own juvenile sense of humor, Perfect Poo was born. The idea was to create a lighthearted, low-stakes game that could make players laugh while still offering engaging choices and outcomes.


đź’© What it does

Players begin with randomized stats in categories like fiber, hydration, stress, speed, load, and fart. By making choices like what to eat or drink, players manipulate these stats toward optimal ranges.

  • Physical stats like fiber, hydration, speed, and load affect the final condition
  • Mental stat stress affects the ability to unlock the poop button-mash minigame
  • Fart stat gas unlocks, well a fart.
  • Each stat has descriptive thresholds—from “rabbit pellets” to “brick” for fiber, or “relief” to “explode” for stress—giving flavorful feedback on the player’s condition.

At the end, players receive one of four outcomes based on their final stats:

  • Perfect Poo – All stats in the optimal range.
  • Mediocre Movement – Stats are mostly balanced but not perfect.
  • Disaster Poo – Stats are in vastly different ranges
  • Public Poo Panic – Extremes in all stats (too low or too high).

Achievements are unlocked based on different criteria and badges can be earned.


đź›  How we built it

We used the following tech stack:

  • TypeScript + React (.tsx) for building reusable UI components
  • Vite for fast bundling and hot reloading
  • CSS + Tailwind for styling
  • VS Code as our development environment
  • Git + GitHub for version control and collaboration
  • Bolt for code generation and rapid prototyping using prompt-driven workflows
  • .json files to store stat configurations, threshold definitions, and achievement conditions

Gameplay logic is stat-driven. Each stat affects specific parts of the game:

  • Speed reduces the number of clicks in the poop minigame.
  • Stress gates access to the minigame.
  • Fart triggers fun (and gross) effects.
    All stats contribute to the final poo outcome.

🪠 Challenges we ran into

  • Balancing stats: It was tricky to design meaningful thresholds that felt different but still fun.
  • Minigame integration: Syncing the button-mashing logic with stat values (like speed) required fine-tuning.
  • Tone control: We wanted it to be silly but not crude, playful but not gross—hitting the right tone took iteration.
  • Frontend state management: Managing stat updates, triggers, and conditionals while keeping the UI clean required thoughtful React design.

🏅 Accomplishments that we're proud of

  • Created a unique and hilarious game that’s both interactive and replayable
  • Built a full frontend with clean UI/UX and engaging game flow
  • Balanced fun with functionality—poo humor with solid mechanics
  • Designed a stat system that’s surprisingly deep and expressive
  • Added achievements and hidden surprises to encourage exploration

📚 What we learned

  • How to manage state and game logic cleanly in React with TypeScript
  • The importance of tone and UX in designing comedy-focused games
  • How to use .json files to externalize data/config for easier iteration
  • How to rapidly prototype fun ideas using Vite and Bolt
  • That even the silliest concepts can teach you a lot about design, balance, and code structure

đźš˝ What's next for Perfect Poo

  • Add sound effects and animations to enhance feedback
  • Introduce more choices and stat based events (like “coffee crash” or “spicy regret”)
  • Expand the achievement system with more badges to be unlocked
  • Add sharing features so friends can compare their Poo Profiles

Built With

Share this project:

Updates