Note taking app with sync to a wiki / md
Datalist suggestions are unreliably supported on mobile/PWA browsers, so existing books/topics silently failed to show up when starting the app on a new device. Replaced with a native <select> (plus an "add new" option) and made the field mandatory end-to-end. 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).