Olá 🖖,

Sou o Elioenai Gonçalves

seu Desenvolvedor Full Stack Júnior

foto do perfil do Elioenai

Sobre mim

foto sobre mim

Apresentação:

Olá! Me chamo Elioenai Gonçalves e sou um desenvolvedor Full Stack Júnior em formação. Gosto MUITO da área de tecnologia e tenho certeza que posso contribuir em qualquer time com as minhas habilidades.

Profissionalmente:

Estou sempre me desafiando com novos projetos e participando de comunidades de programação para buscar conhecimento e feedback de outros desenvolvedores e desenvolvedoras. Além de tentar ajudar essas pessoas com o que eu já aprendi. Procuro aprender sempre com os meus erros, além de aprender com os outros erros.

Sou dedicado, esforçado, persistente e gosto de concluir aquilo que comecei, a não ser que seja preciso dar outra prioridade no trabalho. 😁

Lazer e hoobies:

Ah, gosto de jogos eletrônicos, jogos de tabuleiro, filmes, séries, animes e outras nerdices. 😎

Gosto também de tocar bateria, jogar bola, jogar paintball, passear com a família e com os amigos.

Habilidades

Angular

Utilizo Angular para criar projetos front end web e mobile, utilizando o Angular CLI, com seus Módulos, Decorators, definindo componentes para navegação, criando rotas, usando data bindings, pipes, criando diretivas de decisões.

Faço atualizações de versões de pacotes de acordo com o necessário, debugando a aplicação, utilizando serviços HttpClient, consumindo API através de Back End. Faço deploys com Ivy também, pois acho mais rápido e performático.

Bootstrap

Utilizo o framework de estilização Bootstrap, pois facilita muito o estilo da minha aplicação, utilizando códigos chaves, aonde consigo gerar estilos com mais agilidade e praticidade.

.NET

Utilizo o dotNet para criar projetos Console Application e Projetos Web também.

ASP.NET

Utilizo O ASP.NET para criações de projetos Web, projetos MVC, projetos RazorPages, projetos Blazor (SPA), Razor Library e projetos WebAPI também.

Configurando os projetos com seus LaunchSettings, AppSettings em suas classes, utilizando pacotes Nuget, manipulando os dados com os Middlewares dos requests e responses, ou seja, os pipelines. Utilizando Hostings, com in-process hosting com IIS ou utilizado out-of-process hosting para proxys reversos.

C#

Utilizo o C# para criação de aplicações Web e aplicações em geral. Gosto do C# pois é uma linguagem fortemente tipada, compilada e gerenciada. Uso para criação de projetos ASP.NET Web, ASP.NET MVC e ASP.NET WebAPI. Uso com seus devidos NameSpaces, Using, class, com builders, structs, métodos, funções, objetos e arrays. Faço conversões implícitas, explicitas, usando o Parse, Convert, com operadores em geral (aritméticos, atribuição, comparação, lógicos, condicionais), usando laços de repetições também. Tudo isso fazendo testes e disparando exceções.

Node.js - Nodemon

Utilizo o Node.js rodar o JavaScript do lado do servidor. Uso criando módulos, tanto nativos quanto externos. Criando servidores HTTP, com portas locais e externas, criando rotas, utilizando o gerenciador de pacotes NPM, com escopos globais, locais e de desenvolvimento. Gosto de utilizar a ferramenta Nodemon para o monitoramento do meu servidor, mas se for necessário, utilizo o comando de observação watch no package.json também.

SQL - PostgreSQL - DBeaver

Uso o DBeaver como interface gráfica para acessar o banco SQL que utilizo, através do PostgreSQL. Utilizo tipando os dados, utilizando chaves primárias, chaves estrangeiras, com comandos de C.R.U.D, ou seja, criando, lendo, atualizando e deletando dados, através de inserts, selects, updates e deletes. Utilizo técnicas de Join, como Inner Join, Left Join, Right Join e Full Outer Join. Manipulo os dados com operadores lógicos, como and, or, between, is null, is not null, in, not in e matemáticos também.

Express.js - Thunder Client

Gosto de utilizar o framework do Node.js, Express.js, pois acho ideal para a criação de aplicativos web e mobile. Utilizo ele testando com a extensão do VS Code, Thunder Client, pois me dá praticidade nos testes de requisições e respostas. Utilizo rotas no Express.js, rotas com parâmetros, usando métodos de respostas e métodos de requisições diferentes, utilizando chain of responsability (cadeias de responsabilidades), criando Middlewares, de Application-level, Error Handing, de terceiros e do próprio Express.js também. Crio grupos de rotas, usando route handlers (manipuladores de rotas), servindo arquivos estáticos, tratando erros diretamente no Express.js e utilizando aliases.

Prisma - Swagger - Deploy

Utilizo uma conexão direta com o DB (data bank) através do Prisma. Deixo o código padronizado com ESLint, criando models de banco de dados já existentes, fazendo cadastros, validações, atualizações, remoções e filtros de dados com o Prisma. Uso também a ferramenta "Swagger" para documentações e end points, configurando ele as documentações necessárias, assim como no Prisma, ou seja, cadastros, validações, atualizações, remoções e filtros de dados da mesma forma.

Também gosto de utilizo o Render para fazer o deploy dos meus projetos, por ser um servidor bem simples e de facil de fazer os deploys das minhas APIs, apesar de terem muitas outros servidores de hospedagem, até bem famosos como o AWS e Azure.

TypeScript

Uso o TypeScript para poder manter o meu código organizado e com uma camada extra de proteção com verificação de erros. Gosto de utilizar as verificações dos tipos estáticos, usando tipos Tuples, Tipos Enums, raramente, só quando o necessário, utilizo o tipo Any. Uso as tipagens em funções, com Unions, tipo Aliases, tipando objetos com propriedades e parâmetros opcionais, quando necessários. Uso tipos Assertions, Types, Interfaces, tipos Generics, importando e exportando módulos, assim como no JavaScript. Gosto de encurtar minhas importações TS com Aliases, fazendo configurações, quando necessárias, no "tsconfig".

React

Uso a tecnologia React de forma bem ampla. Crio projetos com o "creat-react-app", mas prefiro usar o "Vite", pois é mais moderno e atual. Uso sempre em meus componentes com conceitos de "Props", tanto com "PropsTypes", quanto com "DefaultProps" também e suas "Props childrens". Gosto sempre de usar "key" para identificá-las melhor.

Usando muito os "Hooks" de "States" ("useState", "useEffect"). Crio formulários com "React Hook Form" também, se preciso. Uso também "Custom Hooks", caso seja necessário. Faço estilizações com "Styled Components" e com "Global Styles" usando o "createGlobalStyle", de acordo com a necessidade. Uso o "React Query" também para facilitar o gerenciamento assíncronos também se solicitado, principalmente para usar em conjunto com o "Axios".

Também não posso deixar de citar que gosto muito de usar o "Context API" para poder passar dados entre os componentes de uma forma única e compartilhada entre eles.

React Router

Gosto de utilizar sempre que possível um sistema de roteamento eficiente com o "React Router", criando rotas interativas entre diversas páginas e componentes, fluindo com um sistema de páginas internas e de navegações, sempre que necessário. Gosto de usar essa tecnologia pois gera uma interface mais fluida e interativa, como se fosse um aplicativo de celular, graças ao sistema SPA (Single Page Aplication), que atualiza e adiciona dados a página, sem ter que carregá-la novamente e totalmente.

Axios

Gosto de consumir API's utilizando a tecnologia AXIOS, pois tem um uma sintaxe simples e fácil de usar para fazer requisições GET HTTP. Ainda me transforma os dados de requisições e respostas automaticamente, funcionando bem compatível com navegadores e ambientes "Node.js".

Redux

Uso essa tecnologia para gerenciar os estados das aplicações de uma forma mais centralizada, utilizando o "Flux", ou seja, o fluxo de dados unidirecionais, tais como os seus componentes principais ("actions", "reducers", "dispatch", "selectors" e "store") para facilitar esse gerenciamento. Uso somente para projetos grandes, pois para projetos menores, poderá aplicar um excesso de complexidade desnecessariamente.

Vite

Excelente tecnologia que utilizo muito para criar projetos em "React". Prefiro muito utilizar ele ao invés do "creat-react-app", pois acho mais simples, rápido, moderno, atual e mais utilizado pela comunidade de desenvolvedores mundialmente. Simples, dinâmico, fácil de escolher o nome do projeto, se quero criar em "JavaScript" puro, em "TypeScript", usando framework de "Vanilla", "Vue", "React", "Preact", "Lit", "Svelte", "Solid", "Qwik", entre outros.

Vitest

Utilizo muito essa tecnologia para realizar testes simples, mas totalmente rápidos, eficazes e lisos. Normalmente uso como alternativa do "Jest", em alguns casos e incompatibilidades de versões, já que uso o "Vite" para criar projetos.

Jest

Tecnologia muito útil! Uso sempre que finalizo um projeto JavaScript, utilizo esse ótimo teste unitário para garantir que o meu código está rodando liso e sem erros.

JavaScript

Uma das tecnologias que mais utilizo, o tempo todo tenho que estar usando um código "JavaScript". Vou citar algumas propriedades, atributos e métodos que mais utilizo no JavaScript aqui abaixo, então segue aí:

  • Uso muito, mas muito a impressão no console do navegador pelo "console.log" do JS para poder verificar como está sendo executado o código.
  • Sempre declarando muitas variáveis, utilizando funções (function), sejam anônimas, de seta ("arrow functions"), assíncronas (async) ou síncronas. Depurando os códigos com ele.
  • Utilizando os operadores lógicos, Operadores de comparação, Operadores matemáticos, Operadores aritméticos, Operadores de string, Operador condicional ternário, entre outros operadores.
  • Usando também laços de repetições, Condicionais. Sempre utilizando todos, ou os mais usados tipos primitivos. Usando muitos "arrays" e "objetos".
  • Uso de vez em quando os métodos "Splice", o "Slice", quando necessário. Uso também o método "this", seja no modo estrito ou não.
  • Uso muito seleção de elementos do DOM, seja encontrando elementos, mudando, adicionando ou deletando elementos, encontrando objetos, entre outros. Assim como manipulação de atributos e estilos dos elementos do DOM e Eventos do DOM
  • Uso muito os métodos "Filter", "Map", "Reduce", interpolações de string ("Template Strings"). Uso muita desestruturação de objetos, "Operador Spread" também, Parâmetros JavaScript "REST", "setInterval" e "setTimeout", "Promises", "Promise.allSettled" e "Promise.all". Muito "then" nas "Promises". "async" e "await" nas "Promises".
  • Sempre utilizo os conceitos de arquivos "JSON".
  • Requisições de GET com "fetch", apesar preferir usar o Axios para isso.
  • Trabalho com datas com o "Intl.DateTimeFormat".
  • Importações e exportações de módulos JS usando "Export default" e o "Export nomeado"

NPM

Atualmente tenho utilizado somente o "NPM" (Node Package Manager), apesar do "Yarn" também ser muito utilizado entre os desenvolvedores. Acho esse gerenciador de pacotes excelente para as instalações, atualizações e gerenciamentos das dependências dos meus pacotes e bibliotecas em ambiente de execução do "Node.js", além de um ótimo controle de versões dos mesmos.

CSS3

Claramente, o que seria o nosso projeto sem um estilo e personalização, não é? Gosto muito de estilizar projetos e vou citar aqui as principais propriedades, atributos e métodos que mais utilizo em nossos projetos:

  • Utilizo o CSS3 em linha, internamente ou externamente. Uso sempre o "Chrome Dev Tools" para auxiliar nas visualizações das nossas estilizações.
  • Uso para "colorir" os elementos com cores "chapadas", usando o RGB, usando o RGBA ou por Hexadecimal.
  • Espaçamentos externos, internos e com bordas.
  • Utilizo sempre conceitos de tags block level e inline level.
  • Utilizo sempre "id", "class" para ajudar nas estilizações, "div" para agrupar mais de um elemento para estilizar e "span" para destacar alguma palavra ou frase sem interferir na estilização de um elemento pai.
  • Utilizo diversas unidades de medidas relativas como EM, REM, VH, VW, etc. Utilizo também normalmente somente a unidade de medida absoluta PX.
  • Utilizo muito a propriedade "box-sizing" com o valor "border-box" para poder ajudar no cálculo total do tamanho da largura e altura do padding e do border dos elementos.
  • Uso muitos estilos de textos diferentes, como "text-align", "text-transform", "text-decoration", "line-heigth", "text-shadow", por exemplos.
  • Sempre uso a fonte necessária, alterando a família de fontes, assim como o seu tamanho, também como o seu "peso", de acordo com o solicitado.
  • Também uso muito a estilização de links, como "cursor", cores, tanto antes de clicado, durante e depois de visitado. Gosto de estilizar também enquanto passamos o mouse de diversas formas.
  • Gosto também de estilizar as listas do projeto, seja ela ordenada ou não. Altero o tipo, coloco imagem da lista quando houver, altero a posição, com cores, bordas, padding, margin, etc.
  • Uso alterações de fundo
  • Utilizo as orientações de display, como "flex", "grid", "block", "inline", "inline-block" e "none" por exemplo.
  • Uso também muito as posições dos elementos com o "position".
  • Utilizo demais a responsividade dos projetos, normalmente uso o "Media queries" com diferentes "max-width" para isso.
  • Tive conhecimentos de utilizações com o método "Float" do CSS, porém só para ensino mesmo, pois prefiro usar o "display flex" e/ou o "display grid" para ter o mesmo, na realidade melhor efeito para esse mesmo destino.
  • Uso muito o "Font Awesome" para poder ter uma vasta biblioteca de ícones para ser usada como se fossem fontes.
  • Uso muito pseudoclasses nos projetos, como citei nos exemplos acima. Uso também muito os pseudoelementos, como "after", "before", "first-letter", etc. Sempre uso os seletores com bastante atenção, para não estilizar algo incorretamente ou faltar estilização para algum elemento. Sempre me atentando para as estilizações dos elementos pai e filhos.
  • Uso muito as transformações dos elementos
  • Raramente uso umas variáveis diretamente aqui no CSS, normalmente uso variáveis somente no JavaScrip mesmo, mas pode ocorrer do projeto ser muito simples e não necessitar de JS, então acho cabíveis as variáveis aqui.

HTML5

O HTML, a base de tudo! O que seriam nossas estilizações sem o "esqueleto" base do nosso projeto, certo? Claramente é o primeiro passo em que faço em um projeto, pois é a nossa linguagem de marcação básica. Vou passar um resumo aqui abaixo das tecnologias, propriedades e métodos que mais utilizo no HTML5, então vamos lá:

  • Inicialmente os conceitos de tags e meta tags, pois é o básico.
  • Criações de títulos, parágrafos, formatações de texto, comentários, links externos, links internos, imagens, listas, tabelas, "Inputs" em geral, "Select", "Textarea", "Button" e formulários
  • Conceitos de tags semânticas.
  • Criação de imagens responsivas utilizando a tag "Picture". Criação de ícones com "favicon".
  • Adicionando áudios, vídeos e "Iframes" no projeto.

GitHub

O GitHub é nossa rede social, ou seja, a rede social do desenvolvedor, não tem como não o usar hoje em dia para tudo o que preciso e ele tem sido o meu grande companheiro de projetos. Criação de repositórios facilmente. Facilidade ao subir projetos para a nuvem. Uma interface muito intuitiva e ainda possibilita a criação de "site", "página pessoal" através do GitHub Pages, tudo isso num compartilhamento coletivo entre os devs, excelente ferramenta.

Git

Uso sempre o sistema de controle de versão Git, normalmente com o programa GitBash, pois hoje em dia as plataformas têm facilitado bastante para não o usar, mas faço questão pois acho bem prático, rápido, melhor e nostálgico.

SSH

Particularmente, por questões de usabilidade maior da comunidade, normalmente utilizado o "HTTPS" para a conexão direta como GitHub entre outros, porém se for preciso, ou seja, para algum projeto maior ou uma empresa grande, utilizo o método de comunicação SSH (Secure Shell), pois como sabemos, é muito mais seguro e prático para essa interação com as nossas chaves privadas. Além de ser totalmente útil para assinaturas de confirmações SSH.

Visual Studio Code

Como sabemos, o VS Code é a nossa base do código, ou seja, é o nosso editor de códigos principal e o ambiente de desenvolvimento integrado (IDE) mais popular e utilizados pelos programadores. Gosto muito dele pois além de ser gratuito, tem uma extensibilidade, funciona em múltiplas plataformas, tem um ótimo desempenho leve, rápido e intuitivo, além de sua integração nativa com o Git.

Meus projetos