Feb 6, 2020
(1/2) In terms of Application & Data we chose a full JS web stack with React as the frontend framework and 'Node for the backend with Express. In this setup, we'll be using MongoDB as our database and will utilize Mongoose as the ODM for extensibility.
React: React, the frontend framework originally developed by Facebook is currently the most popular front-end framework amongst web developers. This well-maintained and robust framework has been getting popularity amongst web developers thanks to the flexibilities it offers to the developers to manage appstatesand eliminates the need to create any raw HTML code with its JSX language. React is popular, well–maintained and the go-to for web development in the current era and there exists lots of frontend UI libraries that we can utilize (e.g. Material UI, Bootstrap)Node: As we have chosenReactfor our frontend framework, it makes sense to keep JS for our backend as it's easier for web-developers to "context switch" to a Node backend. Node Package Manager (NPM), the open-source library for libraries provides a vast number of external libraries we can use in our applications to get things get started quickly. Another consideration we had for the backend was Python since not all our members are fully proficient with Node, especially that our Machine Learning would all be written in Python. Though after more considerations we still thought it'd be a better idea to keep the web application written solely in JavaScript as it won't be a huge overhead and it will cause it more reusable code as we this is how we see the future of our stack to look like eventually. We will be usingYarnas the package manager of our choice since it provides a slightly better package versioning overnpmand shorter commands, though there are no huge differences!Express JS: ExpressJS is the web framework for setting up servers and thanks to its open-source community, it has established itself as a robust a comprehensive server framework that pairs nicely with Node.JS. Wikipedia explains Express as the "de facto standard server framework for Node.js". Pretty much all the web applications I've seen that use Node as their backend use express to provide APIs and hook the backend to the frontend.MongoDB*: MongoDB is another great resource to use especially in the early stages of a startup, as we need to make sure we can get going fast while making sure we can still stick to a well-behaving and scalable database. Thanks to its schema-less design, it gives us the opportunity to keep playing around with our datatypes without having to constraint ourselves on a certain schema. In our current plans, the data we're are JSON-like documents anyways, and will give us a leverage in making sure in making a working MVP. Although MongoDB is still a great choice for many production applications as it's highly scalable, we still need we need to bring a relational DB such as Postgres to our stack in order to provide fast queries for our lead-generation application, though MongoDB should give us exactly what we need at this stage. PairingMongoDBwithMongoosewill make development even much faster and readable as it will provideschemas/Modelsfor this schema-less database.