CASE STUDY — Jomnota

Jomnota

A local-first wiki that keeps a team's technical knowledge alive by syncing peer-to-peer between devices. Write offline, sync when online, no central server to maintain.

Tier Rumah
Role Design & build
Stack
NuxtNodeIrohSQLiteDocker Compose

Overview

Jomnota is a local-first wiki for the team. Write a note once, online or offline, and it syncs to every connected device. No central server in the middle, and no push step to forget.

Jomnota is a knowledge tool, not a project-management system. It has no opinions about workflow. It edits, stores, and syncs, and that is all.

The problem

A team wiki decays the moment it becomes a chore. We kept one, and for a while it worked. Then work happened: people shipped and forgot to update it, or didn’t have time. Some wrote updates locally but never pushed to Git.

That brought back the problem the wiki was meant to fix: there was no shared, well-established technical practice. Product implementations, workflows, and module walkthroughs lived in someone’s head. Onboarding a new joiner took a long time, and even inside the team, understanding a module you had never touched meant asking around.

A wiki only helps if it stays alive. Ours kept dying at the push step.

How Jomnota helps

Jomnota removes the push step. Write on your machine and the note is already saved. It is local-first, kept in SQLite on your own instance. When another peer is reachable, it syncs.

The P2P layer uses Iroh, so devices find each other by identity, not IP address. None of it breaks the connection model: a changing network, a laptop on a train, café Wi-Fi. Join the same note and everyone converges.

Because the local instance is always up, the editor is always available. Write on public transport or somewhere with no internet, and the note syncs the moment a peer comes back. The wiki stays alive because there is nothing to remember to do.

Outcomes

The main issue is solved: the team’s technical knowledge is captured and stays current, and keeping it that way takes almost no effort. The standard practices, implementation notes, and module walkthroughs that lived in someone’s head now live in a shared, self-syncing notebook.

A bonus we did not plan for: there is no central server to maintain. As long as the Docker setup is there, all anyone needs is localhost and something to write. When the internet is up, it syncs.

If your team’s knowledge keeps dying at the push step, we can give it a tool that never asks for one.

Under the hood

  • Stack: Nuxt for the client, a small Node/Nitro service, Iroh (@number0/iroh) for peer-to-peer transport, Node’s built-in node:sqlite for local storage, Docker Compose to run it.
  • Local-first: every note lives in a local SQLite database, so the editor works fully offline from the network. Sync is layered on top, not required to read or write.
  • Peer-to-peer: Iroh connects devices by identity, not IP address, so changing networks don’t break sync. Devices pair by exchanging a ticket, then subscribe to the same note and converge.
  • Data model: a flat notes model. Each note is a title and a body, replicated entry by entry. No hierarchy, no markup. The team treats it as a wiki.
  • Operations: runs in Docker, with no central server to maintain. Bring up the stack, point it at localhost, and write.
← Back to case studies

NEXT BUILD — YOUR TURN

Give your workflow a home.