Note taking app with sync to a wiki / md
Find a file
Claudio Schaad 3da4dec452 Let the user crop the scanned photo before OCR
Whole-page photos carry far more text than the one sentence someone
wants, hurting OCR accuracy and letting stray text leak into notes.
Adds a crop overlay (drag-to-select via Pointer Events, works for
touch and mouse) between capture and OCR, with a "use full photo"
escape hatch for already-tight shots. recognizeText now takes a Blob
so it accepts either the cropped canvas output or the original file.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C3DGg1pvmvf81zXs4pk1J7
2026-08-27 18:43:47 +02:00
client Let the user crop the scanned photo before OCR 2026-08-27 18:43:47 +02:00
server Make book/topic a required select instead of datalist input 2026-08-27 17:43:11 +02:00
shared Make book/topic a required select instead of datalist input 2026-08-27 17:43:11 +02:00
.env.example Scaffold Reading Notes app: React/Vite PWA client, Express server with Nextcloud Collectives integration 2026-08-26 20:07:40 +02:00
.eslintrc.json Scaffold Reading Notes app: React/Vite PWA client, Express server with Nextcloud Collectives integration 2026-08-26 20:07:40 +02:00
.gitignore Scaffold Reading Notes app: React/Vite PWA client, Express server with Nextcloud Collectives integration 2026-08-26 20:07:40 +02:00
docker-compose.yml Scaffold Reading Notes app: React/Vite PWA client, Express server with Nextcloud Collectives integration 2026-08-26 20:07:40 +02:00
Dockerfile Scaffold Reading Notes app: React/Vite PWA client, Express server with Nextcloud Collectives integration 2026-08-26 20:07:40 +02:00
LICENSE Initial commit 2026-08-26 15:20:01 +00:00
package-lock.json Add camera scan-to-text for notes via on-device OCR 2026-08-27 18:19:25 +02:00
package.json Scaffold Reading Notes app: React/Vite PWA client, Express server with Nextcloud Collectives integration 2026-08-26 20:07:40 +02:00
README.md Add camera scan-to-text for notes via on-device OCR 2026-08-27 18:19:25 +02:00

Notes

A small PWA for jotting down short notes while reading — e.g. an interesting sentence from a book. Each note is tagged with a book/topic (existing or new) and can optionally include a page number. Notes are saved as markdown directly into pages of a Nextcloud Collective, one page per book/topic, nested under a parent page (default: "Reading Notes"). A note's text can be typed by hand or filled in by scanning a photo of the page (on-device OCR via tesseract.js — no image or text ever leaves the device for this step).

Stack

npm workspaces monorepo:

  • shared/ — TypeScript types & Zod schemas shared by client and server
  • server/ — Express API: session auth, and a Nextcloud integration that talks to both the Collectives OCS API (page metadata/creation) and WebDAV (page content read/append)
  • client/ — React + Vite PWA

Setup

  1. Copy .env.example to .env and fill in:
    • SESSION_SECRET, ADMIN_USERNAME, ADMIN_PASSWORD — the app's own login
    • NEXTCLOUD_URL, NEXTCLOUD_USERNAME, NEXTCLOUD_APP_PASSWORD — generate an app password under Nextcloud Settings → Security → App passwords
    • COLLECTIVE_NAME — the exact name of an existing collective the user has access to
  2. Install dependencies: npm install
  3. Run in dev mode: npm run dev (client on http://localhost:5173, proxies /api to the server on port 3000)

Build & run

npm run build
npm run start

Docker

docker compose up --build

Reads secrets from .env in the project root (same variables as above).