Preview
Background
This project was my first attempt at web development using Express as a server framework and React Components as a building block for the front-end. This page will briefly explain the structure of the web app and the justification behind the design choices.
The Server
- Express: set-up using universal routing and ejs as a view engine.
- Socket.io: used for real-time event-based communication.
- React: server-side rendering and universal routing
- MongoDB: database
The Client
- Redux: used to manage the state of the app
- Socket.io
- React
In order to simplify the development of the app, Redux was used to deal with changes to the state of the app. Every action performed by the user resulted in an action being dispatched. A reducer is attached to the root React component. It deals with each action by modifying the state of the user's view and relaying necessary information to the server. When the server receives information of any modifications, it then relays the information to other clients who share the same resource.