<technical details /><technical details />

on-line shop engine and shop administration panel

Tech stack:

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



The store engine is a fullstack 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, during the upload static image files are processed by the server using Sharp and, after optimization, uploaded to 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. A user and administrator authentication and authorization system was made, both the data and routes 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 store management and sales activities in the panel are related to asynchronous actions changing the 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 was used to handle e-mail messages.

Some interesting solutions - e.g. collective change of the object parameters described on the general page of this project and e.g. confirmation of the price each time it is to be displayed somewhere in the browser by the server, so that it is always up-to-date about the calculation of discounts resulting from various discount groups and the purpose of its verification.

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