- Git
- Docker instalado
- Banco de dados (ex: PostgreSQL) em execução
- Insomnia ou outro que você prefira para fazer as requisições
Clone o projeto ou o fork do projeto com o seguinte comando:
git clone https://github.com/SouJunior/vagas-api
Em seguida, instale as dependências:
npm install
Suba os containers docker na sua máquina via docker compose
:
docker compose up -d
docker-compose up -d
Para remover os containers:
docker compose down
Crie o arquivo .env
seguindo o exemplo contido em .env.example
.
🔐 Crie um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:
PORT=3000
DATABASE_URL=postgres://usuario:senha@localhost:5432/seu_banco
JWT_SECRET=sua_chave_secreta
💡 Dica: nunca suba o arquivo .env no GitHub! Use sempre o .gitignore para evitar vazamentos de credenciais.
Aplique as migrations do TypeORM no seu banco de dados local:
npm run migration:run
Por fim, inicie o servidor:
npm run dev # ou npm run start:dev
Após subir a aplicação, acesse:
http://localhost:3000
Tanto 🐧 Linux quanto 🪟 Windows são o mesmo processo
# Instale as dependências
npm install
# Rode o projeto
npm run start:dev
❗ Erro de autenticação no banco?
Se ao rodar o projeto aparecer um erro relacionado ao banco de dados, siga os passos abaixo:
🔐 Alterar a senha do usuário postgres:
psql -h localhost -p 5432 -U postgres -d postgres
E então, dentro do terminal do psql:
ALTER USER postgres WITH PASSWORD 'admin';
❗ Erro: banco de dados "vagas-api" não existe? Ainda no psql, crie o banco:
CREATE DATABASE "vagas-api";
✅ Agora sim, tudo certo? Siga com as migrations!
npm run migration:run
Quando você iniciar o seu servidor local, a documentação Swagger vai estar rodando em
http://localhost:{PORT}/api
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.
Warning
Vagas Web App utiliza API disponível em https://motor-vagas.onrender.com/docs/ O que, pela URL, indica possibilidade do repo "vagas-api" não estar sendo utilizado
Tip
Caso não esteja sendo utilizado, atualizar README apontando para o novo repositório e arquivar repositório vagas-api
Caution
Pull Requests para main atualizam a imagem docker de produção
Tip
Atualizar "Deploy to Production", removendo "on: pull_request: branches: [main]"
Important
Repositório possui github workflow para deploy de homologação, mas commit mais recente foi um PR direto para main
Warning
AWS ECR e Railway configurados para o mesmo repo
sequenceDiagram
actor Dev as Desenvolvedores
participant Git as GitHub
participant Rail as Railway
participant Actions as GitHub Actions
participant ECR as AWS ECR
Note over Dev,ECR: Fluxo de Deploy com Preview
Dev->>Git: Abre Pull Request (PR) para main
Git->>Actions: Novo Evento: PR criada
Actions->>Actions: Cria imagem Docker
Actions->>ECR: Atualiza imagem Docker "$REGISTRY/vagas:latest"
ECR->>Actions: Imagem "$REGISTRY/vagas:latest" atualizada
Actions-->>Git: Deploy de Produção atualizado
Note over Dev,ECR: Loop de desenvolvimento
Dev->>Git: Aprova e mergeia PR para main
par
Git->>Rail: Novo Evento: Branch main atualizada
Rail-->>Git: Deploy de Produção "*.up.railway.app" atualizado
and
Git->>Actions: Novo Evento: Branch main atualizada
Actions->>Actions: Cria imagem Docker
Actions->>ECR: Atualiza imagem Docker "$REGISTRY/vagas:latest"
ECR-->>Actions: Imagem "$REGISTRY/vagas:latest" atualizada
Actions-->>Git: Deploy de Produção atualizado
end
Ficaremos felizes com contribuições! Veja como participar:
Crie uma issue com sugestões, dúvidas ou relatos de erro
Faça um fork deste repositório
Crie uma branch com sua funcionalidade ou correção
Envie um Pull Request (PR) explicando suas alterações
🔎 Siga boas práticas de versionamento e mantenha seus commits claros e objetivos!
Lucas Rigon |
Ricardo Machado |
Larissa Sarapio |
José Lázaro |
Lázaro Bodevan |
Leidejane da Rosa |
Tiago Souza Dias |
João Matos |
Mikael Melo |
Leonardo Monteiro |
Daniel Vinhas |
Joana D'arc |
Audinéia Carmo |
Bruno |
Leonardo Reis |
Se você tiver algum feedback, por favor nos deixe saber por meio do nosso fazendo uma contribuição.
Contribuições são sempre bem-vindas!
Esse projeto é usado pela SouJunior.