One of core features is alerting users of new reviews, and we send a surprising large number of emails each month. Sendgrid ensures they make it to our customer's inbox. SendGrid
We are looking for a way to build a user-to-user messaging system with email relay - basically the way it works at Airbnb. We already use Twilio SendGrid. We need to get analytics on the emails like open/answer rate, time to answer, and the total number of conversations per user. Having conversations in our web app is optional at this point; the main part is the mail relay and using anonymised email addresses.
What tools can use to build the relay part? Is there a service that offers this already?
Thanks for any hints!
Overview: To put it simply, we plan to use the MERN stack to build our web application. MongoDB will be used as our primary database. We will use ExpressJS alongside Node.js to set up our API endpoints. Additionally, we plan to use React to build our SPA on the client side and use Redis on the server side as our primary caching solution. Initially, while working on the project, we plan to deploy our server and client both on Heroku . However, Heroku is very limited and we will need the benefits of an Infrastructure as a Service so we will use Amazon EC2 to later deploy our final version of the application.
Serverside: nodemon will allow us to automatically restart a running instance of our node app when files changes take place. We decided to use MongoDB because it is a non relational database which uses the Document Object Model. This allows a lot of flexibility as compared to a RDMS like SQL which requires a very structural model of data that does not change too much. Another strength of MongoDB is its ease in scalability. We will use Mongoose along side MongoDB to model our application data. Additionally, we will host our MongoDB cluster remotely on MongoDB Atlas. Bcrypt will be used to encrypt user passwords that will be stored in the DB. This is to avoid the risks of storing plain text passwords. Moreover, we will use Cloudinary to store images uploaded by the user. We will also use the Twilio SendGrid API to enable automated emails sent by our application. To protect private API endpoints, we will use JSON Web Token and Passport. Also, PayPal will be used as a payment gateway to accept payments from users.
Client Side: As mentioned earlier, we will use React to build our SPA. React uses a virtual DOM which is very efficient in rendering a page. Also React will allow us to reuse components. Furthermore, it is very popular and there is a large community that uses React so it can be helpful if we run into issues. We also plan to make a cross platform mobile application later and using React will allow us to reuse a lot of our code with React Native. Redux will be used to manage state. Redux works great with React and will help us manage a global state in the app and avoid the complications of each component having its own state. Additionally, we will use Bootstrap components and custom CSS to style our app.
Other: Git will be used for version control. During the later stages of our project, we will use Google Analytics to collect useful data regarding user interactions. Moreover, Slack will be our primary communication tool. Also, we will use Visual Studio Code as our primary code editor because it is very light weight and has a wide variety of extensions that will boost productivity. Postman will be used to interact with and debug our API endpoints.
I like the tech stack you guys have selected. You guys seem to have it all figured out, and well planned. Good luck!
RDBMS like Postgres can also store, index and query schemaless data as JSON fields, while also supporting relations where it makes sense. A document model is actually a downside, since usually data will still have relations, and it makes modeling them inconvenient.
We have decided to use these tools because they will help us quickly and efficiently implement some of the features we are planning to include in our MVP. Twilio SendGrid is an easy to use email API that will allow us to send email alerts and notifications to our users. As a bonus, they have a free tier that will allow us to send up to 100 emails a day, providing us with savings in testing our product and room for scaling. multer is a nifty npm package that will help stream line our development process for uploading IMU data files onto our web application. Lastly, Frappé Charts will provide beautiful, simple, dependency-free, open-source charts for our web application so it can display data to our users with clarity!