-
Notifications
You must be signed in to change notification settings - Fork 0
📂 Estrutura do Projeto
Daiane Barbosa edited this page Jan 24, 2026
·
1 revision
dev-portfolio/
└── my-portfolio/
├── 📁 app/ # Rotas e layouts (Next.js App Router)
│ ├── favicon.ico # Ícone do site
│ ├── globals.css # Estilos globais + Tailwind directives
│ ├── layout.tsx # Layout raiz (HTML, body, metadata)
│ └── page.tsx # Página inicial (/)
│
├── 📁 components/ # Componentes React reutilizáveis
│ ├── About.tsx # Seção "Sobre Mim"
│ ├── Certificates.tsx # Seção de certificados
│ ├── Contact.tsx # Seção de contato
│ ├── Footer.tsx # Rodapé
│ ├── Hero.tsx # Seção hero (primeira tela)
│ ├── Navbar.tsx # Barra de navegação
│ └── Projects.tsx # Seção de projetos (carrossel)
│
├── 📁 data/ # Dados estruturados (TypeScript)
│ ├── certificates.ts # Lista de certificados e formações
│ └── projects.ts # Lista de projetos realizados
│
├── 📁 public/ # Arquivos estáticos servidos diretamente
│ └── projects/ # Imagens dos projetos
│ ├── nexus-dev.jpg
│ ├── watchtower.jpg
│ └── ... (outras imagens)
│
├── 📁 node_modules/ # Dependências (não versionar)
├── 📁 .next/ # Build do Next.js (não versionar)
│
├── 📄 .eslintrc.json # Configuração do ESLint
├── 📄 .gitignore # Arquivos ignorados pelo Git
├── 📄 next-env.d.ts # Types do Next.js (auto-gerado)
├── 📄 next.config.ts # Configuração do Next.js
├── 📄 package.json # Dependências e scripts
├── 📄 package-lock.json # Lock de versões exatas
├── 📄 postcss.config.js # Configuração do PostCSS
├── 📄 README.md # Documentação principal
├── 📄 tailwind.config.ts # Configuração do Tailwind CSS
└── 📄 tsconfig.json # Configuração do TypeScript
Usa o App Router do Next.js 14 (não Pages Router).
// Define estrutura HTML base
- <html lang="pt-BR">
- Metadados (title, description)
- Fonte (Inter do Google Fonts)
- Importa globals.cssResponsabilidades:
- ✅ Estrutura HTML base
- ✅ SEO (metadata)
- ✅ Fontes customizadas
- ✅ Estilos globais
// Importa e organiza todos os componentes
<Navbar />
<Hero />
<About />
<Projects />
<Certificates />
<Contact />
<Footer />Responsabilidades:
- ✅ Composição dos componentes
- ✅ Ordem das seções
- ✅ Estrutura geral da página
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Estilos personalizados */
* { scroll-behavior: smooth; }
body { background-color: #f9fafb; }Todos os componentes são Client Components ('use client') quando usam:
- Hooks (useState, useEffect)
- Eventos (onClick, onChange)
- Interatividade
| Componente | Tipo | Responsabilidade |
|---|---|---|
| Navbar.tsx | Client | Menu de navegação fixo com scroll behavior |
| Hero.tsx | Client | Apresentação inicial com animações |
| About.tsx | Server | Biografia + grid de tecnologias |
| Projects.tsx | Client | Carrossel interativo + filtros |
| Certificates.tsx | Client | Lista de certificados + filtros |
| Contact.tsx | Server | Cards de contato (links estáticos) |
| Footer.tsx | Server | Rodapé com informações |
Centraliza todos os dados do portfólio em arquivos TypeScript.
export interface Project {
id: number
title: string
description: string
image: string
technologies: string[]
link: string
github?: string
category: 'Frontend' | 'Backend' | 'Full Stack' | 'Mobile' | 'DevOps'
featured: boolean
status: 'completed' | 'in-progress'
demoUrl?: string
}
export const projects: Project[] = [/* 10 projetos */]Vantagens:
- ✅ Type safety com interfaces
- ✅ Fácil manutenção
- ✅ Reutilização
- ✅ Separação de responsabilidades
export interface Certificate {
id: number
title: string
institution: string
date: string
description: string
icon: string
category: 'Formação' | 'Certificação' | 'Curso'
featured?: boolean
}
export const certificates: Certificate[] = [/* 19 certificados */]Servidos diretamente pelo Next.js sem processamento.
public/
├── projects/ # Imagens dos projetos
│ ├── nexus-dev.jpg # Screenshot do Nexus Dev
│ ├── watchtower.jpg # Screenshot Watchtower
│ └── ... # Outras 8 imagens
│
└── favicon.ico # (opcional, pode estar em /app)
Como usar:
// No componente
<Image src="/projects/nexus-dev.jpg" alt="..." />Convenções:
- ✅ Usar formato WebP ou JPEG otimizado
- ✅ Tamanho recomendado: 1200x630px
- ✅ Peso máximo: 200KB por imagem
{
"scripts": {
"dev": "next dev", // Desenvolvimento
"build": "next build", // Build produção
"start": "next start", // Servidor produção
"lint": "next lint" // Verificar código
},
"dependencies": { /* 4 pacotes */ },
"devDependencies": { /* 9 pacotes */ }
}{
"compilerOptions": {
"paths": {
"@/*": ["./*"] // Permite import '@/components/...'
}
}
}{
content: [/* arquivos a processar */],
theme: {
extend: {
colors: {
// Cores personalizadas rosa/amarelo
},
animation: {
// Animações customizadas
}
}
}
}const nextConfig: NextConfig = {
// Configurações do Next.js
}{
"extends": "next/core-web-vitals"
}┌─────────────┐
│ data/*.ts │ Dados estruturados
└──────┬──────┘
│ import
▼
┌─────────────┐
│ components/ │ Componentes React
└──────┬──────┘
│ import
▼
┌─────────────┐
│ app/page.tsx│ Página principal
└─────────────┘
Exemplo concreto:
data/projects.ts → components/Projects.tsx → app/page.tsx → Usuário vê
| Tipo | Convenção | Exemplo |
|---|---|---|
| Componentes React | PascalCase | Navbar.tsx |
| Arquivos de dados | camelCase | projects.ts |
| Estilos | kebab-case | globals.css |
| Variáveis | camelCase | currentProject |
| Constantes | UPPER_SNAKE | MAX_PROJECTS |
| Interfaces | PascalCase |
Project, Certificate
|
node_modules/ # Dependências (reinstalar com npm install)
.next/ # Build do Next.js (regerado a cada build)
*.log # Logs
.env.local # Variáveis de ambiente locais
.DS_Store # macOS
| Item | Tamanho |
|---|---|
node_modules/ |
~500 MB |
.next/ (build) |
~50 MB |
public/ (imagens) |
~2-5 MB |
| Código-fonte | ~500 KB |
- Guia de Componentes - Entenda cada componente
- Gerenciamento de Dados - Como adicionar projetos/certificados
- Estilização com Tailwind - Customizar cores e estilos
Estrutura atualizada em: Janeiro 2026