# 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 ` - `x-pb-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.