The book/topic field was really always a general-purpose tag, and now that notes can come from more than just books (camera-scanned pages, free text), "book" was misleading in the UI as well as the code. Renames files, functions, variables, the API route (/api/books -> /api/topics), the note payload field, and the cache TTL env var (BOOK_CACHE_TTL_MS -> TOPIC_CACHE_TTL_MS) for consistency. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C3DGg1pvmvf81zXs4pk1J7
35 lines
1.5 KiB
Markdown
35 lines
1.5 KiB
Markdown
# 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 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 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).
|