Run it on your own server.
SendTidings is being built as a hosted product first, because that is how the rough edges get found. The self-hostable, AGPL-3.0 build is the next step: the same code, the same repository, pointed at your own database on your own infrastructure.
It is not open yet. This page exists so that when it is, you already know whether it suits you.
Four things, and you can host all of them.
Worth knowing up front rather than three steps into a setup guide. Every one has a local option, and hosted alternatives if you would rather someone else ran it.
Neon, Supabase, RDS, a container, your own box. The driver is picked from the connection string, so all of them work. Compose brings its own if you would rather not think about it.
Point it at your own mail server, any SMTP provider, or use Resend. The one thing only Resend does is delivery tracking, so on SMTP a report just never reports back as delivered.
Something has to run the jobs that send the reports. There is a bundled scheduler, and Trigger.dev is there if you would rather have retries, run history and alerting.
Magic-link sign-in works off whatever is sending your email, so it needs nothing else. Google and GitHub are there if you would prefer them.
Which means an instance can run with no third-party account at all: your own Postgres, your own mail server, the bundled scheduler, and sign-in links that arrive through the same mail. The hosted service uses Neon, Resend and Trigger.dev because those are the right tools when someone else is carrying the pager, not because the code needs them.
Self-hosting is a trade, not an upgrade.
Both are the same software. The difference is entirely about whose problem it is when something breaks.
- Upgrades, migrations and security patches are mine
- Deliverability, domain warm-up and bounce handling are mine
- If a report fails at 9am, I find out, not you
- Free for one client site, £29/month flat for twenty
- You own the data, end to end, on infrastructure you chose
- You upgrade when you want to, or never
- Plan limits are a config file you can edit
- Everything above is now your job, including the 9am failure
One email, on the day the repository opens.
No drip sequence and no newsletter by stealth. You get a link to the repository and the self-hosting guide, and that is the end of it.
# what setup looks like $ git clone github.com/…/sendtidings $ cp .env.docker.example .env # one key, one URL, and you’re set $ docker compose up → postgres: ready → web: listening on :3000 → worker: 7 jobs scheduled