SpinAI ships with a GitHub Actions workflow that automatically emails the next meeting presenter and the rest of the team every Monday morning. Once the required secrets are configured, the reminders run without any manual intervention — you never need to remember to send the notification yourself.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.
Schedule
The workflow runs on the following cron expression:How it works
- GitHub Actions calls
GET /api/cron/notifyon your Vercel deployment, passing the headerx-cron-secret: <CRON_SECRET>to authenticate the request. - The route queries Supabase for the next upcoming assignment — the soonest date on or after today that has a member assigned.
- An email is sent TO the assigned member and CC’d to all other active members who have an email address configured.
Setup
Set CRON_SECRET in Vercel
In your Vercel project settings, go to Settings → Environment Variables and add:Choose a long, random string. This value is used by the cron route to verify that the request originated from your workflow and not an external caller.
Add APP_URL to GitHub Actions secrets
In your GitHub repository, go to Settings → Secrets and variables → Actions and add a new secret:
Do not include a trailing slash.
| Name | Value |
|---|---|
APP_URL | Your Vercel deployment URL, e.g. https://spinai.vercel.app |
Add CRON_SECRET to GitHub Actions secrets
Add a second secret in the same location:
Both sides must match — the workflow sends the secret in a request header, and the route validates it against the environment variable.
| Name | Value |
|---|---|
CRON_SECRET | The exact same value you set in Vercel |
Skip conditions
The cron route is designed to fail gracefully. It silently skips sending an email when any of the following conditions are true:- No upcoming assignment exists — there are no assignments with a date on or after today.
- The next slot is unassigned — the soonest upcoming assignment has no member assigned to it.
- The assigned member has no email — the member record does not have an email address stored in the database.
skipped field in the response body, and the workflow step completes successfully.
Manual trigger
The workflow includes aworkflow_dispatch event, which means it can be triggered at any time directly from the GitHub Actions UI — no need to wait for the next Monday.