DataTalksClub / DataTalksClub/course-management-platform
Schedule deadline reminder command with EventBridge ECS task
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 85
- Forks
- 37
- PR merge metrics
- No merged PRs in 30d
Description
Context
Issue #180 covers deadline reminder email behavior. We need a deployed scheduling mechanism that runs CMP reminder logic without tying it to web requests.
We do not need Lambda for this. EventBridge should start a one-off ECS task using the CMP image.
Current environment note: CMP deploys to dev via CI/CD, and Datamailer currently has only a sandbox deployment. There is no Datamailer production environment for this work.
Desired runtime
EventBridge schedule -> ECS RunTask with CMP image -> uv run python manage.py send_deadline_reminders -> Datamailer enqueue/list-send API -> exit
The scheduled command should be quick. It should compute eligible reminder windows, create/trigger Datamailer work, and exit. Datamailer handles slow per-recipient sending asynchronously.
Desired behavior
- Add
send_deadline_remindersmanagement command if not already implemented by #180. - Add an
--enqueue-onlyor equivalent mode if needed so the command never waits for delivery. - Configure infra/deployment docs for EventBridge scheduled ECS task.
- Ensure the command is safe to run repeatedly.
- Use stable idempotency/send keys for reminder windows.
Acceptance criteria
- Local command can be run manually with
uv run python manage.py send_deadline_reminders. - Dev schedule is documented/configured as EventBridge -> ECS task, with no Lambda requirement.
- The command exits quickly after triggering Datamailer work.
- Duplicate scheduled runs do not send duplicate reminders.
- Failures are logged and observable.
Related: #180
Current blocker
Repo-side implementation and documentation are in place. The remaining step is external AWS IAM/scheduler state: grant the CI deploy user the documented permissions, or provide an existing Scheduler role ARN, then rerun the Configure Deadline Reminders workflow and verify the EventBridge schedule exists.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing uv run python manage.py send_deadline_reminders command and the Configure Deadline Reminders workflow. Verify the documented EventBridge-to-ECS schedule, IAM permissions, and Scheduler role, then rerun the workflow. Done means the dev schedule exists, triggers the task, exits quickly, and does not duplicate reminders.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, django, python
- Domain
- backend, cloud, devops
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100