Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/patrickmps/library
Library, uma aplicação simples dedicada à catalogação e recomendação de livros.
https://github.com/patrickmps/library
apollo apollo-client apollo-server graphql graphql-client graphql-server mongodb mongoose node nodejs react reactjs
Last synced: 5 days ago
JSON representation
Library, uma aplicação simples dedicada à catalogação e recomendação de livros.
- Host: GitHub
- URL: https://github.com/patrickmps/library
- Owner: patrickmps
- License: gpl-3.0
- Created: 2024-01-23T22:25:51.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-01-25T14:00:44.000Z (12 months ago)
- Last Synced: 2024-11-19T11:24:29.230Z (about 2 months ago)
- Topics: apollo, apollo-client, apollo-server, graphql, graphql-client, graphql-server, mongodb, mongoose, node, nodejs, react, reactjs
- Language: JavaScript
- Homepage:
- Size: 92.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 📖Library
![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white)
![ReactJS](https://img.shields.io/badge/React-087ea4?style=for-the-badge&logo=react&logoColor=white)
![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white)
![GraphQL](https://img.shields.io/badge/GraphQL-f6009c?style=for-the-badge&logo=graphql&logoColor=white)
![Apollo](https://img.shields.io/badge/Apollo-grey?style=for-the-badge&logo=apollographql&logoColor=white)
![Nodemon](https://img.shields.io/badge/NODEMON-%23323330.svg?style=for-the-badge&logo=nodemon&logoColor=%BBDEAD)
![Express.js](https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge&logo=express&logoColor=%2361DAFB)
![NPM](https://img.shields.io/badge/NPM-%23CB3837.svg?style=for-the-badge&logo=npm&logoColor=white)
![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white)
![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)
![Git](https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white)
![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)## Sobre
Este monorepo integra os projetos backend e frontend da Library, uma aplicação simples dedicada à catalogação e recomendação de livros. Desenvolvida como um exercício prático para fixar os conhecimentos teóricos em GraphQL, a aplicação abrange alguns conceitos e tecnologias relevantes para o ecossistema GraphQL.
**Principais Pontos Abordados:**
* **Apollo Server:** Implementação do servidor GraphQL usando o Apollo Server, proporcionando uma base sólida para a API backend da Library;* **Schemas:** Definição estruturada dos tipos de dados e suas relações;
* **Queries e Mutations:** Utilização eficaz de queries para leitura de dados e mutations para alteração de dados, permitindo interações com o backend;
* **Resolvers:** Implementação de resolvers para cada tipo de dado, conectando as queries e mutations definidas nos schemas com a lógica de negócios do backend;
* **Apollo Client com ReactJS:** Integração suave entre o frontend e o backend usando o Apollo Client no ambiente ReactJS;
* **Cache:** Exploração do sistema de cache do Apollo Client para otimização do desempenho, minimizando as requisições ao servidor e melhorando a responsividade da aplicação;
* **Fragments:** Uso de fragments para modularizar e reutilizar partes das queries, melhorando a manutenibilidade e a legibilidade do código;
* **Subscriptions:** Integração de subscriptions para permitir atualizações em tempo real, proporcionando uma experiência mais dinâmica e interativa aos usuários.
## Variáveis de Ambiente
Faça uma copia do .env.example e edite com suas configurações:
```bash
cp .env.example .env
```Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env
`MONGODB_URI` - uri do banco MongoDB
`PORT` - porta na qual irá rodar o server, por padrão está 4000
`SECRET` - string usada para gerar o token JWT
Obs: Como o foco do projeto foi o estudo do GraphQL, foi deixado de lado a autenticação e o password foi padronizado para "secret".
## Rodando localmente
Clone o projeto
```bash
git clone https://github.com/patrickmps/library.git
```
### BackendEntre no diretório do backend
```bash
cd backend
```Instale as dependências
```bash
npm install
```Inicie o servidor
```bash
npm run dev
```
É possível testar a API pelo Apollo Studio Explorer pelo navegador acessando a url do server `http://localhost:4000`.### Frontend
Entre no diretório do frontend
```bash
cd frontend
```Instale as dependências
```bash
npm install
```Inicie o servidor
```bash
npm run dev
```
Agora com o backend e o frontend rodando basta acessar o endereço `http://localhost:5173` e testar a aplicação.⚡