Files

50 lines
2.3 KiB
Markdown

# Prism Notes
PocketBase + Microsoft Graph OAuth capture app. Frontend is a Tailwind-powered note and audio capture page; backend is a Bun/Hono server that validates PocketBase tokens and can mint Graph tokens (client credentials flow).
## What you get
- `server.ts` — Bun + Hono server with `/health`, `/api/graph/status`, `/api/submit`, and static `index.html` serving.
- `index.html` — Microsoft OAuth via PocketBase plus note/audio capture UI.
- `tsconfig.json`, `package.json`, `bun.lock` — project configuration.
## Setup
1) Install Bun (https://bun.sh).
2) Add a `.env` file at the project root with the variables below.
3) Install deps: `bun install`
4) Run dev server: `bun run --watch server.ts` (default port **3030**).
Open http://localhost:3030 and sign in with Microsoft.
## Environment variables
| Name | Description |
| --- | --- |
| `CLIENT_ID` | Azure AD app (client) ID |
| `CLIENT_SECRET` | Azure AD client secret |
| `TENANT_ID` | Azure AD tenant ID |
| `REDIRECT_URI` | Redirect URI configured in the Azure app |
| `PB_DB` | PocketBase URL (e.g., http://127.0.0.1:8090) |
| `PB_COLLECTION` | Collection to store submissions (default `Job_Info_TestEnv`) |
| `PB_AUTH_COLLECTION` | Auth collection for token refresh (default `Users`) |
| `PORT` | Server port (default **3030**, enforced in package.json `dev` script) |
## Notes
- `getGraphToken()` in `server.ts` is ready for Graph API calls; extend with additional routes as needed.
- `/api/submit` validates the provided `pbToken` then writes the payload to `PB_COLLECTION`; adjust fields to match your schema.
- Static file serving uses `index.html` from the repo root.
## OneNote sync (append MVP)
- Backend endpoint: `POST /api/onenote/append`
- Required headers:
- `Authorization: Bearer <delegated Microsoft access token>`
- `x-pb-token: <PocketBase user token>`
- Current hardcoded target in `server.ts`:
- Host: `czflex.sharepoint.com`
- Site path: `/sites/Team`
- Section ID: `ed504699-67be-47a3-838a-e01ec17198fb`
- Page ID: `addbbca7-18ce-4d8d-833e-96cc08d990bc`
- Frontend buttons:
- New note: `Submit + Sync OneNote`
- Note detail: `Sync to OneNote`
Important: sync requires a delegated Microsoft token with OneNote write permissions. The UI captures this from PocketBase Microsoft OAuth metadata when available.