A Frustrating Project Start

The start of my project has been frustrating, because I'm just starting it.

Published on June 14, 2020

I have successfully met my 10 hour commitment, but it's been frustrating. I'm spending time working out little gotchas with my tools, but when I stop and think about it, it's expected. I'm still at the beginning stages of my project.

The frustrating stuff

Structuring my project

One of the biggest challenges I have made for myself is trying to get the project structure 'right'. I'm trying to structure my project in a way that makes sense for lazy loading Angular modules. Some articles I've read get really extreme about this and talk about how they figured out a flexible project structure that makes sense. I put a lot of weight into this, because I feel like it's something that will always help me in the future, in both personal and professional work. There are also times where I just did whatever I wanted to do, and would then understand why those bloggers did things the way they did. That's called learning. The two articles I based my project structure on were written by Tom Cowley and Mathis Garberg. I don't know anything about these guys other than what their profiles say, but their blog posts seem legit.

Firebase Authentication

This actually went pretty well. I still found it frustrating, because I couldn't find any solid examples of it being implemented with Angular. The ones that I did find were pretty basic examples of how to use it. The more I understood how to use it, the more basic I realized the initial examples I used to get started were. That's the internet. You get what you pay for.

Lazy loading Angular modules

At work we haven't done this. We eager load everything. It still runs pretty fast, mainly because we have good internet connections everywhere. For my personal project, I expect people to use it on their phones with a varying connection, so I want to keep the initial load size as small as possible. This means I need to know about lazy loading Angular modules, which I didn't. Now I do, but that took some time.

PrimeNG theming

I use PrimeNG at work, so I thought that would speed things up considerably. It did, but there was a slight difference. I never configured the initial work project. I walked into it already configured, where the team bought a theme and used that going forward. I don't want to pay for a theme, but I know the value of them. I appreciate them even more after this week, because I had to configure the free one that PrimeNG gives you, which has minimal styling. The documentation for it wasn't that great, but I figured it out.

Work accomplished in my 10 hours

Firebase authentication

Even though I didn't 'solve' the authentication part of my app, I have a pretty good understanding of how to use it.

Login

I got the login page figured out, with a bonus feature of signing out. Styling the login was the biggest pain, but it introduced me to PrimeNG's Form Layout, which makes building forms in a flexbox style pretty simple. This wasn't available in the previous version of PrimeNG. At least, the documentation wasn't there. Anyways, I had to figure out how to style the whole page, so I tried make it as simple as possible. I'll worry about refining the styling later.

Initial pain

I know that this is the initial pain of starting a project and getting used to the tools you are using. I use PrimeNG and Angular at work, but I'm using them slightly differently in my personal project, so I'm getting used to that. I always try to remind myself that if I'm getting frustrated, it's a good thing. It means I'm in the process of learning, and that makes me happy.

Goals for this week

Get user registration worked out. Maybe start laying out the ground work for what my backend will look like.