Welcome to my personal website! π
A hub for my portfolio, blog, 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. Itβs built with Next.js 14 (App Router), TypeScript, and Tailwind CSS, following Clean Architecture principles.
The codebase is organized 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 together in a predictable way.
src/app)src/app/globals.csssrc/data for posts, profile, timeline, services, and recommendationssrc/core/crosscutting/injection/DependencyInjectionContainer.ts) configured in src/di.tsβ¬οΈ Clone this repo
git clone https://github.com/maurogioberti/maurogioberti.github.io.git
cd maurogioberti.github.io
π Install dependencies
npm install
π Run the app in development
npm run dev
π§ͺ Run the test suite
npm test
π¦ Create a production build
npm run build
π Start the production server
npm start
No environment variables are required to run the project locally; all content is loaded 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.