Inspiration

Every to-do app I looked at does the same thing: it shows you a list of deadlines and leaves you to figure out whether you can actually finish everything in time. I built Deadline Rescue because I wanted an app that tells the truth — that actually calculates whether my workload fits my available time, and says so honestly instead of letting me find out by missing something.

What it does

Deadline Rescue is a student task tracker built around one core feature: Rescue. You add your deadlines with an estimated time and priority, tell it how many hours you have available per day, and it builds a day-by-day recovery schedule using an urgency-scoring algorithm.

If your workload doesn't fit, it doesn't hide that. It tells you exactly how many hours won't fit, explains its reasoning in plain language ("Why this plan?"), and gives you three real choices: allow the leftover work to spill past its deadline, ignore the warning, or increase your available hours and try again.

The free tier tracks up to 5 tasks. Premium Planning ($9.99/mo, via RevenueCat) unlocks the full Rescue engine, unlimited tasks, and adjustable planning windows.

How we built it

  • Frontend: React Native (Expo, Expo Router), tested on a physical Android device via a custom EAS development build.
  • Backend: Python + FastAPI, deployed live on Render, with SQLite persistence via SQLAlchemy.
  • Monetization: RevenueCat SDK gates the Rescue engine behind a subscription entitlement, with a working sandbox purchase and restore flow.
  • The algorithm: urgency for each task is calculated as (hours_remaining × priority_weight) / days_until_deadline. Tasks are sorted by urgency and greedily allocated to the earliest available days before their own deadline; anything that doesn't fit is recorded honestly as unscheduled rather than silently dropped. This logic lives in its own module, separate from the API layer, and is covered by an automated pytest suite.

Challenges we ran into

The scheduling algorithm looked simple on paper but had real edge cases I didn't anticipate — overdue tasks were initially crashing the endpoint entirely, and an off-by-one bug meant tasks due today never got scheduled at all. Writing tests around these cases (rather than just eyeballing the output) is what actually surfaced them, and fixing them taught me a lot about how easy it is for "obviously correct" logic to quietly break at the edges.

I also learned React Native, TypeScript, and RevenueCat integration from scratch for this project, coming from a Python background — the campus network I was building on blocked local device connections, which meant learning USB debugging and EAS development builds just to get a working dev loop going.

What we learned

That honest, explainable output is a genuinely different product decision than "just build a scheduler" — deciding to report an infeasible plan instead of silently compressing it into something that looks fine was the single choice that shaped the most interesting engineering work in this project.

What's next for Deadline Rescue

Persistent accounts and a hosted production database (currently SQLite, which resets on backend redeploy — a known, documented limitation), an in-app editable progress tracker for partial task completion, and expanding the "Why this plan?" explanation into an interactive what-if planner.

Built With

Share this project:

Updates

Submission history