https://github.com/brunoevangelista17/chronos-backend-ti5

https://github.com/brunoevangelista17/chronos-backend-ti5

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: BrunoEvangelista17
  • Language: TypeScript
  • Default Branch: master
  • Size: 726 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed 12 months ago
Metadata Files
Readme

README.md

Chronos - Backend

Visão Geral

O backend do Chronos é uma solução robusta para gerenciamento de projetos ágeis, suportando metodologias como Scrum e Kanban. Desenvolvido com Nest.js e TypeScript, utiliza MongoDB como banco de dados NoSQL e integra Apache Kafka e Socket.IO para notificações em tempo real. O sistema oferece suporte a dashboards de desempenho, quadros Kanban, gestão de reuniões, métricas de produtividade e automação de processos, promovendo eficiência e colaboração em equipes ágeis.

Este README detalha a arquitetura, tecnologias, funcionalidades, endpoints da API e instruções para configuração e execução do backend.


Tecnologias Utilizadas

  • Framework: Nest.js (TypeScript)
  • Banco de Dados: MongoDB (NoSQL) com Mongoose (ODM)
  • API: RESTful com Fastify (via Nest.js)
  • Notificações em Tempo Real: Apache Kafka (eventos assíncronos) + Socket.IO (WebSockets)
  • Autenticação/Autorização: Firebase Authentication + JWT
  • Testes: Jest (cobertura de 80% com testes unitários e de integração)
  • Deploy: Railway (plataforma de hospedagem na nuvem)
  • Observabilidade: ELK Stack (logs do sistema)

Arquitetura

O backend segue uma arquitetura modular baseada em microserviços, com comunicação assíncrona para notificações e eventos. A estrutura é organizada em módulos (Auth, User, Task, Project, Meeting, Notification), utilizando injeção de dependências para maior escalabilidade e manutenção.

Diagrama de Componentes

Diagrama de Componentes

Modelo de Dados

O modelo de dados é baseado em coleções MongoDB, mapeadas via Mongoose. As principais entidades incluem: - Project: Armazena informações do projeto (nome, descrição, membros, papéis). - Task: Representa tarefas com atributos como descrição, prazo, responsável, status, complexidade e dependências. - Meeting: Gerencia reuniões (Daily Scrum, Sprint Review, etc.) com participantes, data e local. - User: Contém dados de usuários, incluindo papéis (Scrum Master, Product Owner, Developer) e métricas de desempenho. - Notification: Registra notificações enviadas aos usuários (prazos, atualizações, tarefas dependentes).

Modelo de Dados


Funcionalidades do Backend

O backend suporta as seguintes funcionalidades principais, conforme os requisitos funcionais do projeto:

  1. Gerenciamento de Projetos (RF005, RF011):

    • Criação, edição, listagem e exclusão de projetos.
    • Gestão de membros e papéis (Scrum Master, Product Owner, Developer).
  2. Gestão de Tarefas (RF004, RF007, RF008, RF013, RF014, RF016):

    • CRUD de tarefas com suporte a dependências.
    • Quadro Kanban interativo com colunas personalizáveis e movimentação de tarefas.
    • Aprovação e avaliação automática de entregas com atribuição de notas.
    • Notificações automáticas para tarefas concluídas e dependentes.
  3. Métricas e Relatórios (RF001, RF006, RF009, RF015):

    • Geração de relatórios de desempenho (tarefas por membro, complexidade, tempo médio).
    • Gráficos de Burndown para acompanhamento de progresso.
    • Ranking de profissionais com base em métricas de desempenho.
  4. Gestão de Reuniões (RF003):

    • CRUD de reuniões (Daily Scrum, Sprint Review, Retrospective, etc.).
    • Gerenciamento de participantes e dados de tempo/local.
  5. Notificações em Tempo Real (RF002, RF010, RF012, RF016):

    • Envio de notificações para atualizações de tarefas, prazos e mensagens personalizadas.
    • Integração com Kafka para eventos assíncronos e Socket.IO para WebSockets.

Endpoints da API

A API segue o padrão RESTful, utilizando Fastify como servidor HTTP. Abaixo estão os principais endpoints:

Autenticação

  • POST /auth/login: Autentica usuário via Firebase e retorna JWT.
  • POST /auth/refresh: Renova o token JWT.

Projetos

  • POST /projects: Cria um novo projeto.
  • GET /projects: Lista todos os projetos.
  • GET /projects/:id: Retorna detalhes de um projeto específico.
  • PUT /projects/:id: Atualiza um projeto.
  • DELETE /projects/:id: Exclui um projeto.

Tarefas

  • POST /tasks: Cria uma nova tarefa.
  • GET /tasks: Lista todas as tarefas de um projeto.
  • GET /tasks/:id: Retorna detalhes de uma tarefa.
  • PUT /tasks/:id: Atualiza uma tarefa (ex.: status, responsável).
  • DELETE /tasks/:id: Exclui uma tarefa.
  • POST /tasks/:id/complete: Marca uma tarefa como concluída e envia notificações.

Reuniões

  • POST /meetings: Cria uma nova reunião.
  • GET /meetings: Lista todas as reuniões de um projeto.
  • PUT /meetings/:id: Atualiza uma reunião.
  • DELETE /meetings/:id: Exclui uma reunião.

Notificações

  • POST /notifications: Envia uma notificação personalizada (Scrum Master).
  • GET /notifications: Lista notificações de um usuário.

Relatórios

  • GET /reports/burndown/:projectId: Gera gráfico de Burndown.
  • GET /reports/performance/:projectId: Retorna métricas de desempenho da equipe.

Configuração e Execução

Pré-requisitos

  • Node.js (v16 ou superior)
  • MongoDB (local ou Atlas)
  • Apache Kafka (para notificações assíncronas)
  • Firebase (para autenticação)
  • Docker (opcional, para ambiente conteinerizado)

Instalação

  1. Clone o repositório: bash git clone https://github.com/BrunoEvangelista17/chronos-backend.git cd chronos-backend

  2. Instale as dependências: bash npm install

  3. Configure as variáveis de ambiente em um arquivo .env: env MONGODB_URI=mongodb://localhost:27017/chronos KAFKA_BROKER=localhost:9092 FIREBASE_CONFIG={...} # Configuração do Firebase JWT_SECRET=your_jwt_secret PORT=3000

  4. Inicie o servidor: bash npm run start:dev

Testes

Execute os testes unitários e de integração com Jest: bash npm run test


Deploy

O backend está hospedado na plataforma Railway, com escalabilidade horizontal para suportar múltiplos usuários simultâneos. Para deploy local, use: bash npm run build npm run start:prod


Modelo de Dados

O modelo de dados utiliza coleções MongoDB, mapeadas via Mongoose. O diagrama de entidades (DER) está disponível na pasta src/scheema

Principais Coleções

  • Project: { id, name, description, members: [{ userId, role }], createdAt, updatedAt }
  • Task: { id, projectId, description, status, priority, complexity, assigneeId, dueDate, dependencies: [taskId], createdAt, updatedAt }
  • Meeting: { id, projectId, type, date, location, participants: [userId], createdAt, updatedAt }
  • User: { id, firebaseId, name, email, role, performanceMetrics: { tasksCompleted, avgTime } }
  • Notification: { id, userId, message, type, createdAt }

Contribuição

  1. Faça um fork do repositório.
  2. Crie uma branch para sua feature: git checkout -b feature/nova-funcionalidade.
  3. Commit suas alterações: git commit -m 'Adiciona nova funcionalidade'.
  4. Envie para o repositório remoto: git push origin feature/nova-funcionalidade.
  5. Abra um Pull Request.

Contato

Para dúvidas ou sugestões, entre em contato com a equipe: - Bruno Evangelista: brunoevangelistag15@gmail.com - GitHub: BrunoEvangelista17


Referências

  • ELMASRI, Ramez; NAVATHE, Sham. Sistemas de banco de dados. 7. ed. São Paulo: Pearson, c2019. E-book. ISBN 9788543025001.
  • SUTHERLAND, Jeffrey Victor. Scrum: a arte de fazer o dobro do trabalho na metade do tempo. 2. ed. rev. São Paulo, SP: Leya, 2016. ISBN 9788544104514.

Owner

  • Login: BrunoEvangelista17
  • Kind: user

GitHub Events

Total
  • Push event: 5
Last Year
  • Push event: 5