https://github.com/ericneves/quickstartgraphql
🪿 Application developed with NodeJS, ExpressJS, MongoDB, GraphQL and Docker...
https://github.com/ericneves/quickstartgraphql
docker expressjs graphql mongodb nodejs
Last synced: 3 months ago
JSON representation
🪿 Application developed with NodeJS, ExpressJS, MongoDB, GraphQL and Docker...
- Host: GitHub
- URL: https://github.com/ericneves/quickstartgraphql
- Owner: EricNeves
- License: mit
- Created: 2024-04-02T02:21:52.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-05T02:07:58.000Z (about 2 years ago)
- Last Synced: 2025-10-29T23:50:41.828Z (8 months ago)
- Topics: docker, expressjs, graphql, mongodb, nodejs
- Language: JavaScript
- Homepage:
- Size: 3.24 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Aplicação desenvolvida com NodeJs, Express e MongoDB para dispolibilizar uma RESTful API, além de integrar o GraphQL para fornecer uma camada adicional de consulta flexível e eficiente.
Data de criação: Apr 4, 2024


#### Intro
Este projeto apresenta um aplicativo construído com **Node.js**, **Express** e **MongoDB**, proporcionando uma **API RESTful** para interagir com os dados. Além disso, ele incorpora o **GraphQL** para oferecer uma alternativa poderosa de consulta de dados.
**GraphQL** vem como uma alternativa para resolver **2 problemas** de **Rest APIS**, que é o caso de **Over-fetching** e **Under-fetching**.
> [!NOTE]
>
> - **Over-fetching**: Este problema ocorre quando a API retorna mais dados do que o necessário para uma determinada solicitação.
> - **Under-fetching**: Este problema acontece quando uma solicitação não fornece informações suficientes, levando o cliente a fazer várias solicitações adicionais para obter os dados necessários.
#### Features
- 🗃️ Padrão Layered Architecture
- 🐙 Criar usuário
- 🔑 Autenticação - JWT
- 👾 Informações do Usuário
- 🕸️ GraphQL
- Query
- ✅ Informações do Usuário
- Mutation
- ✅ Atualizar Informações do Usuário
- ⚡ Dependencies:
- @apollo/server `4.10.2`
- bcrypt `5.1.1`
- cors `2.8.5`
- express `4.19.2`
- graphql `16.8.1`
- jsonwebtoken `9.0.2`
- mongoose `8.2.4`
#### Execute
> [!NOTE]
> Siga os passos abaixo para a execução do projeto.
```sh
# Clone
$ git clone https://github.com/EricNeves/quickstartGraphQL.git
# Project Folder
$ cd quickstartGraphQL
# Install Deps
$ cd www && pnpm install
# Execute Docker - ./quickstartGraphQL
$ docker-compose up -d --build
```
#### Quickstart
##### 🛸 Rest
```sh
$ curl -X POST \
-d '{ "name": "admin", "email": "admin@test.com", "password": "admin" }' \
-H "Content-Type: application/json" \
http://localhost:3030/users
{
"id": "660ebf9dc1f55ee8a836f218",
"name": "admin",
"email": "admin@test.com",
}
```
```sh
$ curl -X POST \
-d '{ "email": "admin@test.com", "password": "admin" }' \
-H "Content-Type: application/json" \
http://localhost:3030/users/login
{
"jwt": "your-token"
}
```
##### 📡 GraphQL
```graphql
query {
getUser {
id,
name
}
}
Header: Authorization (JWT)
```
```graphql
mutation {
updateUser(input: { name: "...", email: "..." }) {
id
}
}
Header: Authorization (JWT)
```

Eric Neves
👋 Me chamo Eric Neves, sou desenvolvedor web com foco em backend e autor deste projeto.
### License