vibeboard
llms.txt0 starsChanged 3 months agoMITView on GitHub
vibeboard is an open-source (MIT) platform for running conferences and events end to end: publish a call for papers, collect and review submissions, decide, onboard speakers, build the schedule, and publish the public event site. One database powers the admin app, the public pages, the feeds, and the REST API - there is no separate "publish to website" step. Live app: https://vibeboard.io | Source: https://github.com/RRaphaell/vibeboard Key concepts:
In this repository2 other files it gives its agents.
- public/llms-full.txtllms.txt
- react-routerSkill
The file
Files
# vibeboard
> vibeboard is an open-source (MIT) platform for running conferences and events end to end: publish a call for papers, collect and review submissions, decide, onboard speakers, build the schedule, and publish the public event site. One database powers the admin app, the public pages, the feeds, and the REST API - there is no separate "publish to website" step.
Live app: https://vibeboard.io | Source: https://github.com/RRaphaell/vibeboard
Key concepts:
- **Event** - one conference. Everything (forms, submissions, reviews, rooms, tracks, speakers, schedule, public site) is scoped to an event and addressed by its slug. Admin URLs are `/e/<event-slug>/...`; public URLs are `/<event-slug>/...`.
- **Submission (session)** - a talk proposal. Status is one of `draft`, `pending`, `maybe`, `accepted`, `declined`, `withdrawn`. Accepted submissions become schedulable sessions.
- **Person / speaker** - a human attached to an event; may be the primary submitter or a co-speaker. Speakers sign in to a portal at `/portal`.
- **Review round** - a named round with its own scorecard (weighted numeric, dropdown, and text criteria), reviewer pool, assignments, and optional anonymization.
- **Roles** - organizer (full access to an event), reviewer (only their assignments), speaker (only their own submissions and tasks).
## Try it
- [Live demo](https://vibeboard.io/login): one-click demo sign-in cards for three roles. Organizer `admin@demo`, reviewer `reviewer@demo`, speaker `speaker@demo`; password `demo-demo-demo` for all three. The seeded event is `ai-builders-summit-2026`.
- [Public call for papers](https://vibeboard.io/submit/ai-builders-summit-2026): the speaker-facing submission wizard. No account needed to fill it in - the account step comes last.
## Organizer surfaces (sign-in required, `/e/<event-slug>/...`)
- [Dashboard](https://vibeboard.io/e/ai-builders-summit-2026/dashboard): what needs attention - submission counts, review progress, decisions, speakers behind on tasks, one-click reminders.
- [Submissions](https://vibeboard.io/e/ai-builders-summit-2026/submissions): every proposal with search, track filters, status tabs, and the accept/decline/maybe decision dialog (which states its consequences before you confirm).
- [Review](https://vibeboard.io/e/ai-builders-summit-2026/review): rounds, scorecards, reviewer assignment (manual, track-filtered bulk, or auto-distribute with caps), progress tracking, weighted results, CSV export.
- [Agenda](https://vibeboard.io/e/ai-builders-summit-2026/agenda): day x room grid. Drag accepted talks from the unscheduled tray onto the grid, or click a talk then click a slot. Conflicts (room double-booking, speaker double-booking) recompute on every move. Publishing is an explicit action; speaker emails are batched behind a Notify button.
- [Speakers](https://vibeboard.io/e/ai-builders-summit-2026/speakers): roster, CSV import, portal invites, per-speaker task progress.
- [Tasks](https://vibeboard.io/e/ai-builders-summit-2026/tasks): speaker onboarding checklists - what is outstanding, who is overdue, nudges. A daily cron sends overdue digests.
- [Files](https://vibeboard.io/e/ai-builders-summit-2026/files): everything speakers uploaded, versioned, with comment threads and bulk ZIP export.
- [Forms](https://vibeboard.io/e/ai-builders-summit-2026/forms): CFP form builder - nine field types, required flags, help text, conditional show-when rules, open/close windows, per-speaker submission limits. Each form has its own public URL.
- [Emails](https://vibeboard.io/e/ai-builders-summit-2026/emails): editable per-event templates with merge tags, plus a log of every send.
- [Compose](https://vibeboard.io/e/ai-builders-summit-2026/compose): bulk email to a filtered speaker set, with per-recipient preview before sending.
- [Embeds](https://vibeboard.io/e/ai-builders-summit-2026/embeds): copy-paste `<script>` embed and feed URLs for putting the schedule on your own site.
- [Settings](https://vibeboard.io/e/ai-builders-summit-2026/settings): event details, tracks, rooms, session formats and default durations, team members and roles, API keys.
## Speaker and reviewer surfaces
- [Speaker portal](https://vibeboard.io/portal): journey view (Submitted -> In review -> Decision -> Onboarding -> Scheduled), submission editing, profile and headshot, task checklist with file uploads, withdraw.
- [Reviewer queue](https://vibeboard.io/e/ai-builders-summit-2026/review/queue): only the submissions assigned to that reviewer, unreviewed first, scored against the round's scorecard.
## Public event site (no sign-in, `/<event-slug>/...`)
- [Event root](https://vibeboard.io/ai-builders-summit-2026): redirects to the sessions page; the URL organizers share.
- [Sessions](https://vibeboard.io/ai-builders-summit-2026/sessions): searchable session list with track, format, and room filters.
- [Speakers](https://vibeboard.io/ai-builders-summit-2026/speakers): alphabetical speaker directory with bios.
- [Agenda](https://vibeboard.io/ai-builders-summit-2026/agenda): the published day x room schedule.
- [Itinerary](https://vibeboard.io/ai-builders-summit-2026/itinerary): attendee schedule builder - pick sessions, export them as a calendar file.
- [Gallery](https://vibeboard.io/ai-builders-summit-2026/gallery): speaker photo grid.
- [JSON feed](https://vibeboard.io/ai-builders-summit-2026/feed.json): the published schedule as JSON. Accepts `?track=` and `?format=` (id or name). Returns `{"published": false, "sessions": []}` until the agenda is published.
- [iCal feed](https://vibeboard.io/ai-builders-summit-2026/feed.ics): the published schedule as an `.ics` calendar.
- [Script embed](https://vibeboard.io/ai-builders-summit-2026/embed.js): one-line `<script>` that renders the schedule into any page. Accepts `?track=`, `?format=`, `?accent=%23RRGGBB`.
Public pages only show sessions whose content has been approved and only show the schedule once the agenda is published.
## REST API
Read-only, JSON, versioned at `/api/v1`. Authentication is a per-event bearer key created in Settings -> API; the key is shown once and only a SHA-256 hash is stored. Every query is scoped to the key's event, so another event's records return `404`. CORS is open (`Access-Control-Allow-Origin: *`); only `GET` and `OPTIONS` are accepted. Rate limit: 120 requests/minute, then `429` with `Retry-After`. Errors are `{"error":{"code","message"}}`. Timestamps are ISO-8601 UTC. List endpoints take `limit` (default 50, max 100) and `offset`, and return a `pagination` object with `total` and `hasMore`.
```
curl https://vibeboard.io/api/v1/sessions?status=accepted -H "Authorization: Bearer <key>"
```
- [GET /api/v1](https://vibeboard.io/api/v1): endpoint directory. The only route that works without a key.
- `GET /api/v1/event`: the event the key belongs to.
- `GET /api/v1/sessions`: submissions. Filters: `status`, `track`, `format`. Paginated.
- `GET /api/v1/sessions/{id}`: one submission with its speakers.
- `GET /api/v1/speakers`: speaker roster. Paginated.
- `GET /api/v1/speakers/{id}`: one speaker with their sessions.
- `GET /api/v1/schedule`: the published agenda, grouped by day.
## Source and docs
- [Repository and README](https://github.com/RRaphaell/vibeboard): install, run locally, seed demo data, deploy to your own Cloudflare account.
- [Architecture](https://github.com/RRaphaell/vibeboard/blob/main/docs/ARCHITECTURE.md): stack, module map, request flows.
- [Data model](https://github.com/RRaphaell/vibeboard/blob/main/docs/DATA_MODEL.md): the schema every surface reads from.
- [Design system](https://github.com/RRaphaell/vibeboard/blob/main/docs/DESIGN.md): tokens and UI kit.
- [Expanded map for agents](https://vibeboard.io/llms-full.txt): the same map with more operational detail.
## Stack
Cloudflare Workers (edge SSR) | React Router v8 framework mode | D1 (SQLite) via Drizzle ORM | R2 for uploads | Resend for email | Tailwind CSS v4 | TypeScript | Vitest running inside workerd | Playwright. MIT licensed.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

