# ShipLock: finish one project before you start the next

> A commitment-first app. Lock one project into a focus track for 14, 21 or 30 days, follow a fixed AI-written plan with one outcome a day, and find that quitting takes effort.

Source: https://ahmedprime.dev/projects/shiplock

# ShipLock

- Status

  Unreleased

- Platforms

  iPhone · Android

- Since

  January 2026

- Stack

  Flutter · Riverpod · Firebase · Gemini

- Last shipped

  2026-02-03

ShipLock is a commitment-first app for finishing one project before you start the next. You lock one project into a focus track (morning, afternoon or evening) for 14, 21 or 30 days. AI turns it into a fixed plan with one outcome per day. And quitting takes effort, on purpose.

![ShipLock's focus tracks, with one project locked in for the morning.](/_astro/shiplock-tracks.CQVnQ4UR_1gexQ6.png)

## The problem

> "Most people don't fail because they lack ideas. They fail because they abandon them too early."

That line is from the product spec, and the whole app is built around it.

## How it works

- **Focus tracks.** Three slots a day: morning, afternoon, evening. One project per slot.
- **Lock a project.** A name, a type, a finish line, and a length: 14, 21 or 30 days.
- **The Finish Path.** One AI call writes a day-by-day plan with one clear outcome per day. The prompt asks for no advice, and for a plan that's "realistic and slightly uncomfortable".
- **Every day:** done or skip.
- **The parking lot.** A new idea goes here, not into a new track.
- **Quitting.** The quit button stays disabled until you choose a reason.

## Decisions

### Why can't you edit the plan?

Because an editable plan becomes a second project. The Finish Path is fixed, "designed to reduce decision fatigue". The cost: a bad plan stays bad. You follow it, or you quit with a reason.

### Why make quitting hard?

"Friction is a feature." The rule for every feature: it must reduce quitting, not increase thinking. So ShipLock leaves out task lists, editable plans, drag-and-drop scheduling and gamification, on purpose.

### Why no sign-up screen?

You can look around without an account. Anonymous sign-in happens only when you tap "Lock This Project", because that's the first moment there's something worth saving.

### Why is the model name in Remote Config?

One client-side call to Gemini through Firebase AI Logic, with the model name read from Remote Config. Changing the model doesn't need an app release.

## Where it stands

An MVP, built in eleven days in January 2026. Before a store release it still needs skipped days saved properly, a real insight card, and release signing.

## The numbers

- **110 commits in eleven days,** from 23 January to 3 February 2026.
- **About 13,800 lines of Dart.**

**Still have questions?** [Ask the agent about this page](/ask?about=shiplock)

- [Why does ShipLock make quitting hard?](/ask?about=shiplock\&q=Why+does+ShipLock+make+quitting+hard%3F)
- [How does it use AI?](/ask?about=shiplock\&q=How+does+it+use+AI%3F)

Or [write to Ahmed](/contact)
