Este é um projeto Node.js, podendo ser feito tanto em JavaScript ou TypeScript(diferencial) para criar um CRUD (Create, Read, Update, Delete) para uma aplicação de blog. O projeto utiliza MongoDB como banco de dados e inclui um Dockerfile e um docker-compose para facilitar a implantação e execução.
Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina antes de prosseguir.
-
Clone este repositório:
git clone git@github.com:Bigtrade-Fintech/teste-tecnico-bigtrade.git
-
Navegue até o diretório do projeto:
cd teste-tecnico-bigtrade
-
As variáveis de ambiente estão presentes no docker-compose.yml
O projeto inclui um Dockerfile e um docker-compose.yaml para facilitar a configuração e execução do ambiente. Para iniciar o aplicativo, execute o seguinte comando:
docker compose up -d
O aplicativo estará acessível em http://localhost:3000.
A estrutura do projeto é organizada seguindo o padrão de arquitetura MVCS da seguinte forma:
- src/: Contém o código-fonte da aplicação.
- models/: Modelos de dados MongoDB.
- services/: Serviços que serão chamados na aplicação.
- controllers/: Controladores para lidar com as operações CRUD.
- index.js: Ponto de entrada da aplicação.
- docker-compose.yml: Arquivo de configuração do Docker Compose.
A API oferece os seguintes endpoints:
-
POST /users
: Criar um novo usuário. -
PUT /users/:id
: Atualizar informações do usuário. -
GET /users/:id
: Retorna os dados do usuário de acordo com o id -
DELETE /users/:id
: Excluir um usuário.{ "id": 1, // Deve ter um id único por usúario "displayName": "John Doe", "email": "john@email.com", // Deve ser um email único "password": "123456", }
-
POST /posts
: Criar um novo post. -
GET /posts
: Obter todos os posts. -
GET /posts/:id
: Obter um post específico. -
PUT /posts/:id
: Atualizar um post. -
DELETE /posts/:id
: Excluir um post.{ "id": 30, "title": "Título da postagem", "content": "Texto da postagem", "userId": 1, // Id do usuário que fez o post "published": "2021-08-01T20:01:00.000Z", "updated": "2021-08-01T21:10:00.000Z", }
Para realizar a entrega, o cadidato deverá abrir um PR para a main com seu nome. Exemplo: João das Couves
joao-das-couves
Em caso de dúvidas, siga o link abaixo:
Serão considerados diferenciais, caso o candidato consiga aplicar as seguintes práticas:
- Realizar o projeto em Typescript.
- Programação Orientada a Objetos (POO).
- Princípios SOLID
- Testes (unitários e/ou de integração)