Studio

Apps and small products I build on my own — the joy side of being a product builder.

Tennis Cosmos

Court booking app

teniskosmos.com · 2026

Online booking and training-request app for a five-court tennis academy in Novi Sad. Clients reserve courts with email-verified confirmation; coaches get a callback queue for training enquiries.

  • Court booking with email-verified confirmation that writes the event to the academy's Google Calendar.
  • Training-request flow that creates a Google Task for the coach with skill level, equipment, and availability captured up front.
  • Trilingual (Serbian / English / Russian) with dark + light themes.

Vanilla JS frontend, Google Apps Script backend, GitHub Pages — zero recurring cost.

Cockpit

Tasks & notes panel for Joplin

Joplin plugin registry · 2026

A Joplin panel that replaces the notes and notebooks sidebars, gathering every to-do, note, and inline checkbox into one view grouped by due date — the plan and the archive at once. Runs on desktop and Android, with interval, date-list, month-calendar, and week-planner views.

  • Saved view profiles bundle the view, filters, search, and what counts as done — switch profiles to switch the whole panel.
  • Reschedule by dragging a to-do onto a day or a group, or set an exact date and time in the alarm picker.
  • Full Joplin search with autocomplete for tag:, notebook:, and title:, plus notebook filters, themes, and a progress ring on every row.

Open source under MIT, forked from the Agenda plugin. Published on npm as joplin-plugin-cockpit.

Ridgeline

Note minimap for Joplin

Joplin plugin registry · 2026

A Joplin plugin that lines the editor's edge with a compact stack of thin bars — a minimap of the note, one bar per heading, its length set by the heading level. It turns a long note into a shape you can read at a glance and navigate without scrolling.

  • Bar length encodes the heading level and the current section stays highlighted, so you always see where you are in the note.
  • Rest the mouse on the strip to expand a full table of contents; click any heading to jump straight to it.
  • Works in both the Markdown editor and the rendered viewer, across multiple windows, as a floating overlay or a reserved margin.

Free and open source under MIT. Published on npm as joplin-plugin-ridgeline.

Harper

Grammar & spell checker for Joplin

Joplin plugin registry · 2026

A Joplin plugin that checks grammar and spelling in the Markdown editor as you type, powered by Automattic's Harper engine — each finding gets a coloured underline by kind, and clicking one opens a card with the problem and one-click fixes. The whole checker is a WebAssembly engine bundled in the plugin, so it runs entirely offline and your notes never leave your machine.

  • Colour-coded underlines, one colour per issue type — Harper sorts findings into 21 lint kinds (spelling, grammar, punctuation, word choice, repetition, and more), in both light and dark themes.
  • Click an underline for a card with the issue, an explanation, and one-click fixes — plus add-to-dictionary, dismiss a single finding, or disable a rule everywhere.
  • Check against American, British, Australian, or Canadian English, and point Harper at your own plain-text dictionary to sync a word list between machines.

Open source under MIT, powered by Automattic's Harper (Apache-2.0). Desktop and Android, about 21 MB with the bundled engine. Published on npm as joplin-plugin-harper.

Whereabouts

Notebook location chip for Joplin

Joplin plugin registry · 2026

A Joplin plugin that keeps a small notebook chip next to the note title on every note, in every view — the notebook name or the full path. Joplin shows that only in search, tag and All-notes views; this shows it always, and makes it clickable.

  • Four placements: its own row below the title, that row with the title-row icons moved down, inline right of the title, or first item of the editor toolbar.
  • Left click selects the notebook in the sidebar and keeps the note open, double click reveals the note in the note list, right click opens the move-to-notebook picker.
  • Optional notebook icon, configurable path separator, and an option to hide Joplin's own "In: Notebook" pill so nothing shows twice.

Desktop only, Markdown editor, Joplin 3.7 or newer. Free and open source under MIT. Published on npm as joplin-plugin-whereabouts.

Cupboard

Personal music tool

A private tool to choose what to listen to from a physical CD collection. Maps the collection to a real 5×12 cupboard at home: weighted-random picker, listen log with 1–10 marks and style tags, MusicBrainz lookup, and a heatmap of what's been played by cell.

  • Weighted-random picker — recently-listened albums are deprioritised, the long tail keeps surfacing.
  • Per-disc listen log with 1–10 marks, genre / style tags, and MusicBrainz metadata lookup.
  • 5×12 cupboard heatmap with All / Cycle / Year / Month / Week views — see which corners of the collection have gone quiet.

Python + FastAPI backend, vanilla-JS PWA frontend, JSON-file storage. Self-hosted behind basic auth.