this post was submitted on 23 Jun 2025
12 points (100.0% liked)

Golang

2482 readers
2 users here now

This is a community dedicated to the go programming language.

Useful Links:

Rules:

founded 2 years ago
MODERATORS
 

Cross-posted from "How could I allow users to schedule sending emails at a specific interval?" by @lena@gregtech.eu in !learn_programming@programming.dev


Basically, I'm trying to figure out how I could allow a user to send a schedule in the cron syntax to some API, store it into the database and then send an email to them at that interval. The code is at gragorther/epigo. I'd use go-mail to send the mails.

I found stuff like River or Asynq to schedule tasks, but that is quite complex and I have absolutely no idea what the best way to implement it would be, so help with that is appreciated <3

you are viewing a single comment's thread
view the rest of the comments
[–] okwhateverdude@lemmy.world 4 points 1 week ago (4 children)

Are your users technical? If not, crontab syntax is definitely to be avoided. Instead, I'd offer some simple options like daily, weekly, monthly, etc. Then convert that syntax into crontab syntax.

I glanced at the repo, but there is no content in the README.md to get a sense of what your project is actually doing.

For processing cron, you should consider just using cron. You can setup a user specific to the process, use that user's crontab, and manage the entries. If the source of truth will be from the database, then you don't even need to read the crontab itself, only (over)write it on demand.

[–] lena 1 points 1 week ago (3 children)

I was thinking I could offer the option to use cron, if not they can just select an option from a dropdown.

regarding my nonexistent readme, this is basically a digital dead man switch. The user sets an interval to send emails with a link to them , and if they don't click on the link for a few months, they get marked as dead and messages they specified beforehand get sent out to groups of users.

[–] okwhateverdude@lemmy.world 2 points 1 week ago (2 children)

I'd carefully consider using email for this. If you're hosting the service, you might need to use one of the bigger email providers that already have reputation (unless you already have good IPs with good rep). Otherwise, you risk the emails sitting in spam and people's switches being flipped. If it is self-hosted, you'll probably need to explain the risks to users.

Given today's world of pocket computers, you might consider using push notifications of some kind. Or have a companion client that pokes an API and there is some kind of challenge/response.

[–] lena 2 points 1 week ago (1 children)

Yeah, I'll use one of the major email providers, I am aware of the risks of self-hosting email. And yes, I will implement some kind of push notification system, either through the browser or via a mobile app.

[–] okwhateverdude@lemmy.world 2 points 1 week ago

Okay cool, just making sure you covered all your bases 🖖