Sistema completo de autenticação com login, registro, gerenciamento de sessão em cookies e níveis de acesso (roles).
- Next.js 16 - Framework React
- NextAuth.js - Autenticação
- Prisma - ORM
- SQLite - Banco de dados local (desenvolvimento)
- PostgreSQL - AWS Aurora (produção)
- TypeScript - Tipagem estática
- Tailwind CSS - Estilização
- Instale as dependências:
npm install- Configure as variáveis de ambiente:
cp .env.example .env- Gere o Prisma Client:
npm run db:generate- Crie o banco de dados:
npm run db:push- Popule o banco com dados iniciais:
npm run db:seed- Inicie o servidor de desenvolvimento:
npm run devApós executar o seed, você pode usar:
- Admin: admin@example.com / admin123
- User: user@example.com / user123
├── app/
│ ├── api/
│ │ ├── auth/
│ │ │ ├── [...nextauth]/route.ts # Handler NextAuth
│ │ │ ├── register/route.ts # Registro de usuários
│ │ │ └── session/route.ts # Verificação de sessão
│ │ └── users/
│ │ ├── route.ts # Listar usuários (admin)
│ │ └── [id]/role/route.ts # Atualizar role (admin)
│ ├── login/page.tsx # Página de login
│ ├── register/page.tsx # Página de registro
│ ├── dashboard/page.tsx # Dashboard do usuário
│ └── admin/page.tsx # Painel admin
├── components/
│ ├── auth/
│ │ ├── login-form.tsx # Formulário de login
│ │ └── register-form.tsx # Formulário de registro
│ ├── dashboard/
│ │ └── user-nav.tsx # Navegação do usuário
│ └── admin/
│ └── users-table.tsx # Tabela de usuários
├── lib/
│ ├── auth.ts # Configuração NextAuth
│ ├── auth-helpers.ts # Funções auxiliares
│ └── prisma.ts # Cliente Prisma
├── prisma/
│ ├── schema.prisma # Schema do banco
│ └── seed.ts # Dados iniciais
├── types/
│ └── next-auth.d.ts # Tipos NextAuth
└── proxy.ts # Middleware de proteção
O projeto usa SQLite por padrão para desenvolvimento local:
DATABASE_URL="file:./dev.db"Para produção, atualize o schema do Prisma e a variável de ambiente:
- Edite
prisma/schema.prisma:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}- Atualize
.env:
DATABASE_URL="postgresql://user:password@your-aurora-endpoint:5432/dbname?schema=public"- Execute as migrations:
npm run db:push- USER: Acesso ao dashboard pessoal
- ADMIN: Acesso ao painel admin + gerenciamento de usuários
npm run dev- Inicia servidor de desenvolvimentonpm run build- Build para produçãonpm run start- Inicia servidor de produçãonpm run db:generate- Gera Prisma Clientnpm run db:push- Sincroniza schema com banconpm run db:seed- Popula banco com dados iniciaisnpm run db:studio- Abre Prisma Studio (GUI do banco)
- Senhas hasheadas com bcrypt (12 rounds)
- Sessões JWT em cookies HTTP-only
- Middleware de proteção de rotas
- Validação de roles server-side
- CSRF protection via NextAuth
/- Homepage/login- Login/register- Registro
/dashboard- Dashboard do usuário
/admin- Painel administrativo