Omegion

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

sh
docker run -d \
  --name loggo \
  -p 3000:3000 \
  -v /path/to/your/data:/app/data \
  ghcr.io/loggo-dev/loggo:latest

Open 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.