A Vite app for writing, previewing, and publishing proposal snapshots. Published proposals are stored in Vercel Blob and shared as public ?blob=... links.
Prerequisites:
- Node.js
- A Vercel Blob store with a read/write token
Setup:
- Install dependencies with
npm install - Copy
.env.exampleto.env.local - Set
BLOB_READ_WRITE_TOKENandPUBLISH_API_TOKENin.env.local - Run
npm run dev
vite dev also serves the local /api/publish, /api/publish-bot, and /api/proposal endpoints, so the full publish flow works locally.
- Import the repo into Vercel as a Vite project
- Add
BLOB_READ_WRITE_TOKENandPUBLISH_API_TOKENto the project environment variables - Deploy
The production app uses:
POST /api/publishto create immutable proposal snapshots- direct Blob-backed share links so the public viewer can load proposal JSON without a second server lookup
POST /api/publish-botas a private bearer-token endpoint for bots / CLI publishing
Private endpoint:
POST /api/publish-bot- header:
Authorization: Bearer <PUBLISH_API_TOKEN> - body:
{ title, slug, markdownContent, coverImage }
Local CLI:
npm run publish:md -- ./proposal.md --title "Base Proposal" --slug basedOptional arguments:
--cover ./cover.png--cover https://...--origin https://proposal.nerdconf.com