A lightweight web server and worker for scheduling and executing email delivery tasks.
Tasks are executed based on their scheduled timestamp, with built-in retry and monitoring features.
Docs: https://gitlab.com/shariski/jublia-test
- Single Project, Dual Roles
- Web server to handle email scheduling.
 - Worker process to execute email delivery.
 
 - Tech Stack: Python, Flask, and SQLite (embedded DB, no external setup required).
 
- 
Asynchronous Background Execution
Emails are queued and delivered in the background without blocking the web server. - 
Delivery Throttling
Each worker run is limited to 10 emails, preventing providers from flagging or blocking mass sends. - 
Exponential Backoff
Failed tasks are automatically rescheduled with backoff logic:
next_execution_time = last_execution_time + (2 ** retries_count)
ensuring retries don’t block new tasks. - 
Lightweight & Embedded
Powered by SQLite—no database server configuration required. - 
Easy to Deploy
Fully containerized and ready to run with Docker. - 
Simple Web UI
Monitor and manage your email queue directly from a browser. 
docker run -d --name web \
  -p 8888:8888 \
  -v shared_data:/app/data \
  -e FLASK_SECRET_KEY=verysecretkey \
  -e SQLALCHEMY_TRACK_MODIFICATIONS=false \
  registry.gitlab.com/shariski/jublia-testdocker run -d --name worker \
  -v shared_data:/app/data \
  -e MAIL_SERVER=smtp.gmail.com \
  -e MAIL_PORT=587 \
  -e MAIL_USE_TLS=true \
  -e MAIL_USERNAME=your@email.com \
  -e MAIL_PASSWORD=youremailapppassword \
  -e MAIL_DEFAULT_SENDER="Jublia Test <your@email.com>" \
  registry.gitlab.com/shariski/jublia-test \
  python -u worker.py- Local: http://localhost:8888
 - Demo: https://worker.shariski.com
 
- Description: Schedule an email for delivery.
 - Parameters:
event_id(integer)email_subject(string)email_content(string)timestamp(datetime, SGT)
 - Returns: The scheduled email delivery task (JSON).
 
Contributions are welcome!
Please open an issue or submit a pull request.
MIT © Falahudin Halim Shariski