민준
US - --:--:--
DEVELOPMENT

5 min read

Hello World:why I builtthis portfolio

Every dev starts with a Hello World. This is mine — not in the terminal, but in the digital world. The story of why I decided to build my own portfolio from scratch and what I learned along the way.

Victor M. Santos@soulhirolabs

March 13, 2026

First post. First step.

March 2026

The classic Hello World

Every programmer starts with a Hello World. It's the first thing that shows up on screen, the first sign that something works. It doesn't do anything useful, but it represents everything — the beginning.

This post is my Hello World. Not in the terminal, not in an IDE. It's my first public post, in my own space, telling the story of how and why this portfolio exists.

If you made it this far, welcome. Pull up a chair and make yourself at home.

The problem I wanted to solve

I needed a place to showcase my work. Simple as that. When a potential client asked "show me what you've done?", I'd send screenshots over WhatsApp, scattered links, voice explanations. It worked, but it was messy and unprofessional.

On top of that, every time someone was interested in a project, I had to ask the same questions: what type of project? What's the timeline? Do you have visual references? Is there a defined budget? Repeating this dozens of times is exhausting and takes time that could be spent building.

The idea became clear: I needed a portfolio that did more than show pretty projects. I needed something that worked for me.

Projects page with full case studies so clients can see without me having to explain

Quote form that collects all the information at once, without me having to ask

Centralization — everything in one place: projects, contact, blog, quotes

GOAL
It wasn't just about having a pretty portfolio. It was about reducing repetitive work, looking professional, and letting the portfolio handle the boring part for me.

The design challenge

This was honestly the hardest part. Not because of a lack of technical skill, but because I didn't have a defined visual identity. I knew how to code the portfolio. I didn't know how I wanted it to look.

I spent days looking at references. I tried minimalist styles, tried bolder things with heavy animations, tried following trends. Nothing felt right. The problem was that I was trying to copy what worked for others, instead of thinking about what represented me.

When I stopped looking outward and started thinking about what I actually like — rustic styles, classic, industrial, elegance with simplicity — things started clicking. The final design mixes serif with sans-serif typography, lots of white space, subtle textures and discrete interactions. Nothing loud. Everything intentional.

"The right design isn't what's trendy. It's what makes sense for who you are and who will see it."

The stack behind it

With the design defined, the technical part flowed naturally. I chose each tool thinking about productivity, scalability, and the developer experience — which in this case, is my own ^^

Next.js + React — SSR, file-based routing, Server Components, everything I needed for performance and SEO

Tailwind CSS — fast, consistent styling without loose CSS files scattered around the project

Sanity — headless CMS to manage blog posts and projects without touching the code

Drizzle + Neon (PostgreSQL) — relational database with end-to-end type safety and serverless deployment

WHY MONOREPO?

The portfolio isn't just the public site. There's the admin panel, the database, shared UI packages, emails, Sanity integration. All of this lives in the same repository with Turborepo — one deploy, one source of truth.

The blog and digital presence

I had a problem with LinkedIn: I simply never logged in. I knew I needed to be active there, that it was important for visibility and networking. But opening the platform, thinking of a post, writing, formatting and publishing was too big of a barrier for my daily routine.

The solution came naturally: what if I created a blog within the portfolio itself and used a tool to automatically distribute to social media?

That's where Ayrshare came in. It connects with LinkedIn (and other platforms) and lets me publish from one place. I write the post in Sanity, the blog publishes it here on the site, and Ayrshare distributes it to LinkedIn. One effort, multiple channels.

FLOW
Sanity (write) → Portfolio blog (publish) → Ayrshare (distribute to LinkedIn). Limit of 20 posts per month on the free plan — more than enough to get started.

What I learned while building

Building the portfolio from scratch was the best course I could have taken. Every new feature was a real problem to solve, not a tutorial exercise. Some of the most memorable lessons:

Internationalization with next-intl

Implementing i18n was more complex than I expected. It's not just about translating strings — it's about thinking through localized routes, fallbacks, date and number formatting, and making sure SEO works for each language. next-intl solved all of this elegantly with Next.js App Router.

Multi-step form with React Hook Form

The quote form has three steps: about you, about the project, and details. Making it work with per-step validation, without losing state between steps and with smooth UX was an excellent exercise in state management. All done with React Hook Form and Zod, no extra wizard libraries.

Sanity as a CMS

I had never used a headless CMS before. Sanity surprised me with its flexibility — I define the schema in code, model exactly the content I need and query everything with GROQ. Posts, projects and any dynamic content live in Sanity, not in the code.

What's coming next

This portfolio isn't a finished project. It's a living project that will grow with me. Some of the next steps:

Populate the projects page with complete and detailed case studies

Full management of projects, quotes and inbox in the admin panel

Client portal so each client can track their project's progress

Automation with n8n + AI for automatic requests via WhatsApp

Artificial intelligence integrated into the portfolio for smarter experiences

I plan to document each of these additions here on the blog. The idea is that each post is a record of the process — what I did, why I did it, and what I learned.

This is just the beginning

If you read this far, thank you sincerely. This post marks the beginning of a journey I'm building one step at a time. I don't have all the answers, I haven't mastered everything, but I have one thing that makes a difference: I don't stop.

If you want to follow this journey, find me on LinkedIn. And if you have a project in mind, check out the quote form — that's exactly what it's there for.

"The best time to start was yesterday. The second best is now."

PORTFÓLIONEXT.JSSANITYAYRSHAREHELLO WORLD

Victor M. Santos

Engenheiro de Software & Product Designer. Construindo produtos digitais com visão sistêmica.

Ver todos os artigos →
READ ALSO

© 2026 Victor M. Santos