Jotter
🚀 Try the Online Demo: simon123h.github.io/Jotter/demo/
Jotter is a local-first, privacy-focused task management web application designed to help you organize tasks without losing data ownership. Modeled as a Markdown Kanban board, Jotter helps combat "task flooding" through filtering and an intuitive UI, all while storing your data locally in Open Knowledge Format (OKF) compliant plain-text Markdown files. The integrated git support allows for syncing tasks seamlessly across devices.
Documentation: simon123h.github.io/Jotter
🌟 Key Features
- Data Ownership & Portability: Tasks are stored as human-readable
.mdmarkdown files. Your data remains yours, fully accessible even if you stop using Jotter. The files are formatted according to the Open Knowledge Format (OKF). - Combat Task Flooding: Built for dealing with hundreds of open tasks.
- Flexible Views: Organise tasks your way with Kanban columns, list view, a priority-based Eisenhower Matrix, and a chronological Time View grouping by due dates.
- Smart Task Creation: Create rich tasks quickly with keywords for tags, due dates or priorities in the task title.
- Offline-First & Local Index: Runs entirely on your computer with a lightning-fast local SQLite database index. If the database index is ever deleted, the system automatically rebuilds it instantly from your markdown files.
- Selective Per-Project Git Sync: Enable synchronization for individual projects by connecting them to different Git remotes. Keep "Home" local while sharing "Work" with a team.
- Git-Backed Time Machine: Roll your workspace or individual projects back to any historical snapshot in your Git history using a dedicated, searchable, and spacious dialog. Automatically creates pre-restore backup commits so you can revert any rollback operation at any time.
- Multi-Language Support: Fully localized in English and German.
- Model Context Protocol (MCP) Support: Connect AI assistants directly to your local Kanban board via
jotter mcp. - Excel & CSV Import & Export: Seamlessly import tasks, checklists, priorities, and custom columns from any standard Excel or CSV spreadsheet with support for sheet auto-detection, interactive previews, and custom mappings. Export all tasks from your current filtered view as
.xlsxor.csvclient-side. - Obsidian & PKM Native: Project directories include an
index.mdmanifest compatible with Obsidian Folder Notes and PKM namespaces, allowing task boards to live directly within your personal knowledge vault. - Android App: Carry your tasks in your pocket with the native Android APK. Operates 100% offline using local Markdown files. Syncs seamlessly with your desktop via Syncthing, Git, or cloud drives.
📦 Quick Start
Option 1: Run directly with pipx (Recommended for Desktop/Python users)
No cloning or Node.js required—just Python:
pipx run jotter-app
Or install globally in an isolated environment:
pipx install jotter-app
jotter
Option 2: Standalone Desktop Executable (Zero Python Required)
Download the pre-compiled jotter-server executable from GitHub Releases for Windows, Linux, or macOS. No runtime or build tools needed.
Option 3: Android Mobile App (.apk)
Download the signed jotter-*-android.apk from GitHub Releases and install it on your Android phone. No server or internet connection required. Point it to your synced Markdown folder (via Syncthing, Git, etc.) for cross-device synchronization.
Option 4: Run from Source
- Clone the repository:
git clone https://github.com/simon123h/jotter.git cd jotter
- Install dependencies:
pip install -e .
- Start the server:
jotter # or: python3 run.py
Open your browser at http://localhost:58271.
Jotter automatically handles both portable and global configurations out of the box:
- Portable Mode (Self-Contained): If a
tasks/directory is present in the folder you execute Jotter from, tasks will default to./tasksand configurations to./jotter.yamlin that folder. - Global / Installed Mode: Otherwise, Jotter uses standard OS-specific directories for both data and settings storage (such as XDG standard paths on Linux, AppData on Windows, and Application Support on macOS).
- Auto-Config Generation: If no configuration file exists at all on startup, Jotter will automatically create a default, annotated
jotter.yamltemplate file for you at the default location.
For advanced customization and full directory details, please see the user configuration documentation.
🛠️ Development & Testing
# Install frontend and backend dependencies
npm run install:all
# Run backend and frontend dev servers concurrently
npm run dev
# Run all test suites (Pytest + Vitest)
npm run test
# Run frontend E2E browser tests (Playwright)
cd frontend && npx playwright test
📖 Documentation
The complete documentation is available at simon123h.github.io/Jotter/.
Alternatively, you can refer to the raw Markdown source files in the docs/ folder:
- User Guide & Setup:
- Developer Reference:
- Architectural Design (arc42)
- API Documentation (Interactive OpenAPI/Swagger) (Available when running the server)
- Contributing Guidelines
Metadata
Release files for jotter-app 3.9.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jotter_app-3.9.10.tar.gz | 2.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jotter_app-3.9.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / jotter_app-3.9.10.tar.gz
| Download URL | jotter_app-3.9.10.tar.gz |
|---|---|
| Size | 2.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00192dc25b2d2e655b5a539b7528eb5ce6d42dad6575e811f8b1b39569d18ddd
|
|
BLAKE2b-256 checksum How to use checksums |
9d7615482ef181151643001e685f2a1c098976ffcaeff39c9b62e698dc8a3546
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / jotter_app-3.9.10-py3-none-any.whl
| Download URL | jotter_app-3.9.10-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2c7fdd12250b8d590dfc48ea2d4317c095951c4173ff1a67d9fb2287337b9355
|
|
BLAKE2b-256 checksum How to use checksums |
0b1d429fa44c11c48fa92408792a9346b8e167df82c7468b7c5159ed90fc7c72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log