Note taking app with sync to a wiki / md
The generated icons were solid brand-blue squares with no glyph. gen-icons.py now procedurally draws a page/notes icon (folded corner, text lines) with anti-aliasing, kept within the maskable-icon safe zone so Android's adaptive-icon masks don't clip it. Also adds an apple-touch-icon and wires favicon/apple-touch-icon links into index.html, and marks manifest icons purpose "any maskable". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C3DGg1pvmvf81zXs4pk1J7 |
||
|---|---|---|
| client | ||
| server | ||
| shared | ||
| .env.example | ||
| .eslintrc.json | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Notes
A small PWA for jotting down short notes while reading — e.g. an interesting sentence from a book. Each note can optionally be tagged with a book/topic (existing or new) and 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"). Untagged notes are appended to that parent page itself.
Stack
npm workspaces monorepo:
shared/— TypeScript types & Zod schemas shared by client and serverserver/— 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
- Copy
.env.exampleto.envand fill in:SESSION_SECRET,ADMIN_USERNAME,ADMIN_PASSWORD— the app's own loginNEXTCLOUD_URL,NEXTCLOUD_USERNAME,NEXTCLOUD_APP_PASSWORD— generate an app password under Nextcloud Settings → Security → App passwordsCOLLECTIVE_NAME— the exact name of an existing collective the user has access to
- Install dependencies:
npm install - Run in dev mode:
npm run dev(client onhttp://localhost:5173, proxies/apito 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).