Skip to content

AsifAlthaf/Email-Scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Email Scheduler Application

A full-stack email scheduling application built with a legacy-style architecture as per requirements.

Tech Stack

  • Frontend: React (Vite), Mantine UI, Tailwind CSS.
  • Backend: Express.js, MySQL (Sequelize), Redis, BullMQ.
  • Testing: Ethereal Email (SMTP).

Features

  • Google OAuth Login: Secure login (requires Client ID).
  • Email Scheduling: Schedule emails to be sent in the future.
  • Persistent Queue: Jobs survive server restarts using Redis & MySQL.
  • Rate Limiting: Configurable limits (e.g., 100 emails/hour) with concurrency control.
  • Dashboard: View status of scheduled and sent emails.
  • Bulk Upload: UI supports mocking CSV upload for bulk scheduling.

Quick Start

Prerequisites

  • Docker & Docker Compose
  • Node.js (v18+)

Setup

  1. Start Infrastructure (MySQL & Redis)

    docker-compose up -d
  2. Backend Setup

    cd backend
    npm install
    # Configure .env (see backend/README.md)
    npm run dev
  3. Frontend Setup

    cd frontend
    npm install --legacy-peer-deps
    # Configure .env or hardcode ClientID
    npm run dev
  4. Access

    • Frontend: http://localhost:3001
    • Backend API: http://localhost:5000
  5. Live Links

    • Frontend: https://email-scheduler-1-kiny.onrender.com
    • Backend: https://email-scheduler-co1x.onrender.com

Architecture

The system uses a producer-consumer pattern. The API (Producer) accepts requests and pushes them to a Redis Queue (BullMQ). A Worker (Consumer) processes these jobs, enforcing rate limits and delays, and sends emails via SMTP (Ethereal). State is persisted in both MySQL (long-term records) and Redis (active queue state).

About

A full-stack email scheduling application built with a legacy-style architecture as per requirements.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors