Sistema de gerenciamento de empresas desenvolvido com Next.js 15, oferecendo uma interface moderna e responsiva para cadastro, listagem, edição e exclusão de empresas.
- Next.js 15 - Framework React com App Router
- React 19 - Biblioteca para interfaces de usuário
- TypeScript - Tipagem estática
- Tailwind CSS - Framework CSS utilitário
- Radix UI - Componentes acessíveis
- React Hook Form - Gerenciamento de formulários
- Zod - Validação de schemas
- TanStack Query - Gerenciamento de estado servidor
- Better Auth - Sistema de autenticação
- Drizzle ORM - ORM para PostgreSQL
- Lucide React - Ícones
- Node.js 18+
- npm, yarn, pnpm ou bun
- PostgreSQL (local ou remoto)
- Backend da aplicação rodando na porta 8080
git clone https://github.com/ENDERSON-MARIN/COMPANY-MANAGEMENT-FRONTEND.git
cd company-management-frontnpm install
# ou
yarn install
# ou
pnpm installCrie um arquivo .env na raiz do projeto com as seguintes variáveis:
# Database
DATABASE_URL="postgresql://usuario:senha@host:porta/database?sslmode=require"
# Google OAuth (opcional)
GOOGLE_CLIENT_ID="seu-google-client-id"
GOOGLE_CLIENT_SECRET="seu-google-client-secret"
# Better Auth
BETTER_AUTH_SECRET="sua-chave-secreta-aleatoria"
BETTER_AUTH_URL="http://localhost:3000"
# API Backend
NEXT_PUBLIC_API_URL="http://localhost:8080/api"Se você quiser usar autenticação local, inicie o PostgreSQL com Docker:
docker-compose up -dExecute as migrações do banco:
npx drizzle-kit pushnpm run dev
# ou
yarn dev
# ou
pnpm devnpm run build
npm startA aplicação estará disponível em http://localhost:3000
A aplicação consome os seguintes endpoints do backend:
- GET
/api/companies- Lista todas as empresas - GET
/api/companies/:id- Busca empresa por ID - POST
/api/companies- Cria nova empresa - PUT
/api/companies/:id- Atualiza empresa existente - DELETE
/api/companies/:id- Remove empresa
- POST
/api/auth/sign-in- Login com email/senha - POST
/api/auth/sign-up- Registro de usuário - GET
/api/auth/session- Verifica sessão atual - POST
/api/auth/sign-out- Logout - GET
/api/auth/callback/google- Callback OAuth Google
interface Company {
id: string;
name: string; // Mínimo 3 caracteres
cnpj: string; // Exatamente 14 dígitos
email: string; // Formato de email válido
phone?: string; // Opcional
address?: string; // Opcional
createdAt: string;
updatedAt: string;
}src/
├── _components/ # Componentes reutilizáveis
├── _db/ # Configuração do banco (Drizzle)
├── _errors/ # Classes de erro customizadas
├── _hooks/ # Hooks customizados
├── _lib/ # Utilitários e configurações
├── _providers/ # Providers React (Query, Theme, etc.)
├── _schemas/ # Schemas de validação (Zod)
├── _services/ # Camada de serviços/API
├── _types/ # Definições de tipos TypeScript
└── app/ # Rotas Next.js (App Router)
- Escolhido pela performance superior e recursos modernos
- Server Components para melhor SEO e carregamento inicial
- Roteamento baseado em arquivos para organização clara
- Solução moderna e flexível para autenticação
- Suporte nativo a OAuth (Google) e email/senha
- Integração direta com Drizzle ORM
- Cache inteligente e sincronização automática
- Otimistic updates para melhor UX
- Gerenciamento de loading e error states
- Type-safe queries com excelente DX
- Migrações automáticas e schema evolution
- Performance superior comparado a ORMs tradicionais
- Componentes acessíveis por padrão (WCAG)
- Design system consistente e customizável
- Excelente performance e bundle size
- Type-safe validation em runtime
- Integração perfeita com React Hook Form
- Mensagens de erro customizáveis
- Services: Abstração da comunicação com API
- Schemas: Validação centralizada de dados
- Types: Tipagem consistente em toda aplicação
- Components: Reutilização e manutenibilidade
// Classe customizada para erros da API
export class AppError extends Error {
constructor(
message: string,
public statusCode: number = 500,
) {
super(message);
}
}// Cliente HTTP centralizado com tratamento de erros
export async function apiClient<T>(
endpoint: string,
options: RequestInit = {},
): Promise<T> {
// Implementação com tratamento de erros padronizado
}npm run dev- Inicia servidor de desenvolvimentonpm run build- Gera build de produçãonpm run start- Inicia servidor de produçãonpm run lint- Executa linting do códigonpm run prepare- Configura Husky (Git hooks)
- Conecte seu repositório no Vercel
- Configure as variáveis de ambiente
- Deploy automático a cada push
# Build da imagem
docker build -t company-management-front .
# Executar container
docker run -p 3000:3000 company-management-front- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'feat: adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
- Commits: Seguimos Conventional Commits
- Code Style: ESLint + Prettier configurados
- Git Hooks: Husky para validação pré-commit
- Lint Staged: Formatação automática de arquivos modificados
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.



