Well, I finally did it, we finally have a public release of Tintype.
Tintype is a small markdown blog engine for people who want to self-host. It runs as one container with one process, one SQLite file and one uploads folder. Public pages are rendered on the server. Site admin and writing are done in the /shed.
- Single container: One Node process serves the public site, admin panel, API and uploads, with SQLite built in.
- Markdown storage: Posts are stored as markdown and rendered to sanitised HTML when requested.
- Two-factor sign-in: Supports passkeys and security keys, authenticator apps and recovery codes.
- Invite-only accounts: There is no public signup; admins invite users.
- Two roles: Admins can do everything; writers manage only their own posts and uploads.
- Two editors: Each writer can use a markdown editor or a visual editor, with a live preview.
- No public cookies: Read counts use hashed, rotating visitor IDs.
- Click-to-load embeds: Embedded content makes no third-party request until the reader clicks it.
- Full-text search: Search is built on SQLite.
- Feeds and SEO: Includes tags, an Atom feed, a sitemap and social preview metadata.
- PDF attachments: PDFs can be attached to posts and are served as downloads.
- Themes: It ships with Default plus seven more themes, dark mode and full custom CSS.
- Translations: Public text is configurable, and 11 language files come with it.
- Operator CLI: Command-line tools handle rescue login links, taking an upload offline, unpublishing a post and backups.
Tintype (opens in a new tab) is released under the AGPL-3.0 licence
Bug reports go through GitHub Issues (opens in a new tab), and the project takes support through Ko-fi (opens in a new tab).
Check out the demo site (opens in a new tab).