155 lines
6.2 KiB
Markdown
155 lines
6.2 KiB
Markdown
---
|
||
title: "Paper-First, Server-Backed: My North Star Productivity System (Roadmap)"
|
||
date: 2025-08-17
|
||
tags: ["stationery","paper","zettelkasten","self-hosting","linux","automation","ai","hugo","nextcloud"]
|
||
series: ["Analog & Slipbox"]
|
||
summary: "A practical, paper-first system that hands off to my server for capture, search, and publishing."
|
||
draft: false
|
||
---
|
||
|
||
## The promise (in one sentence)
|
||
**Think on paper; let the server do the grunt work.** Everything starts with pen and card. The server handles capture, OCR, search, and publishing—quietly, reliably, and without fuss.
|
||
|
||
## Who this is for
|
||
People who like nice paper and tidy systems, and also run a homelab or at least don’t mind one small Linux box humming along in the background.
|
||
|
||
## What you need
|
||
- **Stationery kit:** A6 (or Plotter Bible) cards/pages, a date-ID stamp (e.g., `20250816-01`), and a decent pen.
|
||
- **Phone with a scanner app** (the stock iOS “Scan Document” works).
|
||
- **Sync target:** Nextcloud (or Syncthing) with a folder called `INBOX`.
|
||
- **Server bits (Ubuntu/Debian):**
|
||
- OCR & tools: `tesseract-ocr`, `ocrmypdf`, `pdftotext`, `zbar-tools`, `img2pdf`
|
||
- Python + packages: `python3-pip`, then `pip install watchdog pypdf python-frontmatter`
|
||
- **A notes vault** (e.g., `~/Nextcloud/notes/zettels`).
|
||
- **Static site generator:** Hugo.
|
||
- **Optional AI** for summaries/tags (light touch—assistant, not author).
|
||
|
||
## The flow (bird’s-eye view)
|
||
**Paper → Scan → `INBOX/` → OCR + ID → Markdown & PDF → Vault → Draft → Publish**
|
||
|
||
- Every card/page gets an **ID** and a **short title**.
|
||
- You scan to `INBOX/`.
|
||
- A tiny server watcher:
|
||
- OCRs the scan,
|
||
- grabs the ID (from text or QR),
|
||
- creates `ID-title.md` with front matter + extracted text,
|
||
- parks the pair (`.md` + `.pdf`) in your vault.
|
||
- Promotable notes become blog posts. The rest stay as durable, searchable notes.
|
||
|
||
## Set it up (step-by-step)
|
||
|
||
### 1) Standardize IDs on paper
|
||
- Stamp the top-right of every card with `YYYYMMDD-##` (e.g., `20250816-01`).
|
||
- Under it: **Title**, then a single line: **Tags** and **Next Action**.
|
||
- Optional: print a tiny QR with the ID (helps linking later; not required).
|
||
|
||
### 2) Create the capture lane
|
||
- In Nextcloud, make `/Nextcloud/INBOX/` and `/Nextcloud/notes/zettels/`.
|
||
- On your phone, a Shortcut that:
|
||
- Scans → saves PDF to `INBOX/`
|
||
- Names it something dumb like `scan.pdf` (the server will rename).
|
||
|
||
### 3) Install the server tools
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install -y tesseract-ocr ocrmypdf poppler-utils zbar-tools img2pdf python3-pip
|
||
pip3 install watchdog pypdf frontmatter
|
||
```
|
||
|
||
### 4) Wire the watcher (high level)
|
||
- The watcher does four things:
|
||
1) **Normalize & OCR** any image/PDF dropped in `INBOX/`.
|
||
2) **Detect the ID** (regex on text; optional QR fallback).
|
||
3) **Rename** to `ID-title.pdf` and create a matching `ID-title.md` with:
|
||
```yaml
|
||
---
|
||
id: 20250816-01
|
||
title: "Short, human title"
|
||
tags: []
|
||
created: 2025-08-16
|
||
---
|
||
```
|
||
4) **Move** both into `notes/zettels/`.
|
||
|
||
> You can run the watcher as a `systemd` service so it survives reboots:
|
||
|
||
```
|
||
# /etc/systemd/system/paper-watcher.service
|
||
[Unit]
|
||
Description=Paper ingest watcher
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=rock
|
||
ExecStart=/usr/bin/python3 /home/rock/bin/paper_ingest.py
|
||
Restart=on-failure
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
Then:
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable --now paper-watcher
|
||
```
|
||
|
||
*(I’ll publish my `paper_ingest.py` skeleton in a separate post; the roadmap here is the “what” and “why”—keep reading.)*
|
||
|
||
### 5) Keep AI on a leash (optional but handy)
|
||
- Start manual: paste the OCR’d text into your assistant and ask for **3 bullets + 5 tags**. Paste those into the note’s front matter.
|
||
- Later, add an API call in the watcher to auto-suggest tags/summary. You still review.
|
||
|
||
### 6) Publishing with Hugo (light touch)
|
||
- Add a `series` taxonomy so you can group posts like “Analog & Slipbox” or “Self-Hosting & Linux”.
|
||
- Promote a note to a post by:
|
||
- Copying its `.md` into `content/posts/`,
|
||
- Keeping the `id` in front matter,
|
||
- Adding a link back to the card’s PDF for provenance.
|
||
|
||
## Operating rhythm (the part that actually makes this work)
|
||
|
||
**Daily (AM, 5–8 min):**
|
||
- Stamp 2–3 cards. One gets a title and a single next action.
|
||
|
||
**Daily (PM, 10–15 min):**
|
||
- Scan the day’s cards to `INBOX/`. Let the server sweep them into place.
|
||
- Skim the new Markdown; fix the title if the OCR guessed poorly.
|
||
|
||
**Weekly (30 min):**
|
||
- Pick one note and promote it to a draft post (600–900 words).
|
||
- Cross-link two related notes. Don’t overthink it—just link.
|
||
|
||
**Monthly (30–45 min):**
|
||
- Trim dead tags. Backup vault. Review the watcher logs for errors.
|
||
|
||
## Guardrails & gotchas (learned the hard way)
|
||
- **Don’t chase feature creep.** If the pipeline breaks, you won’t scan. Keep it boring.
|
||
- **Prefer PDFs over JPGs.** OCR is cleaner; search is better.
|
||
- **Title discipline beats tagging sprawl.** Short titles with real nouns.
|
||
- **AI is seasoning, not the stew.** Use it to suggest, not decide.
|
||
|
||
## FAQ (the questions people ask)
|
||
**Does this replace notebooks?**
|
||
No. It respects them. Paper stays the thinking surface; the server just stops your ideas from vanishing in a drawer.
|
||
|
||
**What if I’m offline?**
|
||
Write as usual. Scan later. Nothing in this depends on constant connectivity.
|
||
|
||
**Is this private?**
|
||
Yes—if you keep Nextcloud self-hosted and don’t spray your vault across third-party services. Encrypt backups.
|
||
|
||
**Why not just type everything?**
|
||
Because writing by hand helps you think straighter. This lets you keep that advantage without paying a search penalty later.
|
||
|
||
## What I’ll publish next (so you can copy it)
|
||
1) **Printable A6 + Plotter Bible templates** (ID/Title/Tags/Next boxes).
|
||
2) **The watcher script** (`paper_ingest.py`) with install notes.
|
||
3) **A Shortcuts/iOS scan-to-INBOX recipe**.
|
||
4) **A TRAMP/Emacs guide** for editing your vault and site remotely.
|
||
|
||
---
|
||
|
||
### About the name “North Star”
|
||
“North Star” is a common phrase for a guiding principle or metric. I’m using it here as **my label** for this specific setup—**paper-first, server-backed**—not claiming an existing trademarked methodology. In short: the phrase exists everywhere; **this system and framing are mine**.
|