27 Jul 2025
Hi devs,
Welcome to the behind-the-scenes breakdown of chiristo.dev — my personal developer portfolio and blog.
This post is for developers and curious readers who want to understand how to plan, structure, and build a modern portfolio site. I’ll walk you through the decisions I made, the tools I chose, the folder structure I follow, and how I set things up — along with the thought process behind each choice.
This is not a step-by-step tutorial, but rather a developer’s guide — something you can read through, get inspired by, and adapt for your own projects.
If it gets too long, don’t worry — I’ll split it into parts and continue right where we leave off.
This blog assumes you have a basic understanding of
If you’re unfamiliar with any of these, don’t worry. The primary motive of this blog is to showcase how I planned my portfolio and how I structured it from scratch. So, language is not a problem to get started with the things. Additionaly, I’ll keep things beginner-friendly and link resources wherever helpful.
Like most developers, I wanted a place to:
I didn’t want to just follow a template. Templates are great for speed, but I wanted something fully custom — a site that reflects how I think about software architecture and developer experience.
“Design inspiration? Yeah, I borrowed the vibe from my senior dev — but the Figma file is all mine, I promise!” 😄
next-themesNext.js (App Router)
I picked Next.js because I had future plans like blogs and an admin dashboard. It supports server-side rendering, client-side interactions, and SEO — all things I needed. Compared to Vite or CRA, it's just more scalable and production-ready.
Firebase
I didn’t want just static hosting. I’ll be using Firestore and maybe Cloud Storage later, so Firebase gives me a proper backend setup. That’s why I skipped Vercel.
I strictly want to develop this portfolio for various release cycles. So I came up with proper versioning and release cycles. I followed 3 week personal spirint for my 1st and 2nd version and I successfully deployed it. Soon I’ll start to work on the version 3. Here’s the draft version 1, version 2 and version 3 features
I followed this folder structure
chiristo.dev/
├── public/ # Static assets
├── src/
│ ├── app/ # App Router structure (routing)
│ ├── assets/ # svg assets
│ ├── components/ # Reusable UI components
│ ├── hooks/ # Custom hooks
│ ├── data/ # Static content
│ ├── sections/ # Page-level layout blocks
│ ├── errors/ # Global error boundaries
│ ├── services/ # Firebase setup and utils
│ ├── styles/ # Global SCSS + variables
│ └── utils/ # Shared helper functions
├── .gitignore/
├── package.json
├── package-lock.json
├── README.md
└── etc.,
Each folder is cleanly separated to follow the Single Responsibility Principle — every directory has its own job.
That said, feel free to tweak the structure based on your own project needs — like I mentioned earlier, this is just a guide, not a strict tutorial.
In the next blog post (Part 2), I’ll cover:
next-themes for theming.module.scss and shared SCSS variablesThanks for reading!