Skip to content
View eneas-almeida's full-sized avatar
🐨
Venzel
🐨
Venzel

Block or report eneas-almeida

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
eneas-almeida/README.md

Enéas Almeida

Sobre

  • ❤️ 8+ anos de experiência em desenvolvimento moderno;
  • 🎓 Bacharel em Engenharia de Computação;
  • 🎓 Pós-graduado em Arquitetura de Software Distribuído - PUC MINAS;
  • ☂️ Go Expert FULL CYCLE;
  • Focado nas stacks NodeJs, Go e Java

+

  • ✝️ Professante da fé em Jesus Cristo (meu único Senhor e Salvador);
  • 🍖 Fã de churrasco, fez um? me chama! 🔥

Stacks de atuações

Backend

  • NodeJs / NestJs / Typescript / Javascript;
  • GoLang;
  • Java;
  • RabbitMQ / Kafka;
  • gRPC;
  • TypeORM / Prisma / Mongoose / Redis / SQL;
  • GraphQL;
  • Python;
  • AWS (S3, DocumentDB, Cognito);
  • Elasticsearch;

Frontend

  • VueJs 2e3 / Vuetify / Vuero / Pinia / Casl;
  • Angular
+ Sobre
  • Atuação em ambientes com adoção de metodologias ágeis;
  • Atuação em ambientes de pressão com grande volume de dados financeiros;
  • Banco de dados relacional e NoSql;
  • Experiência em desenvolvimento em arquitetura de microsserviços;
  • Experiência em API Manager (Linkapi);
  • Experiência na criação de componentes reutilizáveis;
  • Experiência na utilização de conceitos DDD;
  • SOLID / Clean Architecture;
  • Experiência em desenvolvimento de códigos guiado a testes (TDD);
  • Git / Gitflow / Conventional Commit;
  • UML;
  • BPMN;
  • Docker;
  • Sonarlint;
  • Sentry;
  • keycloak / Cognito (AWS);
  • Documentação de APIs;
  • Compreensão de CI/CD;
  • Jira / Bitrix24 / GitLab.
Técnicas de desenvolvimento utilizadas
  • Fail first;
  • Padronização de commits (conventional commits);
  • Versionamento de módulos para facilitação de refatorações;
  • Modelagem de entidades ricas com tratamento de exceções (Either) (DDD);
  • Desenvolvimento guiado a interfaces;
  • Chaveamento nas injeções de dependências utilizando o padrão strategy;
  • Persistência dos dados em memória para facilitação dos testes unitários;
  • Tratamento de exceções personalizados;
  • Utilizações dos padrões Adapter, Build, Strategy, Barrels, Dto, Factory;
  • Utilização dos pipes validations para validação de dados nos DTOs;
  • Camada de repositórios com ORM TypeORM;
  • Versionamento do banco de dados, através das migrations;
  • Criação dos index nas colunas através das migrations;
  • Mappers para realizar as conversões de dados;
  • Variáveis de ambiente;
  • Interceptadores para criação dos logs da aplicação;
  • Decorators personalizados;
  • Testes unitários com o Jest, guiado pelo coverage reports;
  • Utilização de bibliotecas para transpilar o código mais rapidamente;
  • Rate Limit;
  • Swagger;
  • Filas com o Kafka e RabittMQ;
  • Socket.io;
  • Criação de caches;
  • Interceptação de erros com o sentry;
  • Utilização das bibliotecas: bull, tsryng, ioredis, supertest, mongodb, sentry, moment;
  • Técnica de expurgo;

Últimos algoritimos desenvolvidos e utilizados em produção

Tecnologia Link O que resolve?
👉 Cache Parallel Requisições externas utilizando estratégia de paralelismo.
👉 Fetch Requisição externas utilizando estratégia de paralelismo com fallback.
👉 Upload Upload de arquivos na AWS S3, utilizando estratégia de fallback.
👉 gRPC Implementação gRPC.
👉 GraphQL Implementação GraphQL.

Bekid

O que resolve?

Monitoramento da criança no ambiente escolar através de IA.

👉 Bekid é um sistema para mapeamento de emoções para o auxílio no combate ao bullying escolar. Aplicação em NodeJs e VueJs. (finalizado, online em produção)

Diagrama

Desenho das telas

Bestore

👉 Bestore - Aplicação de venda de produtos. API REST em Java com Spring Boot e Mysql. (finalizado)

Clean Architecture

O projeto abaixo demonstra as camadas utilizadas em uma arquitetura limpa de microsserviços.

👉 Guia Clean Architecture - Guia de repasses para equipe.

gRPC

👉 Guia gRPC - Guia de repasses para equipe.

GraphQL

👉 Guia GraphQL - Guia de repasses para equipe.

RabbitMQ

👉 Guia RabbitMQ - Guia de repasses para equipe.

Kafka

👉 Guia Kafka - Guia de repasses para equipe.
👉 Implementação de um serviço em Typescript com Kafka
👉 Kafka + NestJs
👉 Kafka + NodeJs
👉 Kafka + Python

BFF

👉 Guia BFF - Guia de repasses para equipe.


Go Clean Architecture

Account API é um microserviço desenvolvido em Go, que utiliza um padrão arquitetural Clean Architecture.

👉 Link do projeto


MyPoint

O que resolve?

Problemas de concorrência. Multiplas consultas paralelas e densas, no banco de dados, que levam a exaustão dos recursos de processamento.

Arquitetura do sistema

👉 MyPoint é um sistema para registro de pontos de funcionários. Aplicação utilizando microserviços, filas com o RabbitMq, NestJs, VueJs e Socket.io. (em andamento)


GoLang

👉 Instalação, configuração e plugins
👉 Go routines (caso dos trabalhadores eficiêntes)
👉 Go http retry with exponential backoff
👉 Go algoritmos
👉 Go injections
👉 Go injections com Google Wire
👉 Go API ViaCEP
👉 Go encoder
👉 Go database
👉 Go clean architecture
👉 Go deploy
👉 Go validations
👉 Go env
👉 Go concorrência (Repositório de terceiro)

Nodejs

👉 Resiliência de chamadas HTTP com Axios Retry
👉 NodeJs Base API

K8s

👉 K8s
👉 Istio

VueJs 3

👉 VueJs v3 + Pinia + ACLs Casl (finalizado)
👉 VueJs v3 + Composition api + props + emit + watch (finalizado)


Socket.io

👉 Socket.io com Vue/Node/Nest - Utilização de sockets com VueJs no frontend e NodeJs/NestJs no backend, estabelecendo comunicação com validação entre tokens JWT, utilizando padrão de projeto observer. ❤️ (finalizado)

Arquitetura com NestJs

👉 NestJs + Domínios Ricos Arquitetura de uma api rest com NestJs, utilizando a modelagem de domínios ricos, através da técnica value object, tratamento de exceções com either e transformações de dados utilizando os conceitos de dtos e mappers.


Mais APIs desenvolvidas

👉 Evasão Escolar - Aplicação para análise da ocorrência da evasão escolar em instituições públicas de nível superior. Backend desenvolvido com Typescript, NestJs, TypeORM e Postgres. (finalizado, online em produção)

👉 Tindin - Aplicação de controle de aulas ministradas. Desenvolvida em NodeJs, utilizando banco de dados MongoDB (TypeORM), com cobertura de testes (coverages), utilizando o Jest. (finalizado)

👉 Places to Know - Desenvolvida em NodeJs, com objetivo de gerar um banco de dados de fotos de locais pelo mundo. Os detalhes do projeto são a integração com uma API externa, criação de uma busca com filtro e paginação. (finalizado)

Trabalhos antigos

👉 Oráculo - Sistema de gerenciamento financeiro. Frontend desenvolvido em html, javascript e JQuery para empresa cliente. (finalizado)

👉 Gerente RH - Sistema de gerenciamento de funcionários. MVC desenvolvido em C# com Microsoft SQL. (finalizado)

Javascript (5 últimos algoritimos desenvolvidos)

👉 Read Txt and convert to Xlsx - Realiza a leitura de um arquivo .txt, obtém os valores, gera o arquivo .xlsx e insere os valores lidos do txt e por seguinte, realiza a formatação para o valor moeda R$. (finalizado)

👉 Get Level - Elimina o uso de vários IF e ELSE de intervalos entre valores. (finalizado)

👉 Parse DTO - Transforma as propriedades de um objeto de Camel Case para Snake Case. (finalizado)

👉 Filter Properties - Filtra as propriedades de um objeto, passando um array indicando os propriedades a serem removidas. (finalizado)

👉 MAP Enum - Técnica que utilizo para eliminar grandes quantidades de IFs no sistema. (finalizado)

👉 Todos os scripts (em andamento)

Estudos sobre testes com o NodeJs

👉 Mock tests - Estudos sobre tests unitários utilizando mocks e bibliotecas nativas do NodeJs. (finalizado)

👉 Stub com mocks - Testes utilizando a técnica de stubs para simular uma requisição a uma API. (finalizado)

Estudos de casos

👉 API Rest SigIn/SigUp - Autenticação e autorização com NestJs, TypeORM, Postgres, JWT, Interceptors, Logger, Jest. (finalizado)

👉 API Rest NestJs com Prisma - API Rest utilizando o NestJs com Prisma, Swagger, Postgres, Docker compose, Seed, Validators, Transformers, Pagination, Prisma Exception Handling e Logger. (finalizado)

👉 API Rest NodeJs com Prisma - Cadastro simples de usuários com Prisma, arquitetura Package by Feature e Teste unitário com o Jest. (finalizado)

👉 Séries TV - FullStack. Estudo de caso de um fullstack em Spring Boot + Angular 12. (finalizado)

👉 Grisoli - Aplicação em uma arquitetura de microserviços utilizando NodeJs com Typescript, Spring Boot, Prisma, TypeORM, Docker, RabbitMQ, testes unitários, CI-CD com github actions. (abortado)

👉 VacinaPB - Estudo de caso TDD, desenvolvido em Typescript e NodeJs, utilizando padrões de projetos e modelagem de domínio, baseado em uma arquitetura limpa, de acordo com ensinamentos de Martin Fowler em seu livro sobre refatoração e arquitetura limpa. (finalizado)

👉 Modelgem de entidade (Tiny) - Modelagem de uma entidade em Java, utilizando Tiny. A técnica consiste em modelar uma entidade com auxílio de uma classe externa Either.java, de forma que os erros possam ser gerenciados elegantemente. (finalizado)

👉 Teste Exaustão (JMeter) - Estudo de caso de aplicação desenvolvida em Typescript + NodeJs. (finalizado)

👉 Deploy em QA e Produção - Estudo de caso de integração continua nos serviços da Codeship, deploiando em QA e em produção. (finalizado)

👉 Create releases - Estudo de caso de criaçao de releases automatizadas no Github. (finalizado)

👉 API Rest Spring Boot com MongoDB - Estudo de caso de uma api Spring Boot + MongoDB. (finalizado)

👉 Agenda de contatos - Servlets em Java. Estudo de caso de uma agenda de contatos. (finalizado)

VueJs

👉 VueJs Tests - Estudo sobre testes com jest e vuetify. (finalizado)

👉 VueJs Upload XSL - Estudo sobre upload de arquivos .xsl com vuetify. 🔒 (privado) (finalizado)

👉 VueJs Checkbox - Checkbox select com vuetify. (finalizado)

👉 VueJs Select All - Select all com vuetify. (finalizado)

👉 VueJs Vuetify - Estudo sobre vuetify. 🔒 (privado) (finalizado)

👉 VueJs Geral - Estudos gerais. (finalizado)

👉 VueJs Object Change - Estudos de como alterar, deletar propriedades e realizar cópias de objetos. (finalizado)

👉 VueJs Computed - Estudo sobre computed com uma diretiva v-for, filtrando pelo status do objeto. (finalizado)

👉 VueJs Form - Estudo sobre forms. (finalizado)

👉 VueJs Route - Estudo sobre route. (finalizado)

👉 VueJs Props - Estudo sobre props. (finalizado)

👉 VueJs Slots - Estudo sobre slots. (finalizado)

👉 VueJs Component Dinamic - Estudo sobre componentes dinâmicos. (finalizado)

👉 VueJs Vuex - Estudo sobre o estado compartilhado vuex. (finalizado)

👉 VueJs Vuex v2 - Estudo sobre o estado compartilhado vuex v2. (finalizado)

👉 VueJs Axios - Estudo sobre o vuejs com o axios. (finalizado)

👉 Vuejs Todo + Localstorage - Estudo de caso de um todo de tarefas. (finalizado)

👉 Vuejs Burguer - Estudo de caso de venda de hamburguers. (finalizado)

👉 Vuejs Refs By Copy - Estudo sobre passagem por cópia e por referência. (finalizado)

👉 Vuejs CSS - Estudo sobre css. (finalizado)

👉 Vuejs Filters - Estudo sobre filters. (finalizado)

👉 Vuejs Mixins - Estudo sobre mixins. (finalizado)

Acadêmico

Foto Descrição
👉 Sistemas Embarcados - Projeto final da disciplina de Sistemas Embarcados em Engenharia de Computação, IFPB. (finalizado)
👉 Prototipagem - Projeto final da disciplina de Prototipagem em Engenharia de Computação, IFPB. (finalizado)

Meus tutores e mestres

Os autores citados abaixo são fontes de referências em minha jornada de estudo e trabalho, na maioria deles, participei de cursos que serviram de base para aprofundar meus conhecimentos.

  • Tiago Matos (VueJs 3, Composition API, Pinia)
  • João Rangel (NestJs)
  • Diego Fernandes (NestJs, Microserviços e RabbitMQ)
  • Stephany Henrique (GoLang)
  • Otávio Augusto Gallego (GoLang)
  • Ellen körbes (GoLang)
  • Fernando Daciuk (Javascript e Git avançado)
  • Fernando Amaral (Kafka)
  • Wesley Willians (Kafka, GoLang)
  • Loiane Groner (Angular)
  • Leonardo Moura (VueJs, Docker, Typescript e GraphQL)
  • Matheus Battisti (Docker, Kubernetes e VueJs)
  • Nélio Alves (Spring Boot)
  • AlgaWorks (Spring Boot e Angular)
  • Otávio Lemos (Arquitetura e TDD com Typescript)
  • Ruan Delgado (Algoritmos e dicas de estudo)
  • Fábio Akita (Dicas de estudo Pragmático)
  • Rocketseat (Stack backend NodeJs)
  • Henrique Cunha (Algoritmos)
  • César Vasconcelos (Java)
  • Otávio Miranda (Padões de projeto com Typescript)
  • Erick Wendel (NodeJs avançado)
  • Linux Tips (Linux, Docker e Kubernetes)
  • Dev Soltinho (Javascript, Git)
  • Claudson Oliveira (Trabalho no exterior, GoLang)
  • Rodrigo Branas (Javascript)
  • Jonathan Baraldi (DevOps com Rancher, AWS e GCP)
  • Codar.me (NodeJs)
  • Plínio Naves (VueJs & Vuetify)
  • Victor Hugo Negrisoli (Microserviços)

Pinned Loading

  1. grpc grpc Public

    📜 Guia gRPC, elaborado por Enéas Almeida com o principal objetivo de facilitar os repasses de informações à equipe.

    Go

  2. rabbitmq rabbitmq Public

    📜 Guia RabbitMq, elaborado por Enéas Almeida com o principal objetivo de facilitar os repasses de informações à equipe.

    Makefile

  3. kafka kafka Public

    📜 Guia Kafka, elaborado por Enéas Almeida com o principal objetivo de facilitar os repasses de informações à equipe.

    TypeScript

  4. customer-clean-architecture customer-clean-architecture Public

    📜 Guia Clean Architecture, elaborado por Enéas Almeida com o principal objetivo de facilitar os repasses de informações à equipe.

    TypeScript 2

  5. bff bff Public

    📜 Guia BFF, elaborado por Enéas Almeida com o principal objetivo de facilitar os repasses de informações à equipe.

    TypeScript 2

  6. graphql graphql Public

    📜 Guia GraphQL, elaborado por Enéas Almeida com o principal objetivo de facilitar os repasses de informações à equipe.

    Go