From 06e78ba7e610a9eab41ad22c6ee26f4a8b122697 Mon Sep 17 00:00:00 2001 From: Raiane Oliveira Date: Thu, 21 Nov 2024 11:07:02 -0300 Subject: [PATCH 1/2] refactor: dotenv imports, remove useless console.info's and change SSL db config --- src/database/data-source.ts | 17 ++++++++++------- src/main.ts | 29 ++++++++++++++--------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/database/data-source.ts b/src/database/data-source.ts index 3851caf..642887c 100644 --- a/src/database/data-source.ts +++ b/src/database/data-source.ts @@ -1,9 +1,9 @@ -import { config } from 'dotenv'; -config(); +import 'dotenv/config' import { DataSource, DataSourceOptions } from 'typeorm'; import 'reflect-metadata'; const { + NODE_ENV, TYPEORM_HOST, TYPEORM_PORT, TYPEORM_PASSWORD, @@ -15,7 +15,7 @@ const { export const typeormConfig: DataSourceOptions = { type: 'postgres', host: TYPEORM_HOST, - port: +TYPEORM_PORT, + port: parseInt(TYPEORM_PORT), username: TYPEORM_USERNAME, password: TYPEORM_PASSWORD, database: TYPEORM_DATABASE, @@ -24,10 +24,13 @@ export const typeormConfig: DataSourceOptions = { 'dist/database/migrations/*.js', 'dist/database/migrations/seeds/*.js', ], - ssl: { - ca: CA_CERT, - rejectUnauthorized: false, - }, + ssl: + NODE_ENV == 'production' + ? { + ca: CA_CERT, + rejectUnauthorized: false, + } + : undefined, }; export const AppDataSource = new DataSource({ diff --git a/src/main.ts b/src/main.ts index a9d739c..e2d46fd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,3 @@ -import { config } from "dotenv"; -config() import { ValidationPipe } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { NestExpressApplication } from '@nestjs/platform-express'; @@ -11,10 +9,12 @@ async function bootstrap() { cors: true, }); - app.useGlobalPipes(new ValidationPipe({ - whitelist: true, - transform: true - })); + app.useGlobalPipes( + new ValidationPipe({ + whitelist: true, + transform: true, + }), + ); const config = new DocumentBuilder() .setTitle('Vagas-Backend') @@ -29,17 +29,16 @@ async function bootstrap() { .build(); const document = SwaggerModule.createDocument(app, config); - + if (process.env.NODE_ENV == 'development') { SwaggerModule.setup('api', app, document); - } + console.info( + `Documentation running on http://localhost:${process.env.PORT || 3000}/api 🚀🚀`, + ); + } - await app.listen(process.env.PORT || 3000); - console.info(`🚀🚀 App listening on port ${process.env.PORT || 3000} 🚀🚀`); - console.info( - `Documentation running on http://localhost:${process.env.PORT || 3000}/api 🚀🚀`, - ); - const databse = process.env.ISLOCAL == 'true' ? 'do DOCKER' : 'da NUVEM'; - console.info(`Você esta usando o banco de dados ${databse}`); + await app.listen(process.env.PORT || 3000, () => { + console.info(`🚀🚀 App listening on port ${process.env.PORT || 3000} 🚀🚀`); + }); } bootstrap(); From c2e3e26863c14da9cf727dde2343e65ab4be998d Mon Sep 17 00:00:00 2001 From: Raiane Oliveira Date: Thu, 21 Nov 2024 14:37:11 -0300 Subject: [PATCH 2/2] docs: improve "how to run locally" README's section --- .env.example | 26 +++++++++++++++ .gitignore | 10 +----- README.md | 91 +++++++++++++++------------------------------------- 3 files changed, 53 insertions(+), 74 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..17db866 --- /dev/null +++ b/.env.example @@ -0,0 +1,26 @@ +# Configuração do ambiente +NODE_ENV="development" +PORT= # Porta onde o projeto vai rodar na sua máquina + +# JWT +SECRET_KEY="" # Uma string qualquer, chave para gerar o JWT + +# Conexão com o banco de dados +TYPEORM_HOST="localhost" # Host name do seu banco (geralmente quando está na sua maquina fica localhost) +TYPEORM_PORT=5432 # A porta geralmente é 5432, se no seu caso for outra porta basta alterar +TYPEORM_USERNAME="docker" # Usuário do servidor Postgres via docker compose +TYPEORM_PASSWORD="ignite" # Senha do servidor Postgres via docker compose +TYPEORM_DATABASE="linkedin_backend" # Banco de dados a ser conectado via docker compose + +CA_CERT="" # Apenas para o db em produção + +# AWS S3 +AWS_ACCESS_KEY_ID="" +AWS_SECRET_ACCESS_KEY="" +AWS_S3_BUCKET_NAME="" + +# Website +FRONTEND_URL="http://localhost:3000" + +# Web Scaper +VACANCIES_URL="http://localhost:3333" diff --git a/.gitignore b/.gitignore index 50c11b5..5735128 100644 --- a/.gitignore +++ b/.gitignore @@ -136,12 +136,4 @@ dist # Optional stylelint cache # SvelteKit build / generate output -.svelte-kit - -# Config files -# src/database/data-source.ts -.env -.env.example -mail.module.ts - -# End of https://www.toptal.com/developers/gitignore/api/node \ No newline at end of file +.svelte-kit \ No newline at end of file diff --git a/README.md b/README.md index 9863391..a0f590b 100644 --- a/README.md +++ b/README.md @@ -12,109 +12,70 @@ ## Menu -### [Abrir e rodar o projeto](#abrir_e_rodar_o_projeto) +Rodando localmente -### [Acesso ao projeto](#acesso_ao_projeto) +Documentação -### [Rodando Localmente](#rodando_localmente) +Stack Utilizada -### [Rodando com Docker](#instalando_o_docker) +Equipe Back-end -### [Stack Utilizada](#stack_utilizada) -### [Equipe Back-end](#equipe_do_backend) - -### Pre requisitos: +### Pré-requisitos: * git * docker * insomnia --- - + -## 🛠️ Abrir e rodar o projeto +## 🛠️ Rodando localmente -Clone o projeto na janela que abriu com o seguinte comando: +Clone o projeto ou o fork do projeto com o seguinte comando: ```bash - git clone https://github.com/SouJunior/linkedin-backend.git +git clone https://github.com/SouJunior/linkedin-backend.git ``` - ---- - -`docker-compose up -d` - - -O projeto vai estar rodando em: - -`localhost:3000` - -agora basta seguir para [Instalando o Insomnia](#instalando_o_insomnia) - ---- - - - -## 📁 Acesso ao projeto - -Entre na pasta do projeto pelo Visual Studio, Abra o terminal do visual Studio e -vá para o diretório do projeto com o comando: +Em seguida, instale as dependências: ```bash - cd vagas-api - -Instale as dependências +npm install +``` +Suba os containers docker na sua máquina via `docker compose`: ```bash - npm i +docker compose up -d ``` -Feito a instalação dos pacotes basta renomear o arquivo `.env.example` para `.env` e preencher com as suas informações do banco de dados, no caso estamos usando o PostgreSQL - -Arquivo .env +Crie o arquivo `.env` seguindo o exemplo contido em `.env.example`. +Aplique as **migrations** do TypeORM no seu banco de dados local: ```bash -PORT=3000 #Porta que seu projeto vai rodar na sua maquina - -# JWT -SECRET_KEY= qualquerStringAqui #Uma string qualquer, chave para gerar o JWT - -# TYPEORM_CONNECTION -TYPEORM_CONNECTION=postgres -TYPEORM_HOST= #Host name do seu banco (geralmente quando esta na sua maquina fica localhost) -TYPEORM_PORT=5432 #A porta geralmente é 5432, se no seu caso for outra porta basta alterar -TYPEORM_USERNAME= # Seu usuario do banco postgress -TYPEORM_PASSWORD= # Sua senha do banco postgress -TYPEORM_DATABASE= # Sua database do banco de dados. +npm run migration:run ``` ---- - - - -## 🌐 Rodando localmente - -Inicie o servidor - +Por fim, inicie o servidor: ```bash - npm run start:dev +npm run dev # ou npm run start:dev ``` --- + -Após a instalação do Wsl, vamos até a pasta do projeto e rodar o comando +## 📜 Documentação -`docker-compose up -d` +Quando você iniciar o seu servidor local, a documentação Swagger vai estar rodando em +```bash +http://localhost:{PORT}/api +``` -O projeto vai estar rodando em: +Se você quiser testar as rotas no Insomnia ou Postman, importe o arquivo `Documentação_Sou_Junior.json` e as rotas serão configuradas automaticamente. -`localhost:3000` - ---