- handleDeleteJob: compare string IDs directly instead of parseInt - handleSaveEdit: use string ID for future update logic - IDs are now UUIDs (strings) after migration |
||
|---|---|---|
| .. | ||
| messages | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| .stylelintrc.json | ||
| components.json | ||
| Dockerfile | ||
| eslint.config.mjs | ||
| jest.config.js | ||
| jest.setup.js | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
| wrangler.toml | ||
Frontend - GoHorse Jobs
Frontend da plataforma GoHorse Jobs construído com Next.js 15 e App Router.
✨ Features Recentes
- Server-Side Pagination: Listagem de vagas otimizada com paginação real.
- Busca e Filtros: Filtragem por localização, tipo e modo de trabalho integrada ao backend.
- Internacionalização (i18n): Suporte a múltiplos idiomas (PT, EN, ES).
- Skeleton Loading: UI polida com estados de carregamento.
- FAQ & Contato: Páginas de suporte com tickets simulados.
🏗️ Arquitetura
src/
├── app/ # App Router (Páginas)
│ ├── dashboard/ # Área logada
│ │ ├── admin/ # Painel SuperAdmin
│ │ ├── empresa/ # Painel Empresa
│ │ └── candidato/ # Painel Candidato
│ ├── login/ # Autenticação
│ ├── vagas/ # Listagem pública
│ └── layout.tsx # Layout raiz
│
├── components/ # Componentes React
│ ├── ui/ # shadcn/ui primitives
│ ├── forms/ # Formulários reutilizáveis
│ └── (feature)/ # Componentes por feature
│
├── contexts/ # React Contexts
│ └── AuthContext.tsx # Autenticação global
│
├── hooks/ # Custom Hooks
│ ├── useAuth.ts # Hook de autenticação
│ └── useProfile.ts # Hook de perfil
│
└── lib/ # Utilitários
├── api.ts # Cliente HTTP
└── utils.ts # Helpers gerais
🎨 Design System
Tecnologias
| Tecnologia | Uso |
|---|---|
| shadcn/ui | Componentes base (Radix UI) |
| Tailwind CSS 4 | Estilização utility-first |
| Lucide Icons | Ícones |
| Framer Motion | Animações |
Tema
O tema está definido em src/app/globals.css usando CSS variables com cores oklch():
- Primary: Laranja (
oklch(0.68 0.22 45)) - Background: Light/Dark mode automático
- Componentes: Herdam do design system
📱 Páginas Principais
| Rota | Descrição | Acesso |
|---|---|---|
/ |
Landing page | Público |
/jobs |
Listagem de vagas | Público |
/login |
Autenticação | Público |
/dashboard/admin |
Painel admin | SuperAdmin |
/dashboard/empresa |
Painel empresa | CompanyAdmin, Recruiter |
/dashboard/candidato |
Painel candidato | JobSeeker |
🚀 Desenvolvimento
Instalar dependências
npm install
Executar em desenvolvimento
npm run dev
Build de produção
npm run build
npm run start
Linting
npm run lint
🐳 Docker
# Build
docker build -t gohorse-frontend .
# Run
docker run -p 3000:3000 gohorse-frontend
Nota: Requer output: "standalone" no next.config.ts (já configurado).
📁 Componentes Principais
| Componente | Descrição |
|---|---|
components/ui/* |
Primitivos shadcn/ui |
components/dashboard-* |
Componentes do dashboard |
components/job-* |
Componentes de vagas |
components/sidebar.tsx |
Navegação lateral |
🔧 Configuração
Variáveis de Ambiente
NEXT_PUBLIC_API_URL=http://localhost:8080
TypeScript
Configurado com strict mode em tsconfig.json.
ESLint
Configurado com next/core-web-vitals e next/typescript.