I am rebuilding Autotube, my open-source app that turns a topic into a YouTube video, on free tiers only. The frontend is on Vercel, the database is Supabase, files go to Cloudflare R2, and the heavy video jobs will run on GitHub Actions.
Supabase pauses free projects that look inactive. So in September I added a small GitHub Actions workflow to keep the database awake. It ran on time, every run did a real database query, and the project paused anyway.
The short version: Supabase looks at how much traffic a free project gets across a whole week, and one query every five days was too little. Below is what I got wrong, and what the workflow looks like now.
The first version: one query every five days
I read the pausing rule as a 7-day timer. One request inside 7 days resets it, so a ping every 5 days should be safe.
The workflow ran at 09:00 UTC every fifth day of the month (cron 0 9 */5 * * ). That fires on days 1, 6, 11, 16, 21, 26 and 31, so the longest gap is 5 days, even across the end of a month.…