2026-08-20 · 2 min read
Building guruprasad.tech
Why I decided to build my own corner of the internet instead of relying entirely on social platforms.
For a long time, I had profiles on platforms like LinkedIn and GitHub, but I wanted a place on the internet that I could truly call my own.
That led me to build guruprasad.tech.
I didn't want it to be just another portfolio with my name, experience, skills, and a contact button. I wanted to build something that could grow with me throughout my career.
Why build a personal website?
Platforms like LinkedIn and GitHub are incredibly useful, but they serve specific purposes.
LinkedIn represents my professional profile. GitHub represents the code and projects I choose to share.
I wanted something that could bring different parts of my professional journey together in one place.
A place where I can share:
- My professional experience
- Projects I've worked on
- Certifications
- Technical articles
- Things I've learned while solving real problems
Most importantly, I wanted to own the platform on which that content lives.
I decided to build it myself
There are plenty of portfolio templates and website builders available.
Using one of them would certainly have been faster.
But I decided to build the website myself using Next.js, TypeScript and Tailwind CSS.
The reason was simple: building the website itself could become a learning experience.
Instead of treating the portfolio only as an end product, I could use it to understand how a modern web application is structured.
Along the way, I worked with concepts such as:
- Component-based architecture
- Next.js App Router
- Dynamic routing
- TypeScript
- Responsive design
- SEO metadata
- Security headers
- Git and GitHub
- MDX-based content
Some of these concepts were familiar to me. Others became much clearer only after implementing them.
Building the blog with MDX
One of the parts I enjoyed building was the blog system.
I didn't want to create a new React page every time I wanted to publish an article.
Instead, articles live inside:
content/blog/