Skip to content

Latest commit

 

History

History
69 lines (68 loc) · 3.63 KB

README.md

File metadata and controls

69 lines (68 loc) · 3.63 KB

Email Server and Client

Table of Contents

Setup

  • First of all: you must install the Front-End folder which contains angular project, using npm install just because node modules may be missing.
  • Secondly: Spring Boot folder is straight forward just open the pom file using any IDE.
  • Thirdly: you run the Angular project and on localhost:4200 and the Spring Boot project on localhost:8080.

Design Patterns and UML Class Diagram

Table of Used Design Patterns

Design Patterns
Singelton Pattern
Builder Pattern
Filter Pattern
Chain of responsibility Pattern
null object Pattern
Delegation Pattern
interface Pattern

Design Patterns Explaination

We used about seven design patterns, and we make sure that we used them when we need them, two creational, one structural, two behavioral and two fundamentals design patterns as follow:

  • Singleton design pattern used in the Database, filter, searcher, creator and deleter to reduce number of objects because those classes are used too much in the design.
  • Builder design pattern used in the process of building the profile data and link them with data containers which is in json schema.
  • Filter design patterns used in filtering emails and contacts based on specific attribute in the email or contact and specific value. It’s also used in searching in emails and contacts.
  • Chain of responsibility used to handle specific requests on emails but without any previous knowledge.
  • Interface and Delegation design pattern used in applying the previous design patterns.

UML Class Diagram

image Link for higher resolution

Design Decisions

  • Apply the MVC architecture in the design, as we have a model for the data, which we received from the clients, a controller to manage all the business logic and data manipulation and a view represented in the front end(Angular) to show the data after performing any kind of operations on it to the clients.
  • In sorting, we sort only by body, subject, sender, date, priority.
  • Move to trash can only be applied only in the inbox and sent folders.
  • Delete forever can only be applied in the draft and trash folders.
  • Inbox emails only can be copied to user folders.
  • In contacts sorting we sort only by username.
  • When open the inbox folder and choose get emails by priority, refresh button must be clicked

Testing

Unit testing is applied to test some features in the back like filtering, searching and sorting using junit and mockito

Features

  1. Filtering emails.
  2. Searching emails and contacts.
  3. Sorting emails and contacts.
  4. Move to draft.
  5. Delete forever.
  6. Bulk move.
  7. Get emails by priority.
  8. Edit emails in draft folder by direct the user to send email with the same attributes.
  9. Send emails to any contact you want your in contacts page.
  10. Add custom user folders.
  11. Send emails with attachments
  12. view attachement and download them to your local machine.