The purpose of this app is to get real practice in the development of the complete web application based on MERN stack.
Functionally wise, the application is a simple calculator with the history of all the mathematical operations performed.
Mathematical operations are calculated according to the order you enter them and ignoring mathematical rules (i.e. if you enter something like "a+b*c", the calculator will first calculate a+b and then the result will be multiplied by c).
All the calculations are stored in the database and later on could be recalled. Currently there is no possibility to edit the expression, but it is possible to extend it (i.e. if you recalled something like "a+b", you can enter additional operations and make it "a+b*c").
Every time you recall the operation, its "likes count" is increased by 1. You can also "like" any operation manually.
Expressions list is sorted by the number of likes in the descending order.
The following components are used in this web app:
Backend
- Node JS
- Express
- MongoDB
Frontend
- React
- React Redux
- Axios
- Pure CSS for styling
What is going to be added somewhen:
- Slector expressions to be calculated ether according to the order of the operations entered (as it works now) or according to math rules.
- Possibility to edit recalled expressions.
- Expression optimizer: "a+(-b)" to automatically converted into "a-b"
- Hotkeys to type directly using keyboard
- If you run the dockerized verion of the app, frontend is accesible on a port 3000 and is linked to the react dev server. Later on it is going to be linked to the build version.