| File | Date | Author | Commit |
|---|---|---|---|
| .agents | 2026-02-14 |
|
[ae038d] add skills |
| .claude | 5 days ago |
|
[663a35] v0.4.0 |
| .github | 4 days ago |
|
[94b251] 0.4.1 |
| .vscode | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| docs | 4 days ago |
|
[94b251] 0.4.1 |
| e2e | 4 days ago |
|
[94b251] 0.4.1 |
| public | 2026-02-21 |
|
[414490] v0.3.0 |
| scripts | 4 days ago |
|
[94b251] 0.4.1 |
| src | 4 days ago |
|
[94b251] 0.4.1 |
| src-tauri | 4 days ago |
|
[94b251] 0.4.1 |
| website | 4 days ago |
|
[94b251] 0.4.1 |
| .gitignore | 2026-02-21 |
|
[414490] v0.3.0 |
| .prettierignore | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| .prettierrc.json | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| AGENTS.md | 4 days ago |
|
[94b251] 0.4.1 |
| CHANGELOG.md | 4 days ago |
|
[94b251] 0.4.1 |
| CLAUDE.md | 4 days ago |
|
[94b251] 0.4.1 |
| CODE_OF_CONDUCT.md | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| CONTRIBUTING.md | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| LICENSE | 2026-02-14 |
|
[fb636c] Initial commit |
| PHILOSOPHY.md | 5 days ago |
|
[663a35] v0.4.0 |
| README.md | 4 days ago |
|
[94b251] 0.4.1 |
| SECURITY.md | 2026-02-21 |
|
[414490] v0.3.0 |
| bump-version.ps1 | 5 days ago |
|
[663a35] v0.4.0 |
| bump-version.sh | 5 days ago |
|
[663a35] v0.4.0 |
| bun.lock | 5 days ago |
|
[663a35] v0.4.0 |
| eslint.config.js | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| index.html | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| package.json | 4 days ago |
|
[94b251] 0.4.1 |
| tsconfig.json | 2026-02-19 |
|
[be9fee] v0.2.0 |
| tsconfig.node.json | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| uno.config.ts | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| vite.config.ts | 2026-02-16 |
|
[259c91] Initial implementation of mini-diarium |
| vitest.config.ts | 2026-02-21 |
|
[414490] v0.3.0 |
| wdio.conf.ts | 4 days ago |
|
[94b251] 0.4.1 |
Website: mini-diarium.com
A local-first journal with serious encryption. Free, open source, and never touches the internet.
Mini Diarium keeps your journal private. Every entry is encrypted with AES-256-GCM, the app never connects to the internet, and your data never leaves your machine. Built with Tauri, SolidJS, and Rust.
Mini Diarium is a spiritual successor to Mini Diary by Samuel Meuli. I loved the original tool. It was simple, private, and did exactly what a journal app should do. Unfortunately, it's been unmaintained for years and its dependencies have aged out. I initially thought about forking it and modernizing the stack, but turned out impractical. So I started over from scratch, keeping the same core philosophy (encrypted, local-only, minimal) while rebuilding completely with Tauri 2, SolidJS, and Rust. The result is a lighter, faster app with stronger encryption and a few personal touches.
Mini Diarium is intentionally opinionated. The philosophy is not a side note, it is the product:
Read the full principles and how these translates to the architecture in PHILOSOPHY.md.
Mini Diarium uses a wrapped master key design.
<picture>
</picture>
The master key is never stored in plaintext.
Everything runs locally on the user's machine.
<picture>
</picture>
invoke()When saving an entry:
entries table.
<picture>
</picture>
Mini Diarium follows a layered structure.
<picture>
</picture>
Download the latest release for your platform:
| Platform | Format |
|---|---|
| Windows | .msi or .exe (NSIS installer, no admin required) |
| macOS | .dmg |
| Linux | .AppImage or .deb |
Windows
On first launch, Windows SmartScreen may show a warning ("Windows protected your PC"). This is expected for unsigned applications. Click "More info" then "Run anyway" to proceed. Mini Diarium is open source and builds are reproducible from source.
macOS
macOS Gatekeeper may block the app on first launch with "damaged and can't be opened". This happens because the app is open-source and not commercially code-signed.
Run this command in Terminal after dragging the app to Applications:
xattr -cr "/Applications/Mini Diarium.app"
Then launch the app normally. This is a one-time step.
Linux
No code signing is required. For security, verify the SHA256 checksum against checksums-linux.txt from the release before installation:
sha256sum Mini-Diarium-*.AppImage
# Compare with checksums-linux.txt
Ctrl+[ / Ctrl+] or click dates on the calendarMost journal apps only offer a password. Mini Diarium also lets you unlock with an X25519 private key file, a small .key file that acts like an SSH key for your diary. You can use a key file instead of your password, or register both and use whichever is convenient.
| Scenario | How a key file helps |
|---|---|
| Physical second factor | Keep the .key file on a USB drive. The diary can only be unlocked when the drive is plugged in, with no app, no phone, and no OTP codes. |
| Password manager integration | Store the .key file as a secure attachment. Unlock without memorizing a passphrase at all. |
| Multiple machines | Register one key file per machine. Revoke access to a single machine by removing that slot without touching your password or re-encrypting any entries. |
| Shared account, separate keys | Register several key files under different labels. Each is independent, and removing one doesn't affect the others. |
Each auth method stores its own encrypted copy of a random master key that encrypts all diary entries. For key files, this wrapping uses X25519 ECIES:
.key file (64-character hex string) and retains only the public key.auth_slots table alongside your password slot..key file, performs the same ECDH derivation in reverse, and unwraps the master key; your password is never required.The private key never enters the database. The public key stored in the database cannot unlock the diary. A wrong or tampered key file is rejected by AES-GCM authentication.
.key file somewhere only you control, such as a USB drive, a password manager's secure notes, or an encrypted folderFrom that point you can unlock from the login screen by switching to Key File mode and selecting your .key file. To remove a key file, open Preferences → Authentication Methods and delete its slot (the last remaining method is always protected from deletion).
Backup your key file. Like an SSH private key, it cannot be regenerated. If you lose both your password slot and all key files, there is no recovery path.
| Action | Shortcut |
|---|---|
| Previous Day | Ctrl+[ |
| Next Day | Ctrl+] |
| Go to Today | Ctrl+T |
| Go to Date | Ctrl+G |
| Previous Month | Ctrl+Shift+[ |
| Next Month | Ctrl+Shift+] |
| Preferences | Ctrl+, |
Statistics, Import, and Export are available via the Diary menu (no default keyboard accelerators).
On macOS, use Cmd instead of Ctrl.
Prerequisites: Rust 1.75+, Bun 1.x, and Tauri v2 system dependencies.
git clone https://github.com/fjrevoredo/mini-diarium.git
cd mini-diarium
bun install
bun run tauri build
Artifacts will be in src-tauri/target/release/bundle/.
x25519-dalek, hkdf, sha2: X25519 ECIES key wrapping for key file authenticationYou can add local import/export extensions using Rhai scripts in your diary plugins/ folder.
See docs/user-plugins/USER_PLUGIN_GUIDE.md for requirements, best practices, and a complete example plugin.
See CONTRIBUTING.md for setup instructions, development workflow, and conventions.
For maintainers adding official plugins, see docs/BUILTIN_PLUGIN_GUIDE.md.
For maintainers: See docs/RELEASING.md for step-by-step release instructions.
See SECURITY.md for the security model and how to report vulnerabilities.
Made with love by Francisco J. Revoredo (with a little help from Claude Code).