{"repo":"subtle42/mern","free":true,"listed":false,"github":"https://github.com/subtle42/mern","clone":"git clone https://github.com/subtle42/mern.git","description":null,"language":"TypeScript","stars":16,"topics":["socketio","react","redux","mongodb","mongoose","passport","node","express","d3js","sinon"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"MERN (Mongo Express React Nodejs) This is a personal project to try and create a fullstack appliation using only Typescript. Its main purpose is to investigate and create best practices around scalable code. I am doing this because when a code base reaches a certain size there is complexity explosion. My hope is to create a component pattern that is easily repeatable and leaves enough flexibility to handle most cases. This architecture works best with large amounts of small operations and data that has high volatility. It is meant to keep all users in sync as they edit/view data. Installation Node.js, NPM, and MongoDB are required. Note: MongoDB must be running before npm start is called. Data Flow User enters data into a form rendered by React. User clicks save, a REST call is made to Express. The REST call is caught by Passport.js and authenticated with a jwt (JSON Web Token) The request goes to an Express controller and the data in the request is validated against a Mongoose schema. Mongoose then sends a query to MongoDB. The item that was affected is then passed to SocketIO and broadcast on its parent's/userID channel. All clients listening to the parrent/userID channel using SocketIO Client receive the broadcast. SocketIO Client sends a dispatch to Redux with the delta. Redux runs a reducer and updates its store. React is linked into Redux and sees things have changed. React rerenders all affected templates. Express then sends an empty response or the id of a created doc","default_branch":null,"files":null,"tree":[],"storefront":"/r/subtle42","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/subtle42/mern/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}