Skip to main content

February 3rd, 2026

The Blueprint is Locked. Now We Build. After weeks of preparation, the full implementation roadmap is now clear. Here are the whiteboard notes that capture the plan: Roadmap Notes - Part 1 Roadmap Notes - Part 2 Roadmap Notes - Part 3

🗓️ Week 1: Core Task & Scheduling Logic

This week is about the backbone of CommitT: creating tasks, storing recurrence rules, and making sure alarms survive device restarts.

1. Create Task Flow

2. During Active Task Window

3. Task Completion / End of Instance

4. Update Task Flow

⚠️ Critical: Alarm Persistence

Alarms must survive device restarts. Use BOOT_COMPLETED broadcast receiver + re-register alarms on boot.
This was already implemented in January (Day 14) with the withBootReceiver config plugin. We have the foundation; now we wire it to real tasks.

🗓️ Weeks 2 & 3: Social Network Graph

This is where CommitT becomes “Social Stikk”.
  • Build the social/friend system (add, remove, accept invites)
  • Allow assigning tasks to accountability partners
  • Visibility controls (public / private / friends-only)
  • Proof-of-work feed (friends see your check-ins, can react)

🗓️ Week 4: App Block Features (App B - Digital Commitment)

This is the “make cheating irrational” layer.
  • Detect app launches (Accessibility Service)
  • Block specified apps during task windows
  • Show overlay / force return to home screen
  • “Request Unlock” flow → all partners must approve

🗓️ Week 5: Penalty & Waiver

The stakes that make it real. Penalty Options (implement at least one):
  • Monetary (forfeit ₹X)
  • Streak loss (reset counter)
  • Embarrassing photo sent to partners
Waiver Options (implement at least one):
  • Solve 100 CAPTCHAs
  • Write a 3000-word reflection
  • Complete a harder replacement task
  • Grace period (1 free miss per month)

Next Step

Today: Start implementing Week 1 - Create Task Flow. This means:
  1. Backend: Convex mutations for creating tasks with recurrence rules.
  2. Frontend: Wire the existing UI to call those mutations.
  3. Native: Ensure AlarmManager schedules the first instance.
Let’s ship.

🚀 Today’s Implementation: First Slice of Week 1

The Challenge with AI-Assisted Development

The thing with working with AI is that at the moment, whatever you do seems good, but after a few months or days of work, the quality of work can seem really bad. To avoid this, we need to:
  1. Write production-level code from day one
  2. Follow best practices rigorously
  3. Plan before coding - each slice should be crystal clear

Today’s Slice: Create Task with Recurrence Rule

User Flow:
Three Possibilities on Commit:
  1. First time commit → Create recurrence rule → Create first task instance
  2. 🔄 Update existing → Validate changes → Update rule & reschedule
  3. Delete → Cancel all scheduled instances

Validation Requirements (Before Any Create/Update)


Step-by-Step Production Implementation

Step 1: Backend - Validation Logic (validators.ts)

Create pure functions to validate:
  • ✅ At least one time condition exists in the rule
  • ✅ No overlapping tasks in the same time slot for this user
  • ✅ Time slots are valid (start < end)

Step 2: Backend - Recurrence Calculator (recurrence.ts)

Create pure function getNextOccurrence():
  • Takes: recurrence rule + base date
  • Returns: next { start: Date, end: Date }

Step 3: Backend - Modify createTask Mutation

Wire everything together in a single transaction:

Step 4: Backend - Scheduled Function (onInstanceEnd)

This runs automatically at each instance’s end time:

Files to Create/Modify Today


Quality Checklist

  • All business logic in pure functions (testable, no side effects)
  • Proper TypeScript types for all data structures
  • Error handling with meaningful messages
  • No hardcoded values - all config in constants
  • Atomic transactions - if one step fails, nothing is committed
  • Idempotent operations where possible