Este repositório foi criado inicialmente com o projeto final do primeiro módulo da Formação Typescript, lecionado por Lucas Santos. E a partir deste projeto fui além e implementei algumas coisas a mais.
Meu objetivo é continuar fazendo commits neste repositório aprimorando minhas habilidades com o Typescript e migrando este projeto para diferentes runtimes e aprimorar cada vez mais a infraestrutura do projeto adicionando uma complexidade proprocional ao conhecimento adquirido durante o processo.
Este arquivo está divido em camadas, para saber mais sobre a arquitetura leia este handbook dos autores desta arquitetura Developer Handbook
Primeiro clone o projeto e instale as dependências
$ git clone git@github.com:Rafeso/school-api.git
$ cd school-api/
$ npm ci
Certifique-se de ter o NodeJs na versão >=20.*
# Dica: Se você estiver no windows e usando o NVM(Node Version Manager)
# Crie um arquivo .nvmrc e fixe a versão do node no seu workspace
# para evitar usar uma versão muito antiga sem suporte ao projeto.
$ echo "20.11.0" > .nvmrc
# Se você estiver no linux utilizando o asdf, crie um arquivo .tool-versions.
$ echo "nodejs 20.11.0" > .tool-versions
# Se você não tiver essas versões instaladas basta executar nvm install ou asdf install no terminal
# para instalar a versão fixada no arquivo de configuração.
$ node -v
v20.11.0
Para executar as camadas do projeto será necessário ter o docker instalado e um container com a imagem de um banco de dados mongodb
$ docker -v
Docker version 25.0.2, build 29cf629
# Execute o script para iniciar a infraestrutura do projeto e criar um container com a imagem do banco de dados
$ npm run infra:up
# Executando a camada rest
# A aplicação ira iniciar na porta 3000 por padrão. Para mudar a porta configue o arquivo .env
$ npm run dev:rest
# Executando a camada CLI
$ npm run dev:cli
# ou execute o binário
# OBS: para conseguir executar o binário será necessário executar o comando de build antes
$ npm run build
$ school
Irei adicionando itens a esta lista conforme for lembrando ou encontrando mais coisas para testar.
- Migrar o projeto para o Deno runtime
- Implementar testes no projeto