The project is built using the following technologies:
- React
- Express.js (Node.js)
- Bootstrap 5
- Sequelize v6
- Postgresql (Free tier)
- Courier (A service to send mails via Node.js) (Free tier)
- Redis (Free tier)
The application is deployed on Heroku: https://pwd-pro.herokuapp.com
While working with the project, I came across a few challenges:
- Sequelize is slower to use than native DB at the cost of convenience of not writing queries.
- Sequelize takes a few seconds to initialize/sync models. This is problematic during development as I wait for models to load for testing even tiny endpoint changes.
- Sequelize is an ORM that aims to provide convenience to use any database interchangeably. However, in some scenarios similar behavior is not displayed. For eg: if a record is updated, Postgresql returns the updated record while Sql doesn't. Similarly, when creating a record with Sequelize, Postgresql returns the created user id while Sql doesn't. If a user is aware of the DB syntaxes, there is not much benefit from using Sequelize.
- Bootstrap sites tend to look similar due to similar classes being used.
In the project directory, you can run:
Runs the express server which provides endpoints and PROD UI
Open http://localhost:7500 to view it in your browser.
The server will not reload when making changes.
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Runs the express server in development mode and PROD UI Open http://localhost:7500 to view it in your browser. The server will reload when making changes.
Runs the React development server in development mode Open http://localhost:3000 to view it in your browser. The server will reload when making changes.