Projeto do curso.dev, porém com algumas diferenças. Como meu foco no curso não é aprender programação em si, vou aproveitar a oportunidade para desenvolver algo mais experimental.
Enquanto o curso usará o Next.js para o projeto todo, eu vou dividir ele em dois, a API usando Nest.js e o client com versão web e mobile usando o Flutter.
Para a API, quero usar o Nest.js apenas como uma camada que conecta ao mundo externo, sem que a aplicação dependa dele.
Para o client, quero brincar bastante com as animações, deixar ele cheio de frufru que encha os olhos dos usuários.
A ideia é que ao final do projeto, ele tenha as mesmas features do projeto original, mas sendo uma aplicação totalmente diferente.
Clone o repositório e entre na pasta do projeto.
git clone git@github.com:wevertonj/clone-tabnews.git
cd clone-tabnewsInstale as dependências do projeto.
npm installNa raiz do projeto há um arquivo .env.example, que pode ser usado para criar um arquivo .env com as variáveis de ambiente necessárias.
DEFAULT_VERSION: Versão padrão da API. Deve ser um número inteiro. Ela também será a versão minima suportada pela API. Isto significa que se o client passar no headerx-api-versionum valor menor que oDEFAULT_VERSION, a API retornará404. Ao passar um valor maior, a API retornará a versão mais recente disponível para o endpoint. O valor padrão é1.DATABASE_HOST: Host do banco de dados.*POSTGRES_DB: Nome do banco de dados.*POSTGRES_USER: Usuário do banco de dados.*POSTGRES_PASSWORD: Senha do banco de dados.*POSTGRES_PORT: Porta do banco de dados.*DATABASE_URL: URL de conexão do banco de dados (usada para migrações e produção).*
* Estas variáveis são usadas para conectar ao banco de dados PostgreSQL.
Há um arquivo compose.yaml que pode ser usado para subir um container com o banco de dados PostgreSQL.
Para facilitar a execução, há o seguinte script para subir o container.
npm run services:upPara derrubar o container, use o seguinte script.
npm run services:downPara executar o projeto, use o comando start.
npm startO curso.dev usa a Vercel para hospedar o projeto, que de inicio deu erro ao tentar fazer build do projeto Nest.js. Durante as buscas por soluções, vi um comentário de que a inicialização do projeto Nest.js é muito lenta, então optei por hospedar na Railway.