Skip to content

Latest commit

 

History

History
85 lines (71 loc) · 5.2 KB

README.md

File metadata and controls

85 lines (71 loc) · 5.2 KB

WordMorning - New words. Everyday. Delivered straight to your inbox.

Screenshot of app

Project Status: Active – The project has reached a stable, usable state and is being actively developed.

A fully automated daily email newsletter service aimed at improving the vocabulary of new learners of the English language.

Table of Contents

Tech Stack

AWS Services

Apis

Notable features

Secure 🔒
The app uses a valid SSL certificate (obtained from AWS ACM) to encrypt the communication between the browser and the server. This ensures that no data can be intercepted and read by someone else while the information is in transit.
One-Click Unsubscribe (RFC 8058) ✅
The app implementes one-click unsubscribe(RFC8058) to respect users' choice to unsubscribe and to ensure compliance with the mandatory list-unsubscribe requirements enforced in early 2024.
Open Graph tags 🏷️
The app makes use of open graph tags to display beautiful thumbnails when it is shared on social media platforms like Facebook, Twitter, LinkedIn, Slack, and WhatsApp.
User Timezone specific email delivery ✨
The app respects the user's timezone when a mail is scheduled to be sent. This means, the email would be sent at the same time for every user, irrespective of what timezone the user is in.
Attention to tiny details 🪄
  • Clicking the unsubscribe link multiple times won't bombard users with error messages. Instead, they'll see a friendly "Rejoin Us" page, making it easy to resubscribe if they change their mind.
  • Rate Limiting is used to ensure that the app is safe from DoS & DDoS attacks - A bespoke webage gets displayed when a user is being rate limited.
  • No matter what browser is being used, the app will display a crisp and clear favicon. (Credits : RealFaviconGenerator).

Source code and Architecture

  • Files follow the kebab-case file naming convention.
  • Architecture (Dataflow) : app --forwards requests-> routers --respond to requests using-> controllers (use validations & contain business logic) --use-> services.
  • Commit messages follow the Conventional Commits specification.