back to all posts

February 18, 2023

·

1 min read

My first fullstack web app

The client for this project was Regal Rexnord, an industrial metal parts manufactoring company. The project started since, as part of Tec de Monterrey’s new educational model, selected companies serve as “business partners”. The objective of this dynamic is teaching students through hands-on experience on projects fo these selected companies.

This project was part of my software development class in 6th semester, where we had all the semester to create an application adjusted to the client’s requirements.

Challenges

I remember being excited to start building this project, it was technichally challenging, and had to be built with tools I already knew how to use. But still, I encountered several challenges that at first didn’t seem daunting.

  1. Testing tools that I didn’t know how to use.
  2. Fighting analysis paralysis to make engineering decisions.
  3. Creating reusable React components from scratch.

I’d like to dive deeper into each one, because from these three I was able to learn valuable lessons that I still keep in mind when starting a new project.

Testing new tools on an important project

The risks of trying new stuff, is good when risks are few and for some parts of the project, but not for every aspect of it. Auth, database and UI library were somewhat new for me, but since I wanted to maximize the amount of learning while developing this project, it sounded like a good idea. (Spoiler, I did learn a lot though).

I was eager to try a bunch of tools that I discovered on while browsing Twitter. The first one being this auth service called Clerk Dev, and then integrate it with Supabase to assign roles to the users of my application.

Long story short, it was difficult to implement said functionality with the combination of these two tools. What I learned from this mistake was that the auth service was kind of new, and its adapter on Supabase was not production ready, so it was missing several features that my team and I needed for the project.

There is a time and place to test new tools.

Me vs Analysis Paralysis

It was surprising to me the amount of time I spent defining the architecture of the project. It was almost and exaggeration. Other teams in class were already covering some of the software’s requirements and I was still deciding with what programming language should our backend be written with, and how it would everything connect together to make the project work. I know it’s important to take a time and analyze what I just said but the time I took for this project was a lot.

When I saw that some teams were already presenting important advances in their project, I knew that I had to start something, even if it fails. Fortunately nothing failed, and we could fulfill the requirements. But this experience taught me a lesson: It’s better to start building early thus failing faster, than to start late and fail when you don’t have any time left.

Fail fast to learn faster

Building reusable components from scratch

The new UI library I used for this project was Radix UI. It has an excellent API to build exactly the components you need. But what I didn’t know, was that I was not creating complex components, so I was basically reinventing the wheel unnecessarily. I just needed the basic stuff, for example, a button from a component library gives me. There was no need to create from scratch said component.

It is worth mentioning that I had known about the existance of shadcn’s UI library Shadcn.