The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Lineup listing page.
Turn one sentence into a full event pack — inside ChatGPT.
Lineup is a ChatGPT App (built on Alpic Skybridge) that takes a freeform event description and generates a Luma-style event card, an identity badge for every attendee (generated avatar + role + scannable vCard QR), an RSVP QR, and a calendar .ics — in about ten seconds, in the conversation you're already in.
"Announce Friday's panel — speakers Lea, Marco and Priya — accent red, notionists style."

Built for Berlin Hack Night (May 2026) with the Skybridge framework. Coded mainly with Claude Code, with OpenAI Codex in support.
Keep Luma for the real event page. But the moment you need to announce it — an email, a Slack post, a story, a "who's speaking" card — you're back to juggling Canva + a QR generator + a calendar file. Lineup is the 10-second asset generator that lives in the chat: one sentence in, shareable assets out.
It complements Luma / Mailchimp / your CMS rather than replacing them.
The whole crew renders in one consistent style. Two ways to set it:
| Style | Vibe | Try saying… |
|---|---|---|
notionists (default) | Notion-style sketch — friendly meetups | "…default style" (or omit) |
lorelei | Monochrome line art — calm, professional | "…in lorelei line-art style" |
bottts | Colorful robots — playful trading cards | "…make it a hackathon robot roster" |
shapes | Abstract geometric — anonymous-looking | "…anonymous voting cards" |
people + a moment + a scannable code reshapes into:
| Use case | What it gives you |
|---|---|
| 📣 Announce an event | Card + QR + .ics to paste into an email or post |
| 🎤 Share who's speaking | A badge per speaker — avatar, role, contact QR |
| 🗳️ Voting / polls | A unique card + ballot QR per voter |
| 🪪 Conference ID / access | Printable badge, role, check-in QR |
| 🤝 Networking | Badge QR drops your contact into a phone |
| 🏆 Team rosters / crews | A collectible "trading card" per member |
The "Share this page" QR/link encodes the entire compact payload in the URL #fragment. A static page (docs/index.html on GitHub Pages) decodes it and regenerates the event card + badges client-side (avatars and QRs are deterministic).
Nothing is stored in any database. Browsers never send URL fragments to servers, so neither GitHub nor the author can read a shared link — only the people you send it to can.
🔗 Live share page: https://kaiser-data.github.io/lineup/ (open with a Lineup #… fragment)
https://lineup-bf157e35.alpic.live/mcphttps://lineup-bf157e35.alpic.live/mcp · Authentication: No Auth@lineup Generate a Lineup for Berlin Hack Night at Mindspace, 18:00, accent red, with Marty (Host), Lea (Judge), and Tomás (Hacker).Everything is deterministic and pure-JS where it matters (avatars, QRs, calendar), so the same input always produces the same pack — which is exactly why the shareable page can regenerate it from the link alone.
The Excalidraw source is at
architecture.excalidraw— open it at excalidraw.com to edit or export a hand-drawn version.
Skybridge · React · TypeScript · qrcode / qrcode.react · @dicebear · ics · satori · @resvg/resvg-js
Tools live in src/server.ts; the view is src/views/generate-lineup.tsx; generators are in src/lib/.
Helper scripts in scripts/: status.sh, test.sh <payload>, save-artifacts.sh, tunnel.sh, stop.sh. Test payloads (incl. voting / conference / announcement use cases) in test-payloads.json.
Yes — Lineup is fully self-hostable, and it generates every graphic itself.
There is no external image service and no API key: avatars (DiceBear),
QR codes (qrcode), the calendar .ics
(ics) and the 480×640 PNG badges
(Satori + Resvg)
are all rendered in pure JavaScript/WASM inside your own deployment. Host it
anywhere that runs Node or an edge runtime and you own the whole pipeline.
The MCP app (the server + ChatGPT view):
Because the generators are pure-JS / edge-friendly (no sharp, no native
canvas), Cloudflare Workers is a viable target too.
The share page (docs/index.html) is a single static file with no backend —
host it on GitHub Pages (the default), Netlify, Cloudflare Pages, or any static
host. It regenerates the whole pack client-side from the link #fragment, so
self-hosting it stores nothing and needs no server.
Lineup itself is MIT — see LICENSE.
It is built on third-party frameworks and assets, each under its own license. The generated graphic in particular carries attribution requirements:
lorelei (Lisa Wischofsky, CC0 1.0), notionists (Zoish, CC0 1.0),
bottts (Pablo Stanley, free for personal & commercial use),
shapes (DiceBear, CC0 1.0).The full component list and licenses are in
THIRD-PARTY-NOTICES.md.