Project 2: “Habit Tracker” (working name)

When we were told we needed to have our project ideas approved by lunch time last Friday afternoon, my goal was to come up with something as quickly as possible so I could get started right away. I was very concerned about not finishing in a week! I looked back at the ideas I saved for Project 1, chose one, and immediately started writing up the proposal. It didn’t take long before I started regretting not brainstorming some more. Up until late Monday I didn’t feel like I was “in love” with the project. But yesterday, I got into a really good groove. I started coming up with new features as I worked, and choosing to code in the shared working space outside of the classroom allowed me to get some great ideas from other web dev students. Currently, I’m not blocked by anything but there’s so much coding left to do!

Challenges (so far)

Authentication is not something we fully fleshed out during our lectures. We did learn how to hash passwords with bcrypt and I figured out how to create a session with the cookie-session module, but I didn’t know where to go with it after having a user logged in. I was very overwhelmed and feeling a bit negative! By the end of Monday, though, I realized how to work with the cookie-session object in order to control the user’s capabilities. That whole ordeal took up a large part of my Monday, and although there were a few more working hours left afterward, I could not bring myself to change gears and work on other parts of the code further.

One requirement for the project is to allow logging in with social media. Passport seems like the way to go, and many students have started wrestling with it already. It’s something I should make time to revisit once I have the rest of the main functionality down. I hope I don’t regret putting it off!

When I first shared my proposal with my instructors, one of them introduced me to the design concept of “mobile first.” Basically, it’s the idea that you should design it in a way that will be optimized for mobile devices. This makes a lot of sense to me as I’ve mentioned wanting to develop mobile applications sometime in the future, and because my application lends itself to be used on a mobile platform. In the context of this particular project, it has greatly helped guide my design decisions. I’m the last person that would call myself a designer, but I know some general guidelines. Firstly, I wanted to make sure the application was responsive; Materialize helps a lot with that. Secondly, I wanted to make sure the screen wasn’t too busy. I allow the user to add and partially update items from the main page, but I do not allow for major editing or deleting. That will all be contained in a different view. I’m not going to share too many details about the project just yet, but it will be apparent when I do share more about it that the user profile page could potentially be very busy! Finally, I’d like to implement a sort of sliding/swiping feature to divide up the content on the main page. So far I’m getting the effect with just clicking a link that uses jQuery’s toggle function, which is good enough for now.

Moving Forward

Today I’ll first focus on getting PUT and DELETE functions fully implemented. Then, I should work on admin user capabilities. After that I’ll start more extensive styling work, namely getting the color scheme applied and choosing fonts. I need to settle on a better name for the application, this placeholder name isn’t gonna cut it! I suppose after I get all that out of the way, I can try my hand at Passport and add more thorough testing. I have some very basic route testing in place that I created at the beginning, but it’s not very exhaustive and there’s no bad path testing. There’s so many little “extras” I want to implement, I really need to make the best of my remaining time between now and Friday afternoon!