├── Dockerfile - Dockerfile the back-end application
├── elasticsearch
│ └── index.js - ElasticSearch client & queries
├── package-lock.json
├── package.json - Package dependencies & configurations
├── passport.js - Authentication through passport
├── routes
│ ├── auth.js - Contains all the authentication & callback endpoints
│ └── email.js - Contains all the email endpoints (IMAP & ES Queries)
└── server.js - Main `server.js`
Components
Client: React application to interact with the backend and database
Login mechanism with oauth implementation
List of user details
Server: NodeJS server mainly managed the oauth & elasticsearch db operations
Oauth implementation for google as of now only
Elasticsearch implementation
IMAP implementation (not implemented yet)
The below functionalities not implemented yet due to time restrictions. These below pointers are enhancement and missing functionality from existing systems
What we can do more
Complete the entire the functionality using IMAP or APIs for email engine.
Implement a kind of factory-design interface to support the google-cloud & microsoft and other services.
Implement the redux state management in client side to prevent unnecessary calls to backend and store all data at client side.
Implement the search, query and update functionality with Elasticsearch.