Colophon
Why Jotter Exists
I want to own my data. Not trust it to third-party services that can disappear, change terms, or lock me out.
Remember Delicious? It was brilliant until Yahoo bought it and it eventually disappeared, taking everyone's carefully curated bookmarks with it. Twitpic shut down in 2014 and took millions of photos with it. Never again.
This philosophy extends across my digital life. I maintain my writing, bookmarks, and images on my own infrastructure so they'll outlast any service, employer, or platform.
What Jotter Does
Bookmarks
- Save URLs with titles, descriptions, and tags
- Public/private visibility controls
- Browser bookmarklet for one-click saving
- Search and filter functionality
Images
- Album and gallery organisation
- Drag-and-drop uploads
- Multiple image variants
- Tagging and metadata
Both content types get short URLs (/x/<code>) for easy sharing, with proper Slack and Discord preview support.
Built With
Framework: Ruby on Rails 8 with native authentication
Database: PostgreSQL
Frontend: Hotwire (Turbo + Stimulus) for progressive enhancement
Styling: Tailwind CSS v4
File Handling: Active Storage with background image processing via Solid Queue
Deployment: Self-hosted (because that's the whole point)
A monolithic approach suits personal tools better than microservice complexity. The entire codebase remains comprehensible and changes are atomic.
About Me
I'm Stephen McCullough, a software engineer and founder of SkillfulGorilla. I build things with Ruby, Elixir, and Python, and I care about craftsmanship, simplicity, and owning my corner of the web.
You can find more about me and my projects at swm.cc.
Source Code
Jotter is open source. You can view the code, fork it, or contribute on GitHub: