Loggo: A Self-Hosted Note App for Engineers
Introduction
I needed to take notes every day, so I started the way most people do: pen and paper. It worked for a while. Then two things got annoying. I couldn’t search old notes, and I couldn’t put a code block in them. For an engineer, that’s a real problem. I tried a lot of note apps after that. None of them fit me 100%. So I built Loggo , a self-hosted note app for engineers, and it’s open source.

A day is a board
The idea is simple. Every day is a board. Through the day, you drop Logs onto it. A Log can be a thought, a command, a task, a snippet. I don’t have to decide where something goes. It goes on today’s board.
The board is an infinite canvas. You can drag Logs around and resize them, or switch to a masonry layout when you want something tidier. You can also move between days with keyboard shortcuts.
Writing and finding things
Each Log is written in a Markdown editor, so code blocks work the way I wanted from day one. There are tags and tasks, with due dates shown in the editor. You can attach files, and tables and YouTube links render inside the Log. Search is full-text and uses SQLite FTS5, which fixes the thing I hated most about paper.
Workspaces let you keep personal and professional notes apart. Daily templates keep each day’s entries consistent.
Notes stay as plain files
This is the part I care about most. Loggo uses SQLite for search and
metadata, but every Log is also written as a Markdown file with YAML
frontmatter, in a folder you can open without the app. The path includes the
date, like workspaces/<slug>/YYYY/MM/DD/<ulid>-<slug>.md.
If the database breaks, the files are still there. The frontmatter carries
enough information that loggo rebuild can build the database again from
the folder. Loggo never runs git on that folder. Committing it is up to me.
Built on what I already had
Loggo is the third one after Recipery and Bookhoarder . By the time I started it, I already had a working stack from those two: Next.js, TypeScript, a pluggable storage layer (local disk or S3-compatible), and a way to ship it as a Docker container, on Cloudflare, or on Kubernetes. I didn’t want to throw that away and start from zero. So I built on top of it.
One thing is different this time. Recipery and Bookhoarder have no database. Loggo has one, because full-text search needs it. SQLite needs a single writer, so the Kubernetes setup runs one replica with a persistent volume. The Cloudflare version is a read-only demo, using D1 and R2.
Run it
docker run -d \
--name loggo \
-p 3000:3000 \
-v /path/to/your/data:/app/data \
ghcr.io/loggo-dev/loggo:latestOpen http://localhost:3000 and you have today’s board. The
Docker guide
has the full
setup, and the docs
cover the rest. The code is on
GitHub
under AGPL-3.0.
Conclusion
Paper couldn’t search or hold code, and the other apps never fit. Loggo does both, and my notes are plain Markdown files I can open without it. If I ever stop using the app, I lose nothing.