| ☀️ Tema claro | 🌙 Tema escuro |
|---|---|
![]() |
![]() |
localStorage e detecção da preferência do sistema, sem flash de tela na cargaIntersectionObserver), respeitando prefers-reduced-motionnext/imagenext/font (zero layout shift)| Camada | Tecnologia |
|---|---|
| Framework | Next.js 14 (App Router) |
| UI | React 18 + TypeScript |
| Estilo | Tailwind CSS + CSS variables |
| Fontes | Geist (Sans + Mono) |
| Gerenciador | pnpm |
my-portfolio/
├── app/
│ ├── layout.tsx # Layout raiz + script de tema (anti-flash)
│ ├── page.tsx # Composição das seções
│ ├── globals.css # Tokens de tema (claro/escuro) e estilos base
│ └── fonts/ # Geist Sans / Mono (.woff)
├── components/
│ ├── Navbar.tsx # Navegação + toggle de tema + menu mobile
│ ├── Hero.tsx # Apresentação
│ ├── About.tsx # Sobre + skills
│ ├── Projects.tsx # Projetos em destaque + autorais
│ ├── Contact.tsx # Chamada de contato
│ ├── Footer.tsx
│ └── Reveal.tsx # Wrapper de animação no scroll
├── lib/
│ └── useTheme.ts # Hook de alternância de tema
└── public/imgs/ # Imagens e fotos
Requer Node.js 18+ e pnpm.
# 1. Clone o repositório
git clone https://github.com/mtlouzada/my-portfolio.git
cd my-portfolio
# 2. Instale as dependências
pnpm install
# 3. Inicie o servidor de desenvolvimento
pnpm dev
Abra http://localhost:3000 no navegador.
pnpm build # build de produção
pnpm start # roda o build de produção
pnpm lint # checagem de lint
O deploy recomendado é na Vercel (criadores do Next.js): basta importar o repositório — o framework e o pnpm são detectados automaticamente, e cada push na master publica uma nova versão.