Back to projects
Desktop Tool2026Personal Use

ExcelPlan

Solo - Go backend, React front end, and the curriculum itself

ExcelPlan is scaffolding around a study plan. The plan is 110 Excel cases over 22 weeks, five a week, written up in Obsidian - each one a small realistic problem rather than a tutorial to follow along with.

The thing that kills a self-directed curriculum is not motivation, it is the twenty seconds between sitting down and starting: which case was I on, where is the data, do I have to build the spreadsheet first. Every one of those is an exit. ExcelPlan opens on the next case already chosen, and one click writes that case's workbook into the vault and opens it in Excel with the brief and data already laid out.

The vault stays the single source of truth. There is no second copy of the plan - the app reads the day notes, ticks the same checkbox a human would tick, and rolls weeks up from days and phases up from weeks. A tracker that disagrees with your notes is worse than no tracker.

Built with

Backend

Gonet/httpxlsx generation

Frontend

React 19TypeScriptViteTailwind CSS

Data

Obsidian vaultMarkdown parsingJSON datasets

Tooling

Vitestoxlint

What went into it

One source of truth
Progress is one checkbox per day note, parsed out of the vault. Nothing is duplicated into a database, so the app and the notes can never disagree.
A Go backend, for three reasons
A browser page cannot read a folder off disk, write back into a note, or hand a file to Excel. All three are the point, so the vault work lives in Go.
Workbooks generated per case
Each case builds a three-sheet .xlsx from JSON datasets and opens it. A workbook already in the vault is never overwritten and there is no force flag - that file is where the answers get typed.
Arithmetic you can check by hand
The projected finish date is remaining divided by five per week. No smoothing, no model - a projection nobody believes is worse than none.
Restrained by design
No streak-loss warnings, no manufactured urgency, no confetti per checkbox. Finishing a phase celebrates once, and that is all.

Screens

Captured from the running build against the real vault, so the progress, streak and projected finish date are the actual numbers rather than seeded data.

  • Dashboard - the next case is already chosen, so there is nothing to decide.
  • A case, with the brief and the input table it will write into Excel.
  • All 110 cases across 8 phases - ticking here writes into the vault note.
  • Sign in - a name to greet you by, stored only in the browser.
  • The light theme.