Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leonardospereira/school-grades-management
Aplicação com o objetivo de ler planilhas de alunos no Google Sheets e retornar os dados dos alunos atualizados com a situação e a nota necessária para aprovação.
https://github.com/leonardospereira/school-grades-management
express google-cloud-platform google-sheets google-sheets-api javascript nodejs
Last synced: 11 days ago
JSON representation
Aplicação com o objetivo de ler planilhas de alunos no Google Sheets e retornar os dados dos alunos atualizados com a situação e a nota necessária para aprovação.
- Host: GitHub
- URL: https://github.com/leonardospereira/school-grades-management
- Owner: LeonardoSPereira
- Created: 2024-02-06T20:32:03.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-05-08T12:37:22.000Z (6 months ago)
- Last Synced: 2024-05-08T13:38:45.233Z (6 months ago)
- Topics: express, google-cloud-platform, google-sheets, google-sheets-api, javascript, nodejs
- Language: JavaScript
- Homepage:
- Size: 57.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# School Grades Management System
## Tabela de Conteúdos
- [Sobre](#about)
- [Iniciando](#getting_started)
- [Usando](#usage)
- [Solucionando Problemas](#troubleshooting)
- [Tecnologias Utilizadas](#tech_stack)## Sobre
Este projeto foi um desafio proposto pela empresa [Tunts.Rocks](https://tunts.rocks), para uma vaga de estágio de desenvolvedor de software.
Ele tem como objetivo criar um sistema de gerenciamento de notas escolares, onde é informado uma planilha no Google Sheets, com as informações dos alunos e suas notas, e o sistema retorna a situação de cada aluno, se ele foi aprovado ou reprovado, juntamente com a nota necessária para cada aluno ser aprovado no exame final, caso aplicável.
O sistema foi desenvolvido em Node.js, utilizando a biblioteca [Google Sheets API](https://developers.google.com/sheets/api) para a manipulação da planilha, juntamente com uma integração com o Google Cloud Plataform, para a autenticação do usuário e a utilização da API.## Iniciando
Essas instruções fornecerão uma cópia do projeto em execução na sua máquina local para fins de desenvolvimento e testes.### Pre-requisitos
Primeiramente, é necessário ter o Node.js instalado na sua máquina. Caso não tenha, você pode baixá-lo [aqui](https://nodejs.org/en/download/).Após, é necessário criar um projeto no Google Cloud Plataform, e habilitar a API do Google Sheets. Para isso, siga os passos abaixo:
- Acesse o [Google Cloud Plataform](https://console.cloud.google.com/).
- Crie sua conta ou faça login, caso já tenha uma.
- Crie um novo projeto.
- Após criar o projeto, vá até a abaAPIs e Serviços
e clique emBiblioteca
.
- Procure porGoogle Sheets API
e habilite-a.
- Após habilitar a API, vá até a abaCredenciais
e clique emCriar credenciais
.
- SelecioneConta de serviço
e clique emContinuar
.
- Preencha os campos necessários e clique emConcluir
.
- Após criar a conta de serviço, clique emGerenciar contas de serviço
e clique na conta que você acabou de criar.
- Clique emAdicionar chave
e selecioneChave de conta de serviço
e emCriar nova chave
.
- Selecione o tipo de chaveJSON
e clique emCriar
.
- Após criar a chave, um arquivo.json
será baixado. Guarde-o, pois ele será necessário para a autenticação do usuário no sistema.
**Obs.:** O arquivo.json
contém informações sensíveis, como a chave privada do usuário. Não compartilhe esse arquivo com ninguém.Você também precisará de uma planilha no Google Sheets, com as informações dos alunos e suas notas. A planilha deverá estar no seguinte formato:
- Linha 1: O título da planilha.
- Linha 2: O total de aulas ministradas.
- Linha 3: O nome das colunas, que devem ser:Matrícula
,Nome
,Faltas
,Nota 1
,Nota 2
,Nota 3
,Situacao
,Nota para aprovação
.
**Obs.:** Os valores das colunasSituacao
eNota para aprovação
são opcionais, e serão preenchidas pelo sistema.
- Linha 4 em diante: As informações dos alunos, com suas respectivas notas e faltas.
**Obs.:** A planilha deve estar compartilhada com o e-mail que está no arquivo.json
que você baixou do Google Cloud Plataform ou deixada como pública e com permissão de edição para qualquer pessoa.Além disso, é necessário que você tenha um aplicativo de requisições HTTP, como o [Postman](https://www.postman.com/downloads/) ou o [Insomnia](https://insomnia.rest/download/), para testar as rotas do sistema.
### Instalando
Essas são as instruções para instalar o projeto na sua máquina local.1. Clone o repositório ou faça o download do projeto
```bash
git clone https://github.com/LeonardoSPereira/School-Grades-Management
```2. Instale as dependências
```bash
npm install
```3. Crie um arquivo
.env
na raiz do projeto e adicione as variáveis de ambiente conforme o arquivo.env.example
.
**Obs.:** O Id da planilha pode ser encontrado na URL da planilha, após o/d/
e antes do/edit
, como no exemplo abaixo:
```bash
https://docs.google.com/spreadsheets/d/1X2Y3Z4A5B6C7D8E9F0G/edit#gid=0
```
Nesse caso, o Id da planilha é1X2Y3Z4A5B6C7D8E9F0G
.4. Adicione o arquivo
.json
que você baixou do Google Cloud Plataform na raiz do projeto, com o nome decredentials.json
.5. Execute o projeto
```bash
npm run dev
```
6. Acesse o endereçohttp://localhost:3000
no seu aplicativo de requisições HTTP e teste as rotas do sistema.
**Obs.:** O projeto está configurado para rodar na porta 3000. Caso queira mudar a porta, altere o valor da variávelPORT
no arquivo.env
.## Usando
Agora que o projeto está rodando na sua máquina, você pode testar as rotas do sistema. Abaixo estão as rotas disponíveis no sistema:- Rota para ler os dados da planilha. **Obs.:** Essa rota é obrigatória para que o sistema funcione corretamente. Isso porque, ao acessar essa rota, o sistema irá ler os dados da planilha e armazená-los em um arquivo
.json
na raiz do projeto, para que o sistema possa acessar esses dados sem a necessidade de acessar a planilha a cada requisição.
```bash
GET /values
```- Rota para retornar a situação dos alunos, se eles foram aprovados ou reprovados, juntamente com a nota necessária para cada aluno ser aprovado no exame final, caso aplicável. **Obs.:** Essa rota só irá funcionar corretamente após a leitura dos dados da planilha.
```bash
PUT /values
```Com isso, os dados dos alunos serão atualizados na planilha, com a situação de cada aluno e a nota necessária para cada aluno ser aprovado no exame final, caso aplicável.
## Solucionando Problemas
Essa seção tem como objetivo ajudar a solucionar problemas comuns que podem ocorrer durante a execução do projeto.- **Erro ao executar o projeto**
- Verifique se o Node.js está instalado na sua máquina.
- Verifique se as dependências do projeto foram instaladas corretamente.
- Verifique se as variáveis de ambiente foram configuradas corretamente.
- Verifique se o arquivocredentials.json
foi adicionado na raiz do projeto.- **Erro de autenticação**
- Verifique se o arquivocredentials.json
foi adicionado na raiz do projeto.
- Verifique se as credenciais do usuário estão corretas.
- Verifique a configuração do projeto no Google Cloud Plataform.- **Erro ao acessar a planilha**
- Verifique se a planilha está compartilhada com o e-mail que está no arquivocredentials.json
ou se está pública e com permissão de edição para qualquer pessoa.
- Verifique se o Id da planilha foi configurado corretamente nas variáveis de ambiente.- **Erro ao acessar as rotas**
- Verifique se o projeto está rodando corretamente.
- Verifique se o endereço da rota está correto.
- Verifique se o aplicativo de requisições HTTP está configurado corretamente.- **Erro ao atualizar os dados da planilha**
- Verifique se a rota para ler os dados da planilha foi acessada corretamente.
- Verifique se a rota para retornar a situação dos alunos foi acessada corretamente.
- Verifique se os dados dos alunos foram atualizados corretamente na planilha.- **Erro de autorização**
- Verifique se o usuário tem permissão para acessar a planilha.
- Verifique se o usuário tem permissão para editar a planilha.- **Erro de formato dos dados ao atualizar a planilha**
- Verifique se a planilha está no formato correto.
- Verifique se as colunas da planilha estão no formato correto.
- Verifique se os dados dos alunos estão no formato correto.
- Verifique se os dados dos alunos estão sendo enviados corretamente nas requisições.Caso o problema persista, confira as documentações das [APIs do Google Sheets](https://developers.google.com/sheets/api) e do [Google Cloud Plataform](https://cloud.google.com), ou abra uma issue no repositório do projeto, que eu tentarei te ajudar da melhor forma possível.
- [Node.js](https://nodejs.org/en/) - JavaScript runtime
- [Express](https://expressjs.com/pt-br/) - Framework web para Node.js
- [Google Sheets API](https://developers.google.com/sheets/api) - API para manipulação de planilhas do Google Sheets
- [Google Cloud Plataform](https://cloud.google.com) - Plataforma de computação em nuvem da Google
- [Nodemon](https://nodemon.io/) - Utilitário que monitora as alterações no código e reinicia automaticamente o servidor.