Simple Scalable Email Services

This project was created to test my skills with PHP when I applied to Mailerlite company.

It is developed with KISS, DRY, and Fail-fast principles in mind.

Restriction

  1. Using a framework is not allowed, but feel free to use Composer
  2. Must be authenticated or authorized to use the API
  3. Using worker, queue, or message distribution
  4. Store all sent messages/emails in the database

My approach

  1. Use Docker and utilize microservices.
  2. Using OAuth2 for the authentication. (Point no. 2)
  3. A Queue using RabbitMQ with the help of supervisord to manage worker
  4. Stored in a PostgreSQL database

Application flow