Esta API RESTful foi desenvolvida para gerenciar uma escola, permitindo o cadastro de usuÔrios, autenticação via JWT, gerenciamento de alunos e upload de fotos para cada aluno. O projeto segue boas prÔticas de organização de código, autenticação, validação e manipulação de arquivos.
- Node.js: Ambiente de execução JavaScript.
- Express: Framework web para Node.js.
- Sequelize: ORM para banco de dados relacional (utilizando MariaDB).
- MariaDB: Banco de dados relacional.
- JWT (jsonwebtoken): Autenticação baseada em tokens.
- Multer: Upload de arquivos (fotos dos alunos).
- bcryptjs: Hash de senhas.
- dotenv: Gerenciamento de variƔveis de ambiente.
- Jest & Supertest: Testes automatizados.
- Sequelize CLI: Migrations e seeds.
- API hospedada no Render: O backend foi implementado e estƔ rodando gratuitamente no serviƧo Render (free trial).
- Banco de Dados no AlwaysData: O banco de dados MariaDB estƔ hospedado gratuitamente no serviƧo AlwaysData (free trial).
git clone https://github.com/andreluizdasilvaa/CRUD-ESCOLA-Api_Rest-Sequelize-Express
cd CRUD-ESCOLA-Api_Rest-Sequelize-Expressnpm installCrie um arquivo .env na raiz do projeto com base no .env.example:
DATABASE=<nome_do_banco>
DATABASE_HOST=<host>
DATABASE_PORT=<porta>
DATABASE_USERNAME=<usuario>
DATABASE_PASSWORD=<senha>
TOKEN_SECRET=<sua_chave_secreta>
TOKEN_EXPIRATION=7d
# PORT=<porta_opcional>
Obs 1: Para rodar localmente, utilize as credenciais do banco de dados do AlwaysData.
Obs 2: A variƔvel de ambiente
PORTé opcional. Caso não seja definida, o servidor irÔ rodar na porta padrão 3001.
- Crie o banco de dados no MariaDB com o nome definido em
DATABASE. - Execute as migrations:
npx sequelize db:migrate- (Opcional) Popule o banco com dados iniciais (seeds):
npx sequelize db:seed:allNo arquivo src/config/appConfig.js, altere o valor da propriedade url para refletir o endereço base da sua API, seja local ou em produção.
Exemplo para ambiente local:
export default {
url: 'http://localhost:3001/'
}Importante: Sempre ajuste essa URL conforme o ambiente em que a API estiver rodando (local, Render, etc).
npm run devA API estarĆ” disponĆvel em: http://localhost:3001 (ou na porta definida em PORT).
- /users: Cadastro, atualização e remoção de usuÔrios.
- /tokens: Geração de token JWT (login).
- /alunos: CRUD de alunos (protegido por autenticação).
- /fotos: Upload de fotos para alunos (protegido por autenticação).
- /: Rota de teste (home).
- Cadastro de UsuƔrio: Crie um usuƔrio via
/users. - Login: Gere um token JWT via
/tokens. - Autenticação: Use o token JWT no header
Authorization: Bearer <token>para acessar rotas protegidas. - CRUD de Alunos: Gerencie alunos autenticado.
- Upload de Foto: Envie uma foto para um aluno via
/fotos(multipart/form-data).
- Os testes automatizados estão em
src/__tests__. - Para rodar os testes:
npm testUtilize a extensão REST Client do VS Code e o arquivo src/__tests__/tests.http para testar as rotas facilmente.
- As fotos são salvas em
uploads/images. - O campo
urlda foto retorna o endereƧo pĆŗblico para acesso Ć imagem. - O projeto utiliza autenticação JWT para proteger rotas sensĆveis.
- O código segue padrão ES Modules.
npm run dev: Executa o servidor em modo desenvolvimento.npm start: Executa o servidor em modo produção.npm test: Executa os testes automatizados.npx sequelize db:migrate: Executa as migrations.npx sequelize db:seed:all: Executa os seeds.
Baixe a collection do Postman por aqui:
š Download via Google Drive