SpinAI is an internal team tool that takes the awkwardness out of deciding who runs the weekly meeting. A roulette wheel picks a facilitator at random from your active team members, locks the assignment to a Friday date, and then walks that person through preparing their agenda and slides — all before sending an automated email reminder to the whole team on Monday morning. No arguments, no last-minute scrambling, and no one is ever surprised.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/fmoraga01/SpinAI/llms.txt
Use this file to discover all available pages before exploring further.
SpinAI is designed as a private internal tool. Every route is protected by a PIN gate backed by a signed JWT cookie. Share the PIN only with your team.
How It Works
SpinAI follows a simple four-stage flow from selection to notification:- Roulette — The wheel spins across all active
TeamMemberrecords and lands on one person, creating a newAssignmenttied to an upcoming Friday date. - Schedule — Assignments are displayed on a calendar view. Members can swap dates with each other via drag-and-drop; every swap is recorded as a
LogEntry. - Slides — The assigned facilitator opens their
Templateto fill in a title, agenda items, key talking points, and notes. The template supports four visual themes, three font families, and three size presets. - Notifications — A manual button on the home page or an automated GitHub Actions cron job (every Monday at 9:00 AM) sends a Gmail SMTP email to the facilitator and the rest of the team.
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 · TypeScript · Tailwind CSS v4 |
| Database | Supabase (PostgreSQL) |
| Gmail SMTP via Nodemailer | |
| Automation | GitHub Actions (weekly cron) |
| Deployment | Vercel |
Key Concepts
These five TypeScript interfaces fromlib/types.ts describe everything SpinAI stores and displays.
TeamMember
Represents a person on the team. The active flag controls whether the member is eligible for the roulette wheel. An optional email field enables per-member email notifications.
TeamMember to a specific Friday date. memberId and memberName are both nullable to support unassigned placeholder slots (e.g., after a member is removed).
theme, font, size).
summary and imageUrl are optional.
Next Steps
Quickstart
Run SpinAI locally in under five minutes — clone, configure, and spin your first roulette.
Configuration
Full reference for every environment variable, the PIN/JWT auth model, and deployment settings.