When the dust settles

It’s now been ten days since I emerged victorious from my battle with Docker and the stuff related to that. So what I have been up to since?

I started remaking Makro – the calorie counter that I developed about a year ago with MEVN stack. This time I’m doing it with MEAN stack so not much change there. Basically just a transition from Vue to Angular. And to be completely honest there is not going to be THAT much changes to be made in the backend. Just some minor modifications to some of the models and added a bit more security so that pretty much all of the endpoints are behind authorization except for login and register (for quite obvious reason) and the endpoint to get all foods. Oh and JWT token expiration is down from 7 days to 1 day and that is going to be actually checked. Yeah, it wasn’t before so basically it never expires. Yay me.

I just remembered that I am going to make an admin panel for myself so that is actually going to require some work in the backend as well.

But most of the changes are going to be in frontend if for nothing else than switching from Vue to Angular (duh). There is not going to be that much changes to the actually UI (and UE) but more so to the functionality of it. So if any of my current users happens to read this you don’t have that much to worry about. The biggest changes in UI are probably going to be in the modals and in the profile page which are modernized.

As of today I have most of the core functionality in place and had my first (of many hopefully) test session with a user who has more than enough experience with the current version of Makro. And no it wasn’t me, but it was my wife. The first session reaped great results: she found a few bugs, pointed out some issues with functionality and expressed her wishes of what Makro is missing at the moment.

It would be nice to get feedback from other users as well but unfortunately that is rather impossible. But for me this is enough though because I am developing this thing mainly for me and my wife. All the other users that want to use it are just an added bonus.

One of the limitations I have had to work with is the fact that I am stuck with the current database. I mean I could (and still might) just get the relevant info from there (like all the user data and added foods) and set up a new database for the new version but we’ll see if I have the time and/or energy to do that. One of the things that I surely do have to fix is the one thing that I really messed up on last year. When I got the food data from Fineli for some reason I did not manage to find a version where they had used kilocalories instead of kilojoules. So what I ended up doing (which was really stupid) was that I used a for-loop to in frontend to convert the values to kilocalories and when users added new foods I had to convert the kilocalories to kilojoules before saving to database. But besides that there isn’t that much I’d have to change.

To be clear the site is still going to be completely usable even without registering/logging in. Just like before. I wanted to keep it that way since not all want to register and especially if they know nohting about the site at all. You can still search for foods, add them to meals to plan up meals for the day. By not logging in you are only going to miss the possibility to add new foods, filter foods added by other people from the search and save the days you have planned. I think that’s about all the things one is going to miss. Another security is that the user info is no longer saved into local storage at any point and the JWT does not include whole user info which was another huge mistake from my part.

I am going to keep the old one online for a while after I release this but I am hoping that people would start using the new one. It’s going to have some new features, is more secure, looks more modern and in my totally subjective opinion it is going to be much better.

But yeah. That’s about it. I’ll most likely be posting about it more in the near future.


Leave a Reply

Your email address will not be published. Required fields are marked *