Welcome to my personal website! ๐
A hub for my portfolio, blog, talks, resume, and professional services.
โญ Stars are welcome ๐
๐ Report an issue
๐ Visit my site
This website is my personal platform to showcase my work, share blog posts, and present my professional services.
Built with Next.js 15, React 19, TypeScript, and Tailwind CSS 4, following Clean Architecture principles.
The codebase is designed to keep business logic independent from the UI layer, with clear separation between domain models, use cases, infrastructure, and presentation. Dependency Injection is used to wire services, repositories, and use cases in a predictable and maintainable way.
The goal is simple:
๐ Keep business logic independent from the UI
๐ Make everything scalable, testable, and easy to evolve
.nvmrc)src/app)src/app/globals.csssrc/data for posts, profile, timeline, services, and recommendationssrc/di.ts) wiring services, repositories, and use casesโฌ๏ธ Clone this repo
git clone https://github.com/maurogioberti/maurogioberti.github.io.git
cd maurogioberti.github.io
๐ข Set Node version (recommended)
nvm install 25.8.1
nvm use 25.8.1
๐ฆ Install dependencies
npm install
๐ Run in development
npm run dev
๐งช Run tests
npm test
๐ฆ Build
npm run build
๐ Preview production (static export)
npx serve@latest out
No environment variables required. Everything runs from JSON files in src/data.
This project is structured to align with Clean Architecture principles:
project-root/
โโโ src/
โ โโโ core/
โ โ โโโ domain/ # Business entities and domain models
โ โ โโโ application/ # Use cases (application services)
โ โ โโโ infrastructure/ # Repositories, services, data access
โ โ โโโ crosscutting/ # Shared concerns (DI, mapping, SEO, utils)
โ โโโ app/ # Next.js App Router entrypoint
โ โ โโโ layout.tsx # Root layout
โ โ โโโ page.tsx # Root page
โ โ โโโ globals.css # Global styles & design tokens
โ โ โโโ components/ # Reusable UI components (Header, Footer, Theme, etc.)
โ โ โโโ pages/ # App Router segments (home, blog, talks, resume, services)
โ โ โ โโโ home/
โ โ โ โโโ blog/
โ โ โ โโโ talks/
โ โ โ โโโ resume/
โ โ โ โโโ services/
โ โ โโโ standalone/ # Standalone pages (e.g. linktree, talktree)
โ โโโ data/ # JSON data files (posts, profile, timeline, services, recommendations)
โ โโโ di.ts # Dependency injection configuration (wires services, repos, use cases)
โโโ public/ # Static assets (images, icons, open graph assets)
This structure ensures:
Testing is focused on business logic, repositories, and view models:
Run the full test suite with:
npm test
Released under MIT License by Mauro Gioberti.