Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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.