Skip to content

Latest commit

 

History

153 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jaryn Mail

A full-stack email application with real-time notifications, smart filtering, and a rich set of software design patterns.

Java Spring Boot Angular PostgreSQL


Overview

Jaryn is a full-stack email application built with Spring Boot and Angular. It covers the core email workflow — sending, receiving, drafts, trash, attachments, contacts, and automated filtering — with stateless JWT authentication and real-time inbox updates via Server-Sent Events.

The project was built as a deep exploration of software design patterns, applying seven distinct patterns across the backend.


Demo

Watch the demo video


Features

Email

  • Send, receive, reply, and forward emails
  • Draft saving and trash management
  • File attachments with time-bound IDs and expiry enforcement
  • Real-time inbox updates via SSE

Filtering

  • User-defined rules that automatically move, delete, star, or forward incoming emails
  • Composable search with AND/OR logic across subject, sender, and content

Contacts

  • Contact book with strategy-based search (by name, email, or all)
  • Sorting by name or date

Authentication

  • Stateless JWT-based login and registration

Tech Stack

Layer Technology
Backend Java 17, Spring Boot 4, Maven
Database PostgreSQL (users), File System JSON (emails/attachments)
Security JWT (JJWT)
Frontend Angular 21, TypeScript, Tailwind CSS v4
Real-time Server-Sent Events (SSE)

Design Patterns

Pattern Where
Command Filter actions — Move, Delete, Star, Forward executed dynamically
Strategy Contact search (by name / email / all) and contact sorting
Factory FilterFactory generates matching logic from filter rule definitions
Builder EmailBuilder — fluent API for constructing and cloning email objects
Observer SSE event publishing on email receipt and draft save
Filter Composable search criteria — AndFilter, OrFilter, SubjectFilter, SenderFilter
Proxy AttachmentService manages lifecycle, expiry, and encryption of stored files

Running Locally

Prerequisites: Java 17+, Maven, Node.js 18+, PostgreSQL

Backend

Configure backend/src/main/resources/application.properties with your DB credentials, then:

cd backend
./mvnw spring-boot:run

Frontend

cd frontend
npm install
ng serve

App available at http://localhost:4200


Authors

Jana Rashed · Ahmed Sherif Abd El-Moniem · Mohamed Radwan · Yousef Walid · Nour El Atawy

About

Full-stack email application with real-time inbox updates, automated filtering, JWT authentication, and software design pattern implementations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages