Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Career Advancement Council — ISB session booking platform
Translation pending
BusinessTypeScript · CSSGitHub @yashrawalisb-makerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A self-serve session booking platform for the Career Advancement Council (CAC) at ISB.
Participants pick sessions under multi-day events (e.g. "OCC") within a per-event ticket
allotment; admins manage events, sessions, the roster, ticket allotments, and post-deadline
auto-allocation of unused tickets.
Full spec: CAC_Session_Booking_PRD.md,
CAC_Vibe_Coding_Prompt.md.Read the full README ↗A self-serve session booking platform for the Career Advancement Council (CAC) at ISB. Participants pick sessions under multi-day events (e.g. "OCC") within a per-event ticket allotment; admins manage events, sessions, the roster, ticket allotments, and post-deadline auto-allocation of unused tickets.
Full spec: CAC_Session_Booking_PRD.md,
CAC_Vibe_Coding_Prompt.md.
@prisma/adapter-pg) — designed for Neon's free tier.env.example to .env and fill in the values (see comments in that file for what
each one is and where to get it — Neon for Postgres, Azure AD app registration for
Microsoft sign-in, Resend for email; all free tier).npm install
npx prisma generate
npx prisma migrate dev --name init
npx prisma db seed
npm run dev
Seed data creates an admin ([email protected] / ADMIN001), ~20 demo users
(PGP2027001–PGP2027020), and an "OCC" event with 8 sessions across 2 days.
The login page offers "Sign in with Microsoft" alongside the roster (email + PGP ID) form.
The button only renders when all three AUTH_MICROSOFT_ENTRA_ID_* vars are set
(auth.ts). Whichever email Microsoft returns must match a roster isbEmail in
our DB, or the sign-in is rejected with ?error=NotRegistered — so the roster is the
authorization gate, not the tenant.
App registration (Azure Portal → App registrations, "ISB CAC platform"):
5e6de170-230c-4dca-bd0e-8e6ba99319a6signInAudience): AzureADMultipleOrgs (multi-tenant). Required because
the app is registered in a personal directory but must accept users from ISB's separate
tenant.https://login.microsoftonline.com/a4dae443-38ab-404a-b331-9d1d337fcf37/v2.0http://localhost:3000/api/auth/callback/microsoft-entra-id (local dev)https://cac-session-booking.vercel.app/api/auth/callback/microsoft-entra-id (production)Env vars — set the three AUTH_MICROSOFT_ENTRA_ID_* locally in .env and in Vercel →
Project Settings → Environment Variables. The client secret is created under Azure →
Certificates & secrets (copy the Value, not the Secret ID).
Gotchas:
.env and Vercel.npx tsx scripts/concurrency-test.ts
Fires many simultaneous booking attempts at the seeded event's lowest-capacity session and
asserts exactly capacity succeed — proving the atomic conditional-update pattern in
lib/booking.ts holds under a race.
RESEND_API_KEY is optional locally — if unset, acknowledgment emails are logged to the
console and recorded in AcknowledgmentLog instead of actually sending..env.example.