Garrett Cobb

Windows app · Productivity

Tahdoo

An offline first study app for students, with notes, tasks, calendar, spaced repetition flashcards, habits and optional AI tools. It passed Microsoft Store certification with a 7 day trial and a subscription model.

Tahdoo launch art: feature overview
Tahdoo launch art: feature overview

The business problem

Students juggle separate apps for notes, tasks, calendars and flashcards, and most of them need an account and a connection. The goal was one fast desktop app that works with no account and no network, with a business model that could sustain it.

Requirements I set

  • Fully usable offline, with no account, and the user's data never leaving the device unless they opt in.
  • AI features optional, using the user's own API key, so there's no per-user cost to the business.
  • A free trial that starts at first launch with no network dependency, converting to a Microsoft Store subscription.
  • Pass Microsoft Store certification.

Solution design decisions

  • Desktop shell with a local database: Electron with React for the interface and an embedded SQLite database. I chose it for offline-first storage and a fast single-file data model.
  • Privacy by design: bundled fonts, a strict content security policy, and outbound network only for the user's opt-in AI calls.
  • Licensing architecture: a 7-day trial tracked entirely on the device, then subscription verification through the Windows Store API.
  • Native purchase bridge: when the Store purchase dialog couldn't open from the desktop shell, I specified a small native .NET helper to own the purchase flow. The same component was later reused by CertMoat.
  • Native version evaluated: I scoped a React Native for Windows version as the long-term path away from Electron's platform limits.

How the project was run

  • Nine packaged releases. Each failed Store certification was traced to its exact platform cause (product-ID handling, an API that fails silently inside the packaged app, a timing race in the subscription check) and written up before the next submission.
  • Added a full review gate before packaging after the early failures.

Results

MeasureResult
Packaged builds9
CertificationPassed Microsoft Store certification
CodeAbout 8,400 lines across the Electron main process and React interface, plus a 164 line .NET purchase helper

What I learned

Platform certification is a test suite you don't control. Reproducing each rejection and fixing the root cause was faster than resubmitting and hoping.

How AI was used

What AI did: The code was written with AI coding tools against my specifications.

What I did: I wrote the requirements, chose the architecture and licensing model, ran every Store submission and diagnosed each certification failure.

How quality was controlled

  • Root cause written up before every resubmission
  • Full review gate before every package