Skip to content

fean-developer/admin-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Admin Tasks

Plataforma completa de gestão de tarefas e projetos — inspirada no monday.com

Admin Tasks é um sistema web para gerenciar workspaces, membros, convites e usuários com autenticação segura via JWT. A plataforma oferece controle de acesso baseado em roles (OWNER / ADMIN / MEMBER), fluxo de convites por e-mail, rotação de tokens de sessão e uma interface moderna e responsiva.


Funcionalidades

Autenticação

  • Registro de conta com validação de e-mail único
  • Login com geração de access token (15 min) + refresh token (7 dias)
  • Rotação automática de refresh token (detecção de replay attack)
  • Redefinição de senha por link enviado por e-mail
  • Logout com revogação imediata dos tokens
  • Proteção contra enumeração de usuários no fluxo de "esqueci a senha"

Workspaces

  • Criação de múltiplos workspaces por usuário
  • Cada workspace tem roles distintas: OWNER, ADMIN, MEMBER
  • Listagem somente dos workspaces em que o usuário é membro
  • Edição pelo OWNER ou ADMIN; exclusão exclusiva do OWNER (soft delete)
  • Transferência de ownership com transação atômica

Membros

  • Listagem de membros do workspace
  • Atualização de role (ADMIN pode promover/rebaixar MEMBERs; transferência de OWNER requer o OWNER atual)
  • Remoção de membro (OWNER não pode ser removido; use transferência)
  • "Sair do workspace" sem precisar ser removido por outro (OWNER deve transferir antes)

Convites

  • Envio de convite por e-mail para qualquer endereço
  • Verificação de duplicata: bloqueia convite se já existir membro ou convite pendente
  • Convites com prazo de 7 dias e expiração automática
  • Reenvio e cancelamento de convites pendentes
  • Aceitação via token único: cria membro automaticamente (ou redireciona para registro se o e-mail não tiver conta)

Perfil

  • Visualização e edição de nome e avatar
  • Troca de senha com revogação de todos os refresh tokens ativos

Stack Tecnológica

Camada Tecnologia
Backend NestJS 11 + Prisma 6 ORM + PostgreSQL 16
Frontend Next.js 14 (App Router) + Bootstrap 5.3 + MUI 5
Auth JWT + Passport.js (backend) · NextAuth.js 4 (frontend)
Infra Docker + Docker Compose + Portainer CE
Testes Jest + ts-jest (backend)
Validação class-validator + zod

Arquitetura

admin-tasks/
├── backend/                  # API NestJS
│   ├── src/
│   │   ├── modules/
│   │   │   ├── auth/         # Registro, login, tokens, reset de senha
│   │   │   ├── users/        # Perfil, troca de senha
│   │   │   ├── workspaces/   # CRUD de workspaces
│   │   │   ├── members/      # Gerenciamento de membros
│   │   │   ├── invites/      # Convites por e-mail
│   │   │   ├── mail/         # Envio de e-mails (console em dev)
│   │   │   └── prisma/       # PrismaService injetável
│   │   └── common/           # Guards, decorators, interceptors, pipes
│   └── prisma/
│       ├── schema.prisma     # Modelos: User, Workspace, Member, Invite, Token
│       ├── migrations/       # Migrações versionadas
│       └── seed.ts           # Seed do usuário administrador padrão
│
├── frontend/                 # Interface Next.js
│   ├── app/                  # App Router (layouts + páginas)
│   │   ├── (auth)/           # /login, /register
│   │   └── (dashboard)/      # /workspaces, /workspaces/[id], /profile
│   ├── components/           # Componentes reutilizáveis
│   ├── hooks/                # Custom hooks (TanStack Query)
│   └── lib/
│       ├── api/              # Camada de chamadas HTTP (Axios)
│       └── auth.ts           # Configuração NextAuth
│
├── docs/
│   └── tests/                # Relatórios de testes
│
├── docker-compose.yml        # Orquestra: Portainer + DB + Backend + Frontend
└── .env.example              # Variáveis de ambiente necessárias

Modelo de Dados (simplificado)

User ─┬─► RefreshToken
      ├─► PasswordResetToken
      ├─► Workspace (owner)
      ├─► WorkspaceMember ◄─► Workspace
      └─► WorkspaceInvite (sender)

Segurança

  • Senhas armazenadas com bcrypt (salt rounds configurável)
  • Tokens JWT assinados com segredos separados (access / refresh)
  • Rotação de refresh token com detecção de replay attack
  • Validação e sanitização de todos os inputs via DTOs (class-validator)
  • Rate limiting nas rotas públicas (@nestjs/throttler)
  • CORS configurado explicitamente (sem * em produção)
  • Soft delete: dados do usuário nunca são apagados fisicamente
  • Headers de segurança via helmet

Testes

Suíte Cobertura
auth.service.spec.ts register, login, refreshTokens, forgotPassword, resetPassword, logout
users.service.spec.ts getProfile, updateProfile, changePassword
workspaces.service.spec.ts create, findAll, findOne, update, remove
members.service.spec.ts findAll, updateRole, remove, leave
invites.service.spec.ts create, findAll, resend, cancel, accept
Tests: 58 passed, 58 total (5 suítes)

Guia Rápido

Consulte o GUIA_DE_USO.md para instruções completas de como executar o sistema e configurar o usuário administrador padrão.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors