Personal CV / portfolio site built with Next.js 16, React 19, TypeScript and Tailwind CSS 4.
- About
- Skills
- Job experiences
- GitHub repositories
- Portfolio
- Responsive sidebar navigation (collapsible on mobile)
- Dark / light mode toggle
- Scroll-triggered animations (IntersectionObserver)
- Static export for GitHub Pages
- Tailwind CSS v4 (CSS-first configuration)
- TypeScript throughout
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Language | TypeScript |
| UI | React 19, Tailwind CSS 4 |
| Animations | Motion (Framer Motion) |
| Icons | react-icons |
| Hosting | GitHub Pages (static export) |
# Install dependencies
npm install
# Run the dev server (Turbopack)
npm run devThe site will be available at http://localhost:3000.
# Production build (static export)
npm run buildThe output is generated in the out/ directory.
All site data lives in data/siteConfig.ts — update it with your own information:
const siteConfig: SiteConfig = {
siteTitle: 'Hi! I\'m Tomás!',
siteDescription: 'This is my personal page',
keyWords: ['next.js', 'react', 'curriculum'],
authorName: 'Tomás Novau',
githubUsername: 'tnovau',
authorAvatar: '/images/avatar.jpg',
authorDescription: '...',
skills: [
{ name: 'Front-end', level: 90 },
// ...
],
jobs: [/* ... */],
portifolio: [/* ... */],
social: {
twitter: '...',
linkedin: '...',
github: '...',
email: '...',
},
enableDarkmode: true,
headerLinks: [
{ label: 'Home', url: '/' },
{ label: 'Portifolio', url: '/portifolio' },
],
// ...
}app/ # Next.js App Router pages & layouts
layout.tsx # Root layout (metadata, FOUC script)
page.tsx # Home page
portifolio/ # Portfolio page
data/
siteConfig.ts # All site content & configuration
src/
components/ # React components
theme/ # Theme context provider
utils/ # Utility functions
public/ # Static assets (images, favicon)
MIT