<technical details /><technical details />

CRM app and CMS for company's portal with catalog

Tech stack:

  • SERVER: node.js -> Express
  • SERVER: MongoDB -> Mongoose
  • SERVER: Nodemailer
  • SERVER: aws-sdk
  • SERVER: multer
  • SERVER: sharp
  • SERVER: jsonwebtoken
  • SERVER: Express validator
  • SERVER: mjml
  • React
  • Redux & Thunk
  • Axios
  • React Router
  • Material-UI
  • Formik
  • Styled Components



The CRM and CMS app is a full-stack project. It includes the Node.js / Express.js application on the server side and the front-end application in React which is the administration panel. To speed up the work in the panel views, Material-UI components were used, but mostly heavily modified. All data is stored in the MongoDB cloud database, static graphic files are processed by the server during the upload using Sharp and after optimization they are loaded into the AWS cloud in several resolutions, so that they can be served from there in a resolution appropriate for a given device, improving the speed of loading views.

All data is validated on the server. Authentication and authorization system for the administrator was made, both data and views on the front were dependent on the level of authorization.

Data from the database via API on the server are sent to the panel and stored in Redux. The panel admin views are always updated with the current data from the server.

All activities of managing products, clients, photos, etc. are related to asynchronous actions that change data on the server, always give full feedback and are connected with error handling, the user is not left without information while performing operations in the panel.

Nodemailer and MJML were used to handle e-mail messages.

Some interesting solutions - e.g. collective change of object parameters described on the general page of this project and alerts in the dashboard view to help the administrator understand the status of products and help keep up to date with customer issues.

This website uses cookies. By continuing to use the website, you accept this fact. Leave the site if you disagree. Detailed information can be found in