Skip to main content
← All products
Boilerplatesv1.0.0

Python Automation Boilerplate

Run scheduled Python jobs with a CLI, retries, state, alerts, tests and deploy recipes.

Python Automation Boilerplate

Who it's for

  • You keep reports, syncs, checks and digests as loose cron scripts and want them in one tested project.
  • You want jobs that retry flaky APIs, don't repeat work they already did and tell you when something breaks.
  • You deploy small jobs to a server, a Mac, Docker or GitHub Actions and want a recipe for each.

Not for you if you need a distributed task queue or a workflow orchestrator such as Airflow: this is one process with a scheduler.

Generated from the zip

What's inside

A Python package with a command line to list, run and schedule jobs, settings in one TOML file with secrets kept in the environment, an HTTP client that retries with backoff, SQLite state so a job does not repeat work, and console, Slack and email alerts.

  • 4 example jobs: an uptime check, an RSS digest, a CSV report and a GitHub weekly summary, with optional Anthropic or OpenAI summaries.
  • Tests: a pytest suite that runs without network access, using offline fixtures for every example job.
  • 6 deploy recipes: Dockerfile, a systemd service and timer, a launchd agent, a crontab and a GitHub Actions workflow.
  • Guides: getting started, writing a job, configuration, scheduling, reliability, deployment and testing.

--dry-run sends nothing and saves nothing; --offline answers the jobs' HTTP requests from the fixtures, so you can try everything without accounts.

Library modules
20
Files
  • src/automation/__main__.py
  • src/automation/cli.py
  • src/automation/config.py
  • src/automation/http.py
  • src/automation/integrations/github.py
  • src/automation/integrations/rss.py
  • src/automation/jobs/base.py
  • src/automation/jobs/csv_report.py
  • src/automation/jobs/github_weekly.py
  • src/automation/jobs/rss_digest.py
  • src/automation/jobs/uptime_check.py
  • src/automation/llm.py
  • src/automation/logging.py
  • src/automation/notify/base.py
  • src/automation/notify/console.py
  • src/automation/notify/email.py
  • src/automation/notify/slack.py
  • src/automation/runner.py
  • src/automation/scheduler.py
  • src/automation/state.py
Example jobs
4
Files
  • src/automation/jobs/csv_report.py
  • src/automation/jobs/github_weekly.py
  • src/automation/jobs/rss_digest.py
  • src/automation/jobs/uptime_check.py
pytest tests
16
Files
  • tests/test_cli.py
  • tests/test_config.py
  • tests/test_fixtures.py
  • tests/test_http.py
  • tests/test_job_csv_report.py
  • tests/test_job_github_weekly.py
  • tests/test_job_rss_digest.py
  • tests/test_job_uptime_check.py
  • tests/test_llm.py
  • tests/test_logging.py
  • tests/test_notify_console.py
  • tests/test_notify_email.py
  • tests/test_notify_slack.py
  • tests/test_runner.py
  • tests/test_scheduler.py
  • tests/test_state.py
Deploy recipes
6
Files
  • deploy/cron/crontab.example
  • deploy/docker/Dockerfile
  • deploy/github-actions/scheduled-job.yml
  • deploy/launchd/com.example.automation.plist
  • deploy/systemd/automation.service
  • deploy/systemd/automation.timer
Guides
7
Files
  • docs/configuration.md
  • docs/deployment.md
  • docs/getting-started.md
  • docs/reliability.md
  • docs/scheduling.md
  • docs/testing.md
  • docs/writing-a-job.md
Offline fixtures for the example jobs
6
Files
  • examples/fixtures/csv-report-orders.csv
  • examples/fixtures/csv-report.json
  • examples/fixtures/github-weekly.json
  • examples/fixtures/rss-digest-feed.xml
  • examples/fixtures/rss-digest.json
  • examples/fixtures/uptime-check.json

In the zip · 73 files · 115 KB

  • .dockerignore
  • .env.example
  • .gitignore
  • CHANGELOG.md
  • LICENSE.md
  • Makefile
  • README.md
  • deploy/6 files
  • docker-compose.yml
  • docs/7 files
  • examples/7 files
  • pyproject.toml
  • requirements-dev.txt
  • requirements.txt
  • src/24 files
  • tests/18 files

Setup

Requirements

  • Python 3.11 or newer
  • Optional: a Slack incoming webhook or an SMTP account for alerts
  • Optional: Docker, systemd, launchd, cron or GitHub Actions to run jobs on a schedule
  1. Unzip, create a virtualenv and install the pinned packages: python3 -m venv .venv && source .venv/bin/activate && python -m pip install -r requirements.txt -r requirements-dev.txt.
  2. Run the example uptime check against the bundled fixtures, without sending or saving anything: automation run uptime-check --dry-run --offline --config examples/config.example.toml.
  3. Run the tests: python -m pytest -q.
  4. Copy examples/config.example.toml to config.toml and .env.example to .env, add your URLs and Slack webhook, then run automation doctor and automation run uptime-check.

Time to first result: about 3 minutes.

Tested with

Clean-install test passed on 2026-10-01 (darwin-arm64, node 22.23.2, npm 10.9.8, python Python 3.14.3): extract, base, python, yaml, docs, acceptance.

Licence

You may use this product in unlimited personal and commercial projects, including client work. You may not resell, redistribute, sublicense or share the product itself, in whole or in part, including as a template, starter kit or course material. One purchase covers one person.

The full licence is in LICENSE.md inside the zip. Site terms: /terms.

FAQ

Questions

When can I buy it?

When the last live checks are done: a real Slack alert (and its screenshot), SMTP, GitHub, model and Docker runs. The offline tests and the clean-install check already pass. I haven't set a date; leave your email above and I'll tell you when it's on sale.

Which Python versions does it support?

Python 3.11 or newer. The test suite passed on Python 3.11, 3.12, 3.13 and 3.14 on 2026-10-01.

Do I need Slack?

No. Without a Slack webhook or SMTP account, alerts print to the console.

How do updates work?

New versions go to your Gumroad library; download them from there. Changes are listed in the CHANGELOG inside the zip.

Can I use it for client work?

Yes. Jobs you build from it, for yourself or for clients, are yours. You can't resell or share the boilerplate itself.

More Boilerplates