Prerequisites for continuing the journey

Prerequisites for Continuing the Journey

Welcome aboard the second post of the Gallalaus: An Expedition into Full Stack Development journey! This second stop will provide clarity on the tools and technologies that we are going to use. Most of them will be relevant throughout the series, but some will be changed or new ones will be added. So, buckle up and enjoy the ride!

Who Is This Series For?

This series is aimed at anyone looking to learn more about full stack development. It's advisable to have some prior knowledge of web development fundamentals, such as HTML, CSS, and JavaScript. You should have worked as a software developer for a couple of years or at least as a technical product owner or manager. This won't be a zero-to-hero tutorial series.

What Tools Are We Going to Use?

I want to emphasize that you don't need to use the exact same tools as I do, but I want to make sure you are set up before we dive into the first task.

For designing UML diagrams, I prefer to use PlantUML. I usually have a local setup for this, but you can use this online editor. To set up locally, start a container from this PlantUML image found on Docker Hub. Another option is to use a tool like diagrams.

For code editing, feel free to use whatever you are familiar with or think is cool and want to learn. It's not crucial. You can use Notepad++, Vim, Emacs, VSCode, or more advanced IDEs like the JetBrains suite or NetBeans. Personally, I'll use the JetBrains suite because it feels more comfortable to me.

To keep track of tasks until we release the MVP, I'll use Trello. It's free and simple to use.

For documentation, I recommend using whatever is comfortable for you. For API documentation, I'll use OpenAPI specifications, including both Swagger and Postman. I like Postman because I can also write API tests with it, and it's more user-friendly. Swagger comes integrated with NestJS, so I add it to every NestJS service I deliver. For code documentation, I might use Compodoc as it's also integrated with Nest and supports Angular. Alternatively, you can use JSDoc.

As a Git server, I have my private GitLab server, so what I post as snippets might be linked to GitHub Gists or GitLab snippets. Feel free to use whatever works for you here.

I'll cover CI/CD tools at the right moment. For now, our focus is on setting up a decent development environment to ship our MVP.

What Technologies Are We Going to Use?

As mentioned in the introduction post, especially for the MVP, we are going to use Angular, Ngrx, RxJS, NestJS, Angular Material, MongoDB, and HTTP-based communication. Everything will be done in a monolithic manner during the MVP phase. I will split the backend from the front end, but I will not do more splitting at this point.

We will use Docker and Docker Compose to run the application and the database.

For unit/integration testing, we will use Jest for the NestJS services and Jasmine+Karma for Angular. Why? Because they both come integrated with the frameworks. To make it fun and explore a bit, API tests will be done with newman, a test framework created by the Postman team. For acceptance tests and end-to-end tests, I will use Playwright.

Buckle up, prepare your environment, and let's begin the journey.