Q3 Goals: Becoming More Proficient on the Back-End (Part 4)
In case you missed it, check out Part 1, Part 2, and Part 3 where I talk about my Q3 goals and explain how this series works.
Now, here’s Part 4!
Progress Update
Between Aug 12 and Aug 22, my goal was to complete the following:
Week of Aug 12
- Modern TS Course
- Logging — 15 mins
- Pro-production Configuration — 15 mins
- Front-End Application — 10 mins
- Deployment to AWS — 30 mins
Week of Aug 22
- Modern TS Course
- Testing a NestJS Application
- Plan out NestJS GraphQL app
❌ Completed Weekly Goal(s)
I did not complete my planned tasks for the Week of Aug 22. However, I purposefully made the workload lighter for the week of Aug 26th to allow me to catch up.
I’m crossing my fingers no unexpected events occur next week and I’m able to get back on track.
🤔 What did I do?
The material from this update touched on things like:
- logging (NestJS has a built-in logger)
- environment configuration (using a package called
config
) - connecting the API to a Front-End application
- deployment to AWS
I had prior experience with most of these areas but it was still helpful to review them.
✅ Milestone Achieved
If you remember from Part 1, my original Result Goal for the quarter was
Become more proficient in Back-End Development, measured by:
shipping 3 features on the API/Back-End side
After completing the first feature in the Part 3 update, I’m happy to share I’ve now completed this goal! 🎉
During this progress period, I spent a lot of time working on the back-end. This included the following features:
- 2 new entities
- 2 new mutations
It feels exciting for me because I achieved what I set out to achieve!
Although this NestJS course focused on a different framework than what we are using, I was able to apply a lot of the same concepts to client projects. I’m also thrilled on the opportunities I’ve had to do back-end work here at Echobind.
I am slowly starting to feel more comfortable picking up back-end work without asking for help. I will continue to use what I’ve learned to ship more back-end features moving forward 😄
💡 Key Learnings
Some of these things were new and others were review but here’s what stuck out:
- log levels
I heard about this at my last job but never fully learned what they were because I never had to implement them into an app. Since NestJS comes with a logger, the logger has methods for each log level. For instance, you have the following levels and what they’re used for:
- log — general purpose logging of important information
- warning — unhandled issue that is NOT fatal or destructive
- error — unhandled issue that is fatal or destructive
- debug — useful information that can help debug the logic
- verbose — information providing insights. usually for operations
config
package
Most of the time when I’ve worked with environment variables, I’ve used .env
files to manage. You can create a .env.development
.env.production
.etc based on the environment.
With config, you essentially do the same thing essentially, but with yaml
files. An example might be like this
development.yaml
server:
port: 3000
Then when you want to use that value, you import the package and get the port with const PORT = config.get('server.port')
And it knows what yaml
file to use based on the environment set for NODE_ENV
. Pretty cool, right?
⁉️ Challenges
The biggest challenge of these two weeks was deploying my app to AWS. The back-end side wasn’t too challenging but setting up SSL for the front-end was troublesome. I’m used to services like ZEIT and Netlify, which handle all that for you. Either way, it put me outside my comfort zone and reminded me how thankful I am for services that handle SSL for me. Besides that, everything seemed to make sense.
That’s all for my update! Thanks for reading and catch ya next week! 👋