A local daily work logger with rich markdown editing
Project description
MarkDay
A local-first daily work logger with rich Markdown editing, calendar navigation, search, and math support. All data stays on your machine — no cloud, no accounts.
Features
| Feature | Details |
|---|---|
| Markdown editor | Auto-continuing lists, smart indent/unindent, toolbar shortcuts |
| Calendar | Sidebar mini-calendar, dots on days with entries, year/month nav |
| Dark / Light themes | Toggle with one click; persisted in localStorage |
| Search | Full-text search across all years with highlighted snippets |
| Preview | On-demand split-pane preview with math (KaTeX) and syntax highlighting |
| Math | KaTeX — inline $...$ and display $$...$$ |
| Keyboard shortcuts | VS Code–style: Ctrl+B/I/S/P/F/D, Alt+↑↓, Tab indent, list continuation |
| Local storage | One Markdown file per year at ~/.markday/YYYY.md |
Installation
pip install .
Or for development (editable install):
pip install -e .
Usage
markday # start on default port 5500, open browser
markday --port 8080 # custom port
markday --no-browser # don't auto-open browser
markday --debug # Flask debug mode
Set the data directory via environment variable:
MARKDAY_DIR=/path/to/notes markday
Data format
Entries are stored as plain Markdown in ~/.markday/YYYY.md:
# Mark Day 2026
## 2026-05-28
- Implemented FNO baseline on Burgers' equation
- Compared modes=12 vs modes=24: higher modes overfit on small dataset
## 2026-05-29
### Meetings
- Sync with team on neural operator paper
### TODO
- [ ] Run ablation on FiLM conditioning strength
- [x] Fix memory leak in DataLoader
Because the format is plain Markdown, you can edit files directly in any editor, commit them to git, grep them, or process them with any Markdown tool.
Keyboard shortcuts
| Shortcut | Action |
|---|---|
Ctrl+S |
Save |
Ctrl+B |
Bold |
Ctrl+I |
Italic |
Ctrl+P |
Toggle preview |
Ctrl+F |
Focus search |
Ctrl+/ |
Toggle HTML comment on line |
Ctrl+D |
Duplicate line |
Alt+↑ / Alt+↓ |
Move line up/down |
Ctrl+] / Ctrl+[ |
Indent / Unindent |
Tab / Shift+Tab |
Indent / Unindent (2 spaces) |
Enter |
Smart list continuation |
Ctrl+Home / Ctrl+End |
Jump to top / bottom |
Esc |
Close modals |
Math examples
Inline: $E = mc^2$
Display:
$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
Neural operator notation:
$$
\mathcal{G}_\theta : \mathcal{A} \to \mathcal{U}, \quad u = \mathcal{G}_\theta(a)
$$
Requirements
- Python ≥ 3.10
- Flask ≥ 3.0
- markdown ≥ 3.6
- pygments ≥ 2.17
All other dependencies (CodeMirror, KaTeX, highlight.js) are loaded from CDN.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file markday-0.1.0.tar.gz.
File metadata
- Download URL: markday-0.1.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53f36ccf81518fe7c93498516d08fc5e8607404acc6d64924cac974adbd0840c
|
|
| MD5 |
d777846584352e770b3d36df02396bbb
|
|
| BLAKE2b-256 |
28c789496c2babfbd595fe8acfff4257c95089fbb1765e781862e350dc7ebdd2
|
File details
Details for the file markday-0.1.0-py3-none-any.whl.
File metadata
- Download URL: markday-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd43c2fc974923225c1c5442ba785722fb6cbc2426198e67abfffb3e6d293eec
|
|
| MD5 |
d533c68f86f9eefcca97be7c7041e5e8
|
|
| BLAKE2b-256 |
7f72eaabc868fd9fcc4f735a94e632ba2f63194936726e4f92e06408d6138f3b
|