Inspiration

I noticed something uncomfortable about my own to-do lists: writing a task down felt like progress. The list got longer, I felt productive, and nothing actually moved. Every task app I tried made capturing tasks effortless — but none of them made me decide anything.

That became DuesDay's core idea:

Written is not done. Decided is begun.

What it does

DuesDay is an anti-procrastination task app for iOS. Before you can open your task list each day, you go through a short swipe ritual that sorts every task:

  • → Right: Now
  • ← Left: In a few minutes
  • ↑ Up: Today
  • ↓ Down: Not today — with a required reason

Your list only unlocks after every task has a decision. The "down" swipe is intentionally the only one with friction: you can postpone, but you have to say why. That one small step turns vague avoidance into a conscious choice.

Getting tasks in and out of DuesDay is just as easy:

  • Photo to Tasks — take a photo and turn it into tasks instantly
  • Google Calendar sync — decided tasks land directly on your schedule

How we built it

  • SwiftUI + SwiftData for the app and local persistence (iOS 17+)
  • WidgetKit and Live Activities so today's decided tasks stay visible outside the app
  • Google Calendar integration to connect decisions with the user's real schedule
  • RevenueCat for in-app purchases — v1.0 is fully free with a tip jar, and a Pro subscription with a 7-day free trial is already implemented behind a feature flag for the next release
  • A custom neumorphic UI with a periwinkle accent, designed so the daily ritual feels calm rather than punishing
  • All copy written natively in both Japanese and English, with Japanese as the primary market

Challenges we ran into

  • Designing a gate that doesn't feel like a punishment. Blocking access to your own list is a strong move. Getting the swipe gestures, animation, and wording right took many iterations so it feels like a ritual, not a lock screen.
  • Naming. I went through 25+ candidates before landing on DuesDay — "dues" (what you owe yourself) plus "day."
  • Bilingual copy. Short, rhythmic lines work very differently in Japanese and English, so every message was written for both languages rather than translated.

Accomplishments that we're proud of

  • Shipping v1.0 to the App Store as a solo student developer
  • Turning a behavioral idea — commit before you act — into a single, simple daily interaction
  • Making capture effortless with Photo to Tasks and Google Calendar sync, so the only real effort left is the decision itself
  • Keeping the core experience completely free, while building a RevenueCat-powered monetization path (tip jar now, Pro subscription next) that doesn't compromise it
  • A distinctive neumorphic design that makes a productivity app feel calm instead of stressful

What we learned

  • Friction placed in the right spot changes behavior more than any reminder does.
  • For a gesture-driven app, real device recordings communicate the experience far better than generated footage.
  • Launching free and building the subscription behind a feature flag let me ship sooner without locking in pricing decisions too early.

What's next for DuesDay – Anti-Procrastination ToDo

  • v1.1 with AI features and the Pro subscription (7-day free trial)
  • Refining the daily ritual based on feedback from early users
  • Growing the Japanese user base first, then expanding to English-speaking markets

Built With

  • activitykit
  • ios
  • revenuecat
  • storekit
  • swift
  • swiftdata
  • swiftui
  • widgetkit
  • xcode
Share this project:

Updates

Submission history