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.

Excalidraw

Excalidraw drawings for Joplin

Joplin plugin registry · 2026

A Joplin plugin that puts Excalidraw drawings in your notes — hand-drawn sketches and diagrams you draw, edit, copy and share without leaving Joplin. The real Excalidraw editor is bundled in and fills the whole Joplin window; light and dark themes follow Joplin's own. The continuation of joplin-excalidraw-v2 and joplin-excalidraw, published under the product's own name.

  • Edit from anywhere: a hover toolbar in the viewer, the right-click menu in the Markdown editor, a double-click in the Rich Text editor, or a second Joplin window so the note and the drawing sit side by side.
  • Copy as image puts a 2× PNG on the clipboard; copy as JSON pastes editable elements into excalidraw.com, Obsidian or another drawing.
  • Each drawing is two ordinary Joplin resources — the editable scene and an SVG preview — so it syncs and exports like any attachment, and drawings from the old plugins keep working untouched.

Desktop only, Joplin 3.3 or newer. Free and open source under MIT, bundling Excalidraw 0.18. Published on npm as joplin-plugin-excalidraw.

Jot

Quick capture for Joplin

Joplin plugin registry · 2026

A Joplin plugin for quick capture: a small form for the title, a line or two of text, the notebook, tags and the due date, opened over the note you are in. The note or to-do is created where you say, and you stay where you were — the inbox step of Getting Things Done, inside Joplin.

  • Four ways in: Ctrl+Shift+J or Tools → Jot…, highlighted text from the editor's right-click menu, typing ++ in the Markdown editor, or the toolbar button.
  • Quick notes and notes from text each have their own notebook, tags and back-link defaults, so reminders land in an inbox while an extracted note stays next to its source.
  • Edit with Jot… changes an existing note's title, type, notebook, tags and due date without opening it, and Cockpit 2.8 calls the same form from its panel.

Desktop, Joplin 3.1 or newer; Android not yet tested. Free and open source under MIT. Published on npm as joplin-plugin-jot.

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.