Design


The EduMsg platform is divided to three layers; the back-end layer, the logic layer, and the front-end layer.

Back-end Layer

The back-end layer comprises tables and associated stored procedures, which encapsulate the SQL statements manipulating those tables. PostgreSQL is used to store the data. A data store app sits on top of the database to abstract database access and mapping of data back and forth between the database and the logic layer.

Logic Layer

The logic layer is divided into four separate applications which communicate together using Redis - a key-value cache server.

The logic applications are:
1. Users Application: an application that handles any user related requests. Examples are user login, user creation, fetching time-line tweets or user tweets and retweets.
2. Tweets Application: controls tweets creation, tweets deletion, retweeting and favoriting tweets, etc.
3. Lists Application: maintains user lists, their creation, editing, memberships and subscriptions.
4. DMs Application: organizes private conversations between the system users.

Communication between the four apps and the data store app is done via message queues.

Front-end Layer

EduMsg will have three independent apps for iPhone, Android and the desktop. Currently, the Android app is in development. These client apps communicate with the logic layer via JSON. A load balancer guarantees the fair distribution of requests to web servers. A scaling app is planned to scale up the four logic apps as per need.