Esse projeto trata-se de uma API para gerenciamento escolar, onde é possível gerenciar professores e alunos. A API foi desenvolvido utilizando Node e Typescript em conjunto com práticas modernas e robustas de desenvolvimento de software.
O objetivo do projeto foi construir uma API utilizando as melhores práticas de desenvolvimento de software, criando um código limpo e de fácil manutenção. Para isso foi utilizado a metodologia TDD (Test Driven Development) em conjunto com a arquitetura Clean Architecture separando as responsabilidades em camadas bem definidas para criar uma base sólida e escalável para o projeto.
- Sistema de autenticação completo com geração de token.
- Sistema de controle de acesso, limitando o acesso a rotas.
- Criptografia de senha para aumentar a segurança contra roubo de dados.
- Utilização do TDD para garantir a qualidade e confiabilidade do código.
- Aplicação da arquitetura Clean Architecture, para promover a separação de responsabilidades e a escalabilidade do projeto.
- Utilização de Design Patterns para resolver problemas comuns de desenvolvimento de software.
- Adoção dos princípios SOLID, YAGNI, KISS e DRY, visando um código limpo, simples e fácil de manter.
- Práticas de DevOps, como Continuous Integration(CI) e Continuous Delivery(CD), para automatizar o processo de desenvolvimento e implantação.
- Geração de documentação utilizando a biblioteca Swagger Autogen.
- Validação de dados utilizando a biblioteca Zod, garantindo a integridade dos dados processados.
Durante o desenvolvimento desse projeto, adquiri diversos aprendizados significativos. A aplicação do TDD permitiu um desenvolvimento mais controlado, com testes sendo criados antes mesmo da implementação do código. Isso resultou em um código mais confiável e testável.
A utilização do Clean Architecture ajudou a manter uma separação clara de responsabilidades, facilitando a evolução e a manutenção do sistema. Além disso, a aplicação dos princípios SOLID, YAGNI, KISS e DRY trouxe uma maior clareza e simplicidade ao código, evitando duplicações desnecessárias e garantindo a extensibilidade do projeto.
Convido você a acessar a documentação da API para conhecer mais sobre o projeto. Lá você encontrará informações detalhadas sobre as rotas disponíveis, os parâmetros necessários e as respostas retornadas, clique aqui para acessar.
$ git clone https://github.com/d3vlopes/school-management.git
$ yarn
- Instale o Docker
- Copie o arquivo
.env-example
e renomeie para.env
- Inicialize o Docker e rode o comando
yarn docker
- Rode o comando
yarn dev
- Acesse http://localhost:8000/docs
dev
: Roda o servidor de desenvolvimentodocker
: Executa o arquivo docker-composebuild
: Gera a versão de produçãodocs:generate
: Gera/atualiza o arquivo de documentaçãotest
: Roda todos os testestest:unit
: Roda todos os testes com watchtypecheck
: Verifica se o código contém algum tipo de erro