Solução robusta de autenticação e autorização, incluindo o gerenciamento de Usuários, Perfis e Permissões.
Documentação »
Demonstração
·
Informar um bug
·
Requisitar feature
Conteúdo desse arquivo
S3curity é uma solução robusta de autenticação e autorização projetada para garantir segurança, flexibilidade e eficiência no gerenciamento de usuários, perfis e permissões.
- ✅ Autenticação segura com JWT
- ✅ Gerenciamento de usuários e perfis
- ✅ Controle de permissões granular
- ✅ API RESTful documentada
- ✅ Interface web moderna e responsiva
- ✅ Integração com múltiplos provedores de autenticação
- ✅ Suporte a multi-tenant
O sistema foi desenvolvido seguindo os princípios de Clean Architecture e Domain-Driven Design (DDD), com:
- Frontend: Next.js com TypeScript
- Backend: NestJS com Prisma ORM
- Banco de Dados: SQLite (com suporte para outros SGBDs)
- Autenticação: JWT com refresh tokens
- Testes: Jest e Cypress
Para executar localmente, siga os passos abaixo:
- Node.js v14.x ou superior (instalar)
- Yarn v1.22.x ou superior
- Docker (opcional para desenvolvimento com containers)
- Git (instalar)
-
Clonar o repositório
git clone https://github.com/einsoft/s3curity.git cd s3curity
-
Instalar dependências
yarn install
-
Configurar ambiente
cp apps/backend/.env.exemplo apps/backend/.env # Editar o arquivo .env com suas credenciais
-
Configurar banco de dados
cd apps/backend npx prisma migrate dev npx prisma generate
Detalhes sobre a configuração do Prisma:
npx prisma migrate dev
: Cria e aplica as migrações do banco de dadosnpx prisma generate
: Gera o cliente Prisma com base no schema
Configuração do Banco de Dados:
Por padrão, o projeto usa SQLite para desenvolvimento. Para usar outro banco de dados:
- Edite o arquivo
apps/backend/prisma/schema.prisma
- Altere o provider no datasource:
datasource db { provider = "postgresql" // ou "mysql", "sqlserver" url = env("DATABASE_URL") }
- Atualize a variável DATABASE_URL no .env
Solução de Problemas Comuns:
-
Erro "Database does not exist":
# Para PostgreSQL createdb s3curity_dev # Para MySQL mysql -u root -e "CREATE DATABASE s3curity_dev;"
-
Erro de permissões: Verifique se o usuário do banco tem permissões adequadas
-
Erro de conexão: Verifique se o banco está rodando e acessível Teste a conexão manualmente:
psql postgres://user:pass@host:port/dbname
-
Resetar banco de dados:
npx prisma migrate reset
Dicas de Desenvolvimento:
-
Para visualizar o banco de dados:
npx prisma studio
-
Para criar nova migração:
npx prisma migrate dev --name nome_da_migracao
-
Para aplicar migrações em produção:
npx prisma migrate deploy
-
Iniciar aplicação
yarn dev
Comando | Descrição |
---|---|
yarn dev |
Inicia frontend e backend |
yarn workspace frontend dev |
Inicia apenas o frontend |
yarn workspace backend start:dev |
Inicia apenas o backend |
yarn test |
Executa todos os testes |
yarn lint |
Verifica estilo de código |
yarn build |
Gera build de produção |
yarn clean |
Limpa cache e builds antigos |
s3curity/
├── apps/
│ ├── frontend/ # Aplicação Next.js
│ └── backend/ # API NestJS
├── packages/
│ ├── core/ # Lógica de negócio compartilhada
│ ├── ui/ # Componentes UI compartilhados
│ ├── eslint-config/ # Configurações ESLint
│ └── typescript-config/ # Configurações TypeScript
A documentação da API está disponível em:
- Swagger UI:
http://localhost:4000/api
- OpenAPI JSON:
http://localhost:4000/api-json
- Verifique se o banco de dados SQLite foi gerado corretamente na pasta: src/apps/backend/prisma/dev.db
- Confirme as credenciais no arquivo .env
- Limpe a cache:
yarn clean
- Reinstale as dependências:
yarn install
- Regenere os tipos do Prisma:
npx prisma generate
- Verifique se todas as dependências estão instaladas
Consulte nosso guia de troubleshooting para mais informações.
Contribuições são bem-vindas! Siga estes passos:
- Faça um fork do projeto
- Crie sua branch (
git checkout -b feature/NovaFeature
) - Faça commit das mudanças (
git commit -m 'Adiciona NovaFeature'
) - Envie para a branch (
git push origin feature/NovaFeature
) - Abra um Pull Request
Antes de contribuir, leia nosso guia de contribuição.
- Siga o guia de estilo de código
- Escreva testes para novas funcionalidades
- Mantenha commits atômicos e bem descritos
- Documente novas funcionalidades
Este projeto está licenciado sob a licença Unlicense - veja o arquivo LICENSE.txt para mais detalhes.
- Suporte a autenticação OAuth
- Integração com provedores de identidade (Google, GitHub, etc.)
- Dashboard administrativo
- Documentação completa da API
Veja nosso roadmap completo para mais detalhes.
Projeto: https://github.com/einsoft/s3curity