23:59 The NUS Run - Devpost Submission
Inspiration
Every NUS student knows the dread of waking up at 9AM on a Saturday with an assignment due at 23:59. The D2 bus that never comes. The WiFi that dies during submission. The otters that somehow become a 2-hour distraction. We wanted to turn this shared trauma into a game that makes you laugh, cry, and maybe learn something about time management (or Amazon Leadership Principles).
What it does
23:59 The NUS Run is a swipe-based survival roguelike with three modes:
The NUS Run puts you through a typical assignment day. Wake up, commute to campus, grind in the library, panic as the deadline approaches. Every swipe costs time and sanity. Survive until submission or generate a very realistic Excuse Email email when you inevitably fail.
Amazon Material? simulates 24 hours of Hack&Roll decisions. Team formation drama, 3AM bugs, sleeping teammates, demo disasters. Your choices reveal your alignment with Amazon Leadership Principles. Too customer-obsessed and you never ship. Too action-biased and you break everything.
Code Survival teaches real CS concepts through gameplay. Choose between BFS and Dijkstra. Handle deadlocks. Design scalable systems. Its interview prep disguised as a game.
The killer feature: when you lose, our AI generates a natural-sounding extension request email based on everything that happened to you in-game.
How we built it
Frontend is React 18 with TypeScript, bundled with Vite. We used Tailwind CSS for styling and Framer Motion for the swipe card mechanics. The retro pixel aesthetic uses custom fonts and CSS animations.
Backend is Node.js with Express. We integrated LTA DataMall API for real-time bus arrival data at Kent Ridge MRT and Singapore Weather API from data.gov.sg for actual weather conditions. Google Gemini powers the dynamic card generation and the Special Consideration email generator.
The game state is managed through custom React hooks. Cards are shuffled per session and the balance mechanic for harder modes tracks four stats that must stay between 10-90%.
Challenges we ran into
API rate limits hit us hard. We burned through three Gemini API keys during testing. We built a comprehensive fallback system that generates natural-sounding emails using templates when the AI is unavailable.
Getting the swipe mechanics to feel right on both mobile and desktop took iteration. Framer Motion's drag controls needed careful tuning to detect intent without false triggers.
Balancing the game was tricky. Too easy and theres no tension. Too hard and its frustrating. We playtested extensively to find the sweet spot where you feel like you almost made it.
Accomplishments that we're proud of
The Special Consideration email generator actually produces emails that sound like a real desperate student wrote them. No numbered lists, no robotic language, just flowing paragraphs of genuine-sounding excuses.
The real-time API integration means when the game says the D2 bus is 15 minutes away, it actually is. When it says its raining, check outside.
The Amazon Material mode genuinely makes you think about leadership tradeoffs. Players have told us they reconsidered their actual work habits after playing.
What we learned
Rate limiting is real and you need fallbacks for everything. Free tier APIs have their limits.
Good game feel matters more than features. We cut half our planned cards to polish the core swipe experience.
NUS students have a lot of shared trauma and turning it into humor is cathartic for everyone.
What's next for 23:59
Custom image generation for all 100+ cards using AI art. Right now we use Unsplash placeholders.
Leaderboards and daily challenges. Compete with friends to see who can speedrun the assignment.
More university modes. NTU, SMU, SUTD all have their own unique struggles.
A proper mobile app. The web version works on phones but a native app would be smoother.
Professor mode where you play as the prof dealing with 200 extension requests.
Built With
Languages: TypeScript, JavaScript
Frontend: React 18, Vite, Tailwind CSS, Framer Motion
Backend: Node.js, Express
APIs:
- Google Gemini (AI card generation and email enhancement)
- LTA DataMall (real-time Singapore bus arrival data)
- data.gov.sg Weather API (2-hour weather forecast)
Libraries: Axios, canvas-confetti, dotenv
Platforms: Web (responsive, works on mobile and desktop)
Built With
- data.gov.sg
- datamall
- express.js
- framer
- gemini
- javascript
- lta
- node.js
- react
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.