Sistema completo de autenticação com Role-Based Access Control (RBAC) para gerenciamento de influenciadores, marcas e administradores.
Monorepo moderno construído com Turborepo que inclui:
- Backend: NestJS + Better Auth + MongoDB com sistema RBAC completo
- Frontend: React + Vite + Tailwind CSS v4 com interface moderna
- 3 Tipos de Usuários: Influencer, Brand e Ori (Admin)
authentication-system-monorepo/
├── apps/
│ ├── backend/ # API NestJS
│ │ ├── src/
│ │ │ ├── auth/ # Sistema de autenticação e RBAC
│ │ │ ├── admin/ # Rotas protegidas para admin
│ │ │ └── lib/ # Configuração Better Auth
│ │ ├── scripts/ # Scripts utilitários (create-admin)
│ │ └── test/guides/ # Documentação detalhada
│ └── web/ # Frontend React
│ ├── src/
│ │ ├── components/ # Componentes reutilizáveis
│ │ ├── pages/ # Páginas (Auth + Dashboards)
│ │ ├── services/ # Serviços de API
│ │ └── types/ # Definições TypeScript
│ └── vite.config.ts
├── packages/
│ └── eslint-config/ # Configurações ESLint compartilhadas
├── turbo.json # Configuração Turborepo
└── package.json # Workspaces root
- NestJS 11.0.1 - Framework Node.js
- Better Auth 1.3.27 - Sistema de autenticação moderno
- MongoDB 6.20.0 + Mongoose 8.19.1 - Banco de dados
- TypeScript - Tipagem estática
- Class Validator - Validação de DTOs
- React 18.3.1 - Biblioteca UI
- Vite 5.4.1 - Build tool super rápido
- Tailwind CSS 3.4.11 - Framework CSS utilitário
- React Router DOM 6.26.0 - Roteamento
- Lucide React - Ícones modernos
- TypeScript - Tipagem estática
- Turborepo 2.1.3 - Monorepo build system
- npm workspaces - Gerenciamento de pacotes
- Node.js >= 18.x
- npm >= 9.x
- MongoDB (local ou Atlas)
- Git
git clone https://github.com/s4mp41xao/authentication-system-monorepo.git
cd authentication-system-monoreponpm install# Copie o arquivo de exemplo
cp apps/backend/.env.example apps/backend/.envEdite apps/backend/.env:
# Database
DATABASE_URL="mongodb://localhost:27017/authentication-system"
# ou para MongoDB Atlas:
# DATABASE_URL="mongodb+srv://user:password@cluster.mongodb.net/authentication-system"
# Better Auth
BETTER_AUTH_SECRET="seu-secret-super-seguro-aqui"
BETTER_AUTH_URL="http://localhost:3000"
# Frontend URL (para CORS)
FRONTEND_URL="http://localhost:5173"
# Node Environment
NODE_ENV="development"# Crie o arquivo .env
echo 'VITE_API_URL=http://localhost:3000' > apps/web/.env# Se estiver usando MongoDB local
mongod
# Ou use MongoDB Atlas (configure a URL no .env)# Inicia backend e frontend simultaneamente
npm run devOu execute separadamente:
# Backend (porta 3000)
npm run dev --filter=backend
# Frontend (porta 5173)
npm run dev --filter=webApós configurar o backend, crie o primeiro usuário admin:
cd apps/backend
npm run create-adminCredenciais padrão:
- Email:
admin@ori.com - Senha:
Admin@123
- ✅ Registro com seleção de role (Influencer/Brand)
- ✅ Login com email e senha
- ✅ Logout
- ✅ Sessões com cookies (httpOnly)
- ✅ Proteção contra auto-registro como admin
- ✅ 3 tipos de usuários:
influencer,brand,ori(admin) - ✅ Guards de proteção de rotas
- ✅ Decorators customizados (
@Roles()) - ✅ Middleware de autenticação global
- ✅ Redirecionamento baseado em role
- ✅ Design split-screen para autenticação
- ✅ Seleção interativa de role com cards
- ✅ Toggle de visualização de senha
- ✅ Dashboards específicos por role
- ✅ Homepage com apresentação de tipos de usuário
- ✅ Responsivo (mobile-first)
/- Homepage/signup- Cadastro/signin- Login
/influencer/dashboard- Dashboard do Influencer/brand/dashboard- Dashboard da Brand/admin/dashboard- Dashboard do Admin (Ori)
# Testes unitários
npm run test
# Testes E2E
npm run test:e2e
# Coverage
npm run test:covDocumentação detalhada disponível em apps/backend/test/guides/:
- IMPLEMENTATION.md - Guia de implementação RBAC
- ROLES.md - Documentação dos roles e permissões
- CRIAR-ADMIN.md - Como criar usuários admin
- FRONTEND-INTEGRATION.md - Integração frontend/backend
- GUIA-RAPIDO.md - Guia rápido de uso
- MONOREPO-VS-MULTIREPO.md - Decisões de arquitetura
- SETUP-MONOREPO.md - Setup do monorepo
- HOMEPAGE.md - Design da homepage
# Desenvolvimento
npm run dev # Inicia tudo (backend + frontend)
npm run dev:backend # Apenas backend
npm run dev:web # Apenas frontend
# Build
npm run build # Build de tudo
npm run build:backend # Build backend
npm run build:web # Build frontend
# Linting
npm run lint # Lint em tudo
npm run lint:fix # Fix automático
# Outros
npm run clean # Limpa node_modules e builds- Backend: http://localhost:3000
- Frontend: http://localhost:5173
- MongoDB: mongodb://localhost:27017
- ✅ Senhas hasheadas com bcrypt
- ✅ Cookies httpOnly e secure
- ✅ CORS configurado
- ✅ Validação de DTOs
- ✅ Guards de proteção de rotas
- ✅ Prevenção de auto-registro como admin
- Fork o projeto
- Crie uma branch (
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
Este projeto está sob a licença MIT.
Samuel Paixão - @s4mp41xao
Consulte as Issues para ver problemas conhecidos e solicitar novas features.
Se tiver dúvidas ou problemas:
- Verifique a documentação em
apps/backend/test/guides/ - Procure nas Issues
- Abra uma nova Issue
⭐ Se este projeto foi útil, considere dar uma estrela no GitHub!
You can build a specific package by using a filter:
# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo build --filter=docs
# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo build --filter=docs
yarn exec turbo build --filter=docs
pnpm exec turbo build --filter=docs
To develop all apps and packages, run the following command:
cd my-turborepo
# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo dev
# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo dev
yarn exec turbo dev
pnpm exec turbo dev
You can develop a specific package by using a filter:
# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo dev --filter=web
# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo dev --filter=web
yarn exec turbo dev --filter=web
pnpm exec turbo dev --filter=web
Tip
Vercel Remote Cache is free for all plans. Get started today at vercel.com.
Turborepo can use a technique known as Remote Caching to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:
cd my-turborepo
# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo login
# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo login
yarn exec turbo login
pnpm exec turbo login
This will authenticate the Turborepo CLI with your Vercel account.
Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo link
# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo link
yarn exec turbo link
pnpm exec turbo link
Learn more about the power of Turborepo: