Code Monkey home page Code Monkey logo

to-do-list's Introduction

node-boilerplate

Running the project

  1. Assegure-se de ter o docker/docker-compose, bem como um gerenciador de pacotes como pnpm, yarn ou npm, instalados em sua máquina.

  2. Clone o repositório:

git clone https://github.com/CITi-UFPE/node-boilerplate.git
  1. Instale as dependências:
pnpm install
# or
yarn install
# or
npm install
  1. Crie um arquivo .env na raiz do projeto, com as seguintes variáveis de ambiente:
# ###### GENERAL SETTINGS #######
PROJECT_NAME=boilerplate

# ###### SERVER SETTINGS #######
SERVER_PORT=3001
NODE_ENV=development

# ###### DATABASE SETTINGS #######
DATABASE_TYPE=postgres
DATABASE_HOST=${PROJECT_NAME}-db
DATABASE_PORT=5432
DATABASE_USER=postgres
DATABASE_PASSWORD=docker
DATABASE_DB=${PROJECT_NAME}

# ###### TEST DATABASE SETTINGS #######
DATABASE_TEST_HOST=localhost
DATABASE_TEST_PORT=5433
DATABASE_TEST_USER=postgres
DATABASE_TEST_PASSWORD=docker
DATABASE_TEST_DB=boilerplate-test

DATABASE_URL=${DATABASE_TYPE}://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DB}

# ###### JWT SETTINGS FOR AUTHENTICATION #######
JWT_ACCESS_SECRET=0551c0ed-6389-46b1-839e-2e28fc191c89 # token for 30sec
JWT_REFRESH_SECRET=92fba49f6912d14733332bb9ebaac1562f51ee685594acf103d71f685f70868b # token for 7 days

# ###### S3 SETTINGS FOR FILE UPLOADS #######
S3_ENDPOINT=XXXXXX.digitaloceanspaces.com
S3_BUCKET=exemplo-bucket
S3_KEY=
S3_SECRET=
  1. Para rodar o servidor, execute:
docker-compose up

NOTE: existem diversas variações do comando docker-compose. Algumas usam hífen, algumas não. Alguma precisam de sudo, outras não. Verifique o que funciona no seu caso e tome de exemplo para as demais instruções.

  1. Para rodar as migrations, execute com o servidor rodando em outro terminal:
yarn migration
  1. Voilá! O servidor está rodando.

Funcionalidades pré-implementadas:

  • Autenticação com JWT;
  • Upload de arquivos para o S3;
  • Testes de integração com Jest e Supertest;
  • Linting com Eslint, para garantir boas práticas;
  • Formatação de código com Prettier;
  • Documentação com Swagger em src/docs

Workflows:

cd_main.yml:

  • Faz o deploy da branch main no Dokku a cada push;
  • Requer duas variáveis de ambiente no repositório: PRIVATE_KEY e HOST.
  • Para configurar o Dokku na Digital Ocean, siga este tutorial.;

lint.yml:

  • Roda o ESLint, Typescript e o builder em todos os pull requests e em pushes na develop;

test.yml:

  • Roda os testes de integração em todos os pull requests e em pushes na develop;

Erros comuns:

Erro ao rodar docker-compose up:

  • Bind for 0.0.0.0:3001 failed: port is already allocated:

    Você provavelmente já tem um servidor rodando na porta 3001. Pare a execução do outro servidor e tente novamente.

    # Para listar os containers rodando, bem como as portas em uso
    docker ps
    
    # Para parar a execução de um container
    docker stop ID_DO_CONTAINER
  • Cannot find module XXXXXXXXX:

    Isso acontece porque o modo em que o docker-compose.yml está configurado monta um volume anônimo para impedir que a node_modules do seu computador sobrescreva a do container. Em outras palavras, o Docker não é capaz de entender que você adicionou uma dependência nova. Portanto, sempre que dependências novas forem instaladas, é necessário rodar:

        # Para parar o container e remover os volumes
        docker-compose down --volumes
    
        # Para subir o container novamente e reinstalar as dependências
        docker-compose up --build

    PS: esse comando não é uma bala de prata, mas bem que poderia ser. Se você empacar com qualquer coisa no Docker, é altamente provável que ele resolva seu problema.

Erro ao rodar yarn migration:

Em caso de erros ao rodar yarn migrations, siga o seguinte modelo mental:

  1. Verifique se o container está rodando. Se não estiver, rode docker-compose up e tente novamente em outro terminal.
  2. Delete a pasta de migrations e tente novamente. Isso é uma medida aparentemente extrema, mas não há nada de errado nela a não ser que o projeto já tenha sido deployado em produção. Nesse caso, siga as instruções um pouco mais avançadas neste link, preferencialmente acompanhado de alguém com um pouco mais de conhecimento em SQL.

to-do-list's People

Contributors

lvasconcelos20 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.