Analisando propostas

Migração e Separação de Arquitetura – Backend Php para Node.js, Nestjs & Next.js

Publicado em 10 de Março de 2025 dias na TI e Programação

Sobre este projeto

Aberto

Migração de um sistema legado em PHP para uma nova arquitetura baseada em Node.js e Next.js. O objetivo é separar a aplicação monolítica em um front-end e um back-end comunicando via API RESTful, utilizando NestJS com TypeORM como estruturação principal do backend. Buscamos um freelancer experiente para desenvolver e otimizar essa nova camada de API, garantindo escalabilidade, segurança e performance.

Requisitos Técnicos
- PHP 7/8 Avançado: Domínio em desenvolvimento nativo, sem frameworks, para integrar e refletir a estrutura atual do sistema legado.
- MySQL: Experiência sólida na criação e otimização de queries e stored procedures, garantindo integridade e desempenho.
- APIs RESTful: Sólidos conhecimentos na criação e consumo de APIs, utilizando boas práticas e padrões como Swagger/OpenAPI 3.0 para documentação.
- NestJS & TypeORM: Utilização do NestJS para estruturar o backend e do TypeORM para gerenciar a conexão e operações com o banco de dados.
- Testes Automatizados: Experiência com testes unitários e de integração para assegurar a qualidade da solução.
- Ferramentas de Validação: Uso de class-validator e class-transformer para garantir a integridade dos DTOs.
- Segurança de Aplicações: Práticas de proteção contra sql injection, validação de inputs, rate limiting, configuração de cors e gerenciamento de dados sensíveis.
- Versionamento com Git: Conhecimento em sistemas de versionamento e integração contínua (ci/cd).


Responsabilidades
- Desenvolvimento da API RESTful: Criar endpoints seguros com autenticação JWT e estruturados com NestJS, integrando o TypeORM para operações com MySQL.

- Gerenciamento de Sessões: Implantar estratégia stateless com JWT, onde cada usuário autenticado recebe um token com validade de 24 horas. Em caso de “lembrar de mim”, o token será revalidado, seja renovado com nova validade ou, se necessário, forçado a novo login.

- Otimização de Queries: Desenvolver e otimizar queries para o MySQL, considerando a performance e segurança.

- Tratamento de Erros e Logs: Implementar um sistema centralizado de logs capaz de integrar informações de todos os microserviços. Entre as soluções possíveis, destacam-se o uso de websocket com sistema de fila ou ferramentas como Sentry e Kibana.

- Retry Connection no Banco de Dados: Configurar o TypeORM para adotar uma estratégia de retry com 5 tentativas e 3 segundos de delay entre cada tentativa.
- Validações e Segurança dos DTOs: Utilizar class-validator e class-transformer para realizar uma validação robusta das requisições.
- Migração Segura de Hashes: Ajustar a migração atual para refletir o uso de HASH com bcrypt, substituindo a instalação anterior de SHA1. A migração do trigger MD5 foi removida, uma vez que a criptografia agora ocorre na camada da aplicação.
- Gestão de Dados Sensíveis: Manter a compatibilidade das senhas herdadas, implementando uma estratégia para solicitar a redefinição de senha (fluxo “esqueci minha senha”) ou, se necessário, um middleware que valide a lógica antiga e force a alteração para o novo padrão.
- Implementação de Throttler: Configurar rate limiting para proteger os endpoints:
Limite global de 10 requisições por minuto.
Login limitado a 5 requisições por minuto.
Registro limitado a 3 requisições por minuto.
Retornar erro 429 quando o limite for atingido.
- Documentação: Manter a documentação interativa dos endpoints utilizando Swagger/OpenAPI 3.0 e garantir que toda a documentação esteja atualizada e clara para o consumo do front-end.
- Testes Automatizados: Desenvolver uma suíte de testes completa, abrangendo testes unitários e de integração para assegurar a confiabilidade da aplicação.

Diferenciais
- Experiência com Docker e containers
- Familiaridade com pipelines de ci/cd e versionamento avançado com git
- conhecimento em monitoramento e logging centralizado
- experiência anterior com sistemas distribuídos e arquitetura de microserviços

arquitetura e integração dos microserviços
nossa solução é composta por diversos microserviços, cada um responsável por partes específicas do sistema:

- system-gateway: atua como orquestrador, reunindo todos os serviços e expondo uma única api rest para acesso externo. Todos os pontos de acesso relacionados a HTTP ficam concentrados aqui.
- System-auth: Microserviço responsável por toda a lógica de autenticação e validação de tokens. Conecta-se diretamente, via socket, ao serviço de usuários para buscar informações necessárias, sem reter lógicas de negócio da entidade usuário.
- System-users: Gerencia o cadastro, edição, remoção e consulta de usuários. Responsável pelas migrations, entidades e controllers, permitindo que o módulo de usuários opere de forma independente.
- System-shared: Biblioteca de código compartilhado para reunir utilitários e informações gerais que podem ser reutilizadas por outros serviços.

Publicação e Integração: Em produção, os pacotes de cada microserviço poderão ser publicados em um npm registry privado, facilitando o acesso a tipos, funções e outros recursos de maneira modulada. Enquanto o gateway implementa controles como throttler, os demais serviços mantém suas lógicas de negócio descritivas e puras.

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Alteração média
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Integrações de API Outros (Outras APIs)
Funções necessárias Desenvolvedor

Prazo de Entrega: 15 de Abril de 2025

Habilidades necessárias

Outro projetos publicados por R.