Hello

,

I

'

m Enzo

.

I'm a Full-stack Developer based in Uruguay.

Enzomdev

@enzom_uy

Follow

Full-Stack Developer.

Portfolio

Stack

TypescriptNextChakraFramer MotionSanity.ioNodeExpress

Website

https://enzomdev.vercel.app/

Repository

https://github.com/enzom-uy/portfolio

Although this wasn't my first project, I've wanted to make my portfolio since I started learning web development.

For some time I thought about doing my portfolio only when I had at least a few projects to show. Still, after gaining some experience while working on my projects I got excited about using all that new knowledge.

Let me start by explaining why I chose the technologies and packages that I used for this project:

  • Why Nextjs? Simple, because it's way better than React. It handles routing way better than React (although React doesn't even have built-in routing), it handles a lot of under-the-hood optimizations, the developer experience is really good and the most important aspect of Nextjs is: data fetching. Knowing ahead that my portfolio was going to have a blog and works section, I had to find a way to fetch those posts/works the fastest way possible, without slowing the user experience on my website, and update that data when I created a new post/work. That's when ISR (incremental static regeneration) comes in.
  • Why Chakra? I just love this library. Lately, I've been hearing good stuff about Mantine, but Chakra was the first library in that I felt comfortable coding and using/customizing their components. It has really useful and pretty components like Modals, the Menu that I use for the mobile navbar, tooltips, and well-animated skeletons.
  • Node + Express. Currently, my backend is small. At first, I was planning to have an Admin section with JWT authentication, to be able to create new posts/works. But if I wanted to do that I would've to create or implement a rich text editor, figure out how to get the content with all the necessary stuff for styled text, handle upload images and store all of that in my database (which it was going to be Mongo, since I was going to store documents). I had a headache while thinking about that and decided to not reinvent the wheel and use Sanity. As for now, I use my backend to communicate with the Twitter API to get the information you see in the floating cards at the top of the website. Also, to not exceed the number of requests that the Twitter API has, I used toad-scheduler to schedule the API calls every 40 minutes. Finally, I deployed my backend in Railway.
  • And finally, Sanity.io. Sanity.io is what I'm using right now to create and publish this work post. Is a headless CMS, so it only handles the data I want to fetch and show on my website. I'm also planning to replace the hard-coded Bio section on my landing page with Sanity.io content, so I can update it without having to touch my code.