Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gusmaomatheus/students-management-api
Developed as a practical assessment for the PRW2 subject.
https://github.com/gusmaomatheus/students-management-api
api bcryptjs express javascript jwt mongodb mongoose mvc node nodemon
Last synced: about 10 hours ago
JSON representation
Developed as a practical assessment for the PRW2 subject.
- Host: GitHub
- URL: https://github.com/gusmaomatheus/students-management-api
- Owner: gusmaomatheus
- Created: 2024-12-05T03:35:48.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-05T03:54:46.000Z (2 months ago)
- Last Synced: 2024-12-15T14:12:13.604Z (about 2 months ago)
- Topics: api, bcryptjs, express, javascript, jwt, mongodb, mongoose, mvc, node, nodemon
- Language: JavaScript
- Homepage:
- Size: 27.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# š API de Gerenciamento de Alunos
Este projeto Ć© uma API desenvolvida como exemplo de um sistema de gerenciamento de alunos, permitindo o cadastro, ediĆ§Ć£o, consulta e exclusĆ£o de registros. AlĆ©m disso, inclui funcionalidades de autenticaĆ§Ć£o com **JWT (JSON Web Tokens)**.
A aplicaĆ§Ć£o foi desenvolvida utilizando **Node.js** com **Express**, **MongoDB** como banco de dados, e diversas bibliotecas adicionais para garantir seguranƧa e escalabilidade.---
## š§© Funcionalidades
- **ā Cadastro de Alunos:** Permite adicionar novos registros com informaƧƵes como nome, RA, e notas.
- **š ExibiĆ§Ć£o de Alunos:** Consulta a lista completa de alunos ou apenas um aluno especĆfico pelo ID.
- **š CĆ”lculo de MĆ©dias:** Retorna o nome e a mĆ©dia de todos os alunos cadastrados.
- **āļø VerificaĆ§Ć£o de AprovaĆ§Ć£o:** Retorna o status dos alunos com base em suas mĆ©dias (aprovado ou reprovado).
- **š EdiĆ§Ć£o de Alunos:** Atualiza os dados de um aluno especĆfico atravĆ©s de seu ID.
- **ā RemoĆ§Ć£o de Alunos:** Remove um registro de aluno pelo ID.
- **š Sistema de AutenticaĆ§Ć£o:** Utiliza **JWT** para autenticar e proteger as rotas da API.
- **š¤ Registro e Login:** Permite criar contas de usuĆ”rio e autenticar no sistema.---
## š Requisitos
Antes de executar o projeto, certifique-se de que vocĆŖ tenha os seguintes requisitos instalados:
- [Node.js](https://nodejs.org/) - Plataforma JavaScript para execuĆ§Ć£o de cĆ³digo no lado do servidor.
- [MongoDB](https://www.mongodb.com/) - Banco de dados NoSQL para armazenamento das informaƧƵes.---
## š Tecnologias Utilizadas
- [**Node.js:**](https://nodejs.org/) Plataforma de execuĆ§Ć£o de cĆ³digo JavaScript no servidor.
- [**Express:**](https://expressjs.com/) Framework minimalista para construĆ§Ć£o de APIs e aplicaƧƵes web.
- [**Mongoose:**](https://mongoosejs.com/) Biblioteca ODM para interaĆ§Ć£o com o MongoDB.
- [**JWT (jsonwebtoken):**](https://github.com/auth0/node-jsonwebtoken) Ferramenta para autenticaĆ§Ć£o e autorizaĆ§Ć£o baseada em tokens.
- [**bcrypt:**](https://github.com/kelektiv/node.bcrypt.js) Biblioteca para hashing de senhas e autenticaĆ§Ć£o segura.
- [**dotenv:**](https://github.com/motdotla/dotenv) Gerenciamento seguro de variƔveis de ambiente.
- [**Nodemon:**](https://nodemon.io/) Ferramenta para reiniciar automaticamente o servidor durante o desenvolvimento.---
## š ļø Como Executar o Projeto
1. Clone o repositĆ³rio:
```bash
git clone
cd
```2. Instale as dependĆŖncias:
```bash
npm install
```3. Configure as variƔveis de ambiente:
Crie um arquivo `.env` na raiz do projeto e adicione as seguintes variƔveis:
```env
PORT=3000 // Por padrĆ£o o servidor irĆ” rodar na porta 3000, mesmo que a variĆ”vel nĆ£o seja adicionada
MONGO_URI=mongo_db_url
JWT_SECRET=sua_chave_secreta
```4. Inicie o servidor de desenvolvimento:
```bash
npm run dev
```5. Acesse a API no endereƧo: [http://localhost:3000](http://localhost:3000)
---
## š Rotas da API
### AutenticaĆ§Ć£o
- `POST /register` - Registro de novos usuƔrios.
- `POST /login` - Login e geraĆ§Ć£o de um token JWT.### Alunos (rotas protegidas com JWT)
- `GET /alunos` - Retorna todos os alunos cadastrados.
- `GET /alunos/:id` - Retorna um aluno especĆfico pelo ID.
- `GET /alunos/medias` - Retorna o nome e a mƩdia de todos os alunos.
- `GET /alunos/aprovados` - Retorna os alunos com seus status (aprovado/reprovado).
- `POST /alunos` - Cadastra um novo aluno.
- `PUT /alunos/:id` - Atualiza as informaƧƵes de um aluno.
- `DELETE /alunos/:id` - Exclui um aluno pelo ID.---
## āØ ConsideraƧƵes Finais
Este projeto foi desenvolvido com foco em fornecer um exemplo prĆ”tico de uma API RESTful com autenticaĆ§Ć£o, protegendo rotas com JWT e gerenciando dados de forma eficiente utilizando o MongoDB.
Com a implementaĆ§Ć£o de boas prĆ”ticas e ferramentas modernas, Ć© possĆvel expandir e adaptar o projeto para diferentes cenĆ”rios do mundo real.