O iLiberty User Management é um sistema centralizado de gerenciamento de usuários desenvolvido para uso interno. O sistema permite administrar usuários, seus papéis e permissões através de uma interface web moderna e amigável, integrada com Auth0 para autenticação e autorização.
- Deno: Runtime JavaScript/TypeScript
- Hono: Framework web leve e rápido
- Auth0: Plataforma de autenticação e autorização
- TailwindCSS: Framework CSS utility-first
- JSX/TSX: Para renderização de componentes
📦 iLiberty User Management
┣ 📂 src # Código-fonte principal
┃ ┣ 📂 components # Componentes reutilizáveis da UI
┃ ┣ 📂 routes # Rotas e controladores da aplicação
┃ ┣ 📂 services # Serviços e lógica de negócios
┃ ┣ 📂 types # Definições de tipos TypeScript
┃ ┣ 📂 utils # Utilitários e funções auxiliares
┃ ┗ 📜 main.tsx # Ponto de entrada da aplicação
┣ 📂 static # Arquivos estáticos (CSS, imagens)
┣ 📂 public # Arquivos públicos
┣ 📂 docs # Documentação adicional
┣ 📜 deno.json # Configuração do Deno
┣ 📜 deno.jsonc # Configuração extendida do Deno
┣ 📜 tailwind.config.cjs # Configuração do TailwindCSS
┗ 📜 README.md # Este arquivo
- NewLayout.tsx: Layout principal da aplicação com navegação e estrutura de página
- LoginLayout.tsx: Layout específico para páginas de autenticação
- LoginPage.tsx: Página de login da aplicação
- MockApiForm.tsx: Formulário para gerenciamento de APIs mockadas
- MockApiList.tsx: Lista de APIs mockadas
- MockApiPage.tsx: Página de gerenciamento de APIs mockadas
- auth.tsx: Rotas de autenticação (login, logout, callback)
- users.tsx: Gerenciamento de usuários (listar, criar, editar, excluir)
- clients.tsx: Gerenciamento de clientes/aplicações OAuth
- settings.tsx: Configurações do sistema
- auth.ts: Funções auxiliares de autenticação e middleware
- auth0.ts: Integração com a API do Auth0
- env.ts: Gerenciamento de variáveis de ambiente
- formDataMapper.ts: Mapeamento de dados de formulários para objetos
O projeto segue uma arquitetura baseada em componentes com roteamento declarativo. O fluxo de autenticação é gerenciado através do Auth0, conforme detalhado no arquivo README_AUTH.md.
- Deno 1.36.0 ou superior
- Node.js 18+ (para ferramentas auxiliares como TailwindCSS)
- Conta Auth0 configurada (veja seção de autenticação)
-
Clone o repositório:
git clone [URL_DO_REPOSITÓRIO] cd iLiberty-user-management -
Configure as variáveis de ambiente: Crie um arquivo
.envna raiz do projeto com as seguintes variáveis:AUTH0_DOMAIN=seu-tenant.auth0.com AUTH0_CLIENT_ID=seu-client-id AUTH0_CLIENT_SECRET=seu-client-secret AUTH0_CALLBACK_URL=http://localhost:8888/callback AUTH0_LOGOUT_REDIRECT=http://localhost:8888 AUTH0_MGMT_CLIENT_ID=seu-management-client-id AUTH0_MGMT_CLIENT_SECRET=seu-management-client-secret -
Inicie o servidor de desenvolvimento:
deno task dev
-
Acesse a aplicação em http://localhost:8888
O sistema utiliza Auth0 como provedor de identidade. Consulte o arquivo README_AUTH.md para mais detalhes sobre a implementação da autenticação.
Principais características:
- Single Sign-On (SSO) para todas as aplicações internas
- Gerenciamento de roles (admin, manager, user)
- Autorização baseada em claims
- Autenticação de dois fatores (2FA) para contas administrativas
-
Crie um novo arquivo na pasta
src/routes -
Defina um novo sub-aplicativo Hono:
const myFeatureApp = new Hono<{ Variables: Variables }>(); myFeatureApp.get('/', authMiddleware, (c) => { c.set('title', 'Minha Feature'); return c.render(<MinhaFeatureComponent />); }); export default myFeatureApp;
-
Adicione a rota no arquivo
main.tsx:import myFeatureApp from "./routes/myFeature.tsx"; // ... app.route("/myfeature", myFeatureApp);
-
Crie um novo arquivo na pasta
src/components -
Defina seu componente usando JSX:
/** @jsxImportSource hono/jsx */ export function MeuComponente(props: {titulo: string, children: any}) { return ( <div class="container mx-auto p-4"> <h1 class="text-2xl font-bold">{props.titulo}</h1> <div class="mt-4">{props.children}</div> </div> ); }
-
Importe e utilize em suas rotas ou outros componentes
O layout principal da aplicação está em src/components/NewLayout.tsx. Para modificar a estrutura global da aplicação, edite este arquivo.
O dashboard principal (/dashboard) exibe métricas importantes sobre o sistema:
- Total de usuários
- Usuários ativos
- Número de administradores
Essas métricas são obtidas em tempo real da API do Auth0.
- Utilize TypeScript para todos os novos arquivos
- Siga a convenção de nomeação camelCase para variáveis e funções
- Utilize PascalCase para componentes e interfaces
- Prefira funções assíncronas (async/await) para operações de I/O
- Utilize o formatador padrão do Deno para manter a consistência do código
- Crie uma branch para sua feature:
git checkout -b feature/nome-da-feature - Faça commit das suas alterações:
git commit -m 'feat: adiciona nova funcionalidade' - Faça push para a branch:
git push origin feature/nome-da-feature - Abra um Pull Request
Para suporte interno, entre em contato com a equipe de desenvolvimento através do canal #iliberty-dev no Slack.
Este projeto é privado e de uso exclusivo interno da empresa. Todos os direitos reservados.