A web application imitating features of dropbox with Apache Kafka for distributed message streaming, MongoDB as datastore and PassportJS as authentication middleware.
Individual academic project for Graduate software engineering course 273 - Enterprise Distributed Systems.
-
The goal is to build a distributed enterprise web application which enables the user not only to upload , star/unstar or delete files/folders but also share files/folders to other users, create groups, add/edit/delete members and view their own activity timeline.
-
We were tasked with this project requirement so that we can learn and develop enterprise service application with the use of non-relational databases.
Applications uses a simple Client-Server architecture where there are as many as 13 React components, 17 API’s and 20+ kafka topics to support different functionalities.
My application includes 20+ kafka topics responsible to perform different activities. There are different consumers for each topic so that no one consumer gets overloaded with large number of requests on multiple topics. The system architecture is divided into 3 parts,
- dropbox_react
- dropbox-kafka-client
- dropbox-kafka-server
Here, the kafka-client part only does the part of producing messages and on response from kafka-server forward it to react side. It also includes implementation of passportjs’s local strategy for authentication. Sessions are stored in MongoDB and I have used express-sessions for session management.
Implemented a personal version of connection pooling for the application.
Area | Technology |
---|---|
Front-End | React, Redux, React Router, Bootstrap, HTML5, CSS3, Javascript ( ES6 ) |
Back-End | Express, Node.js |
Message Streaming | Apache Kafka |
Authentication Middleware | PassportJS |
API Testing | Mocha, Postman |
Session Management | express-sessions and MongoDB |
Database | MongoDB |
Performance Testing | JMeter |