Bem-vindas ao meu projeto de conclusão do curso de *desenvolvimento back-end* - turma On16 da {reprograma}. 🎉
Este projeto consiste em uma API REST onde podemos executar todas as funções CRUD em um banco de dados não relacional (MongoDB). Para as rotas create, patch e delete será necessária autorização mediante login.
Veja a documentação da API aqui: Swagger
A aplicação está disponível em: Heroku.
Este projeto é inspirado na segunda temporada do Cirandeiras Podcast, onde em cada episódio conhecemos sobre a vida e luta de mulheres que são guardiãs da cultura popular em seus territórios. Através da expressão cultural, essas mulheres mantêm vivas as tradições ancestrais e ocupam espaços de lideranças - muitas vezes destinados apenas aos homens.
A trajetória dessas mulheres e a relação que elas desenvolvem com cada ritmo e dança em seus territórios resgata a formação do povo brasileiro e dá contornos a reivindicações antigas, porém tão atuais: reconhecimento e demarcação de territórios quilombolas e indígenas, preservação ambiental, autonomia e liderança feminina, leis de incentivo e fomento à cultura.
Como diz o escritor Antônio Luiz Simas, “não se faz festa porque a vida é boa, mas pela razão inversa. (...) as culturas de festa, pelas síncopes da festa, inventam o mundo e subvertem a miséria, inclusive existencial.”
Não à toa, as danças e brincadeiras que acompanham cada ritmo nos revelam uma tentativa simbólica de lidar com a exploração nas relações de trabalho desde a escravidão. Sem deixar de lado o sagrado e uma certa ironia entre o festejo e a dor, os ritmos das Cirandeiras nos convidam a celebrar o nosso povo.
Se ouvirmos os relatos de histórias das nossas famílias certamente vamos descobrir brincadeiras infantis, festejos e tradições derivadas dessas expressões culturais. Este resgate nos permite observar, por exemplo, os processos migratórios de famílias no eixo nordeste/sudeste e estabelecer conexões com o passado e nossos ancestrais.
O objetivo desta API é guardar essa memória, trazer visibilidade para a luta e pioneirismo dessas mulheres e ainda, disseminar nossa cultura popular. ✨
Vamos lá?
Feramenta | Utilidade |
---|---|
JavaScript | Linguagem de programação utilizada nesse projeto. |
Node.js | Ambiente de execução do JavaScript. |
Git & GitHub | Hospedagem do repositório e controle (versionamento de código). |
express | Framework do NodeJS. |
mongoose | Dependência que interage com o MongoDB. Conecta o projeto ao banco de dados, cria os models e as collections. |
nodemon | Observa as atualizações realizadas nos arquivos e roda o servidor automaticamente. |
cors | Torna os recursos da API acessíveis na web. |
npm | Gerenciador de pacotes do Node.js. |
Mongodb | Banco de dados não relacional orientado a documentos. |
Mongo Atlas | Interface gráfica para verificar se os dados foram persistidos. |
Postman | Interface gráfica para realizar os testes dos protocolos http. |
jsonwebtoken | Dependência que implementa o protocolo JSON Web Token para segurança de dados. |
bcrypt | Biblioteca para encriptação de dados. |
dotenv | Dependência que gerencia as variáveis de ambiente. |
Swagger | Gera a documentação do projeto. O comando [swagger-autogen] permite a atualização automática. |
Heroku | Hospeda a documentação. |
📁 Projeto-Cirandeiras
|
|- 📁 src
| |
| |- 📁 controllers
| |- 📑 cirandeirasController.js
| |- 📑 colaboradorasController.js
| |- 📑 ritmosController.js
|
| |- 📁 database
| |- 📑 mongooseConect.js
|
| |- 📁 models
| |- 📑 cirandeirasModel.js
| |- 📑 colaboradorasModel.js
| |- 📑 ritmosModel.js
|
| |- 📁 routes
| |- 📑 cirandeirasRoutes.js
| |- 📑 colaboradorasRoutes.js
| |- 📑 index.js
| |- 📑 ritmosRoutes.js
|- 📑 app.js
|
|- 📁 swagger
| |- 📑 swagger_output.json
|
|- 📑 .env
|- 📑 .env.example
|- 📑 .gitignore
|- 📑 package-lock.json
|- 📑 package.json
|- 📑 Procfile
|- 📑 README.md
|- 📑 server.js
|- 📑 swagger.js
Vamos nos inspirar na vida e trajetória de cada Cirandeira? 💃🏾 Use a API das Cirandeiras para listar todas as mulheres cadastradas e acessar as seguintes informações:
- Nome
- Idade
- Estado onde mora e realiza suas atividades
- Ritmo
- Trajetória dentro dessa tradição cultural
- Luta Coletiva e reivindicações atreladas às suas atividades
- Episodio do Podcast para você ouvir e se inspirar na história dessa mulher!
⏩ Podemos filtrar essa lista por estado ou ritmo.
Por falar em ritmo...
Vamos aprender mais sobre os ritmos brasileiros? Certamente você irá se surpreender com alguns que nunca ouviu falar!
Use a API de Ritmos para acessar as seguintes informações 🎵:
- Nome do ritmo
- Descrição
- Origem étnica
- Contexto histórico do surgimento desse ritmo
- Brincadeiras e danças atreladas à essa expressão cultural
- Região onde surgiu
- Instrumentos utilizados
⏩ Podemos filtrar essa lista por região ou origem étnica.
Este projeto é um CRUD completo, portanto é possível executar também as seguintes funcionalidades:
- 📑 Cadastrar novas cirandeiras e novos ritmos no banco de dados
- 📑 Atualizar os dados das cirandeiras e dos ritmos
- 📑 Deletar o registro de uma cirandeira ou de um ritmo
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
POST | /cirandeiras | Cadastra uma nova cirandeira | 201 | ✔️ |
GET | /cirandeiras | Lista todas as cirandeiras cadastradas | 200 | ❌ |
GET | /cirandeiras/?estado= | Utiliza o mesmo endpoint para filtrar por estados | 200 | ❌ |
GET | /cirandeiras/?ritmo= | Utiliza o mesmo endpoint para filtrar por ritmos | 200 | ❌ |
PATCH | /cirandeiras/:id | Atualiza os dados de uma cirandeira pelo ID | 200 | ✔️ |
DELETE | /cirandeiras/:id | Remove o cadastro de uma cirandeira pelo ID | 200 | ✔️ |
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
POST | /ritmos | Adiciona um ritmo novo | 201 | ✔️ |
GET | /ritmos | Lista todos os ritmos cadastrados | 200 | ❌ |
GET | /ritmos/?regiao= | Utiliza o mesmo endpoint para filtrar por regiao | 200 | ❌ |
GET | /ritmos/?origem= | Utiliza o mesmo endpoint para filtrar por origem | 200 | ❌ |
PATCH | /ritmos/:id | Atualiza os dados de um ritmo pelo ID | 200 | ✔️ |
DELETE | /ritmos/:id | Remove o cadastro de um ritmo pelo ID | 200 | ✔️ |
Para segurança dos dados deste projeto, as funções criar, atualizar e deletar, só podem ser executadas por colaboradoas autorizadas.
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
POST | /colaboradoras | Adiciona uma nova colaboradora | 201 | ✔️ |
GET | /colaboradoras | Lista todas as colaboradoras cadastradas | 200 | ❌ |
POST | /colaboradoras/login | Devolve o token de uma colaboradora | 200 | ✔️ |
DELETE | /colaboradoras/:id | Remove uma colaboradora | 200 | ✔️ |
Para executar este projeto, você deverá ter instalado na sua máquina o Node.js
Para executar este projeto, você deverá ter instalado na sua máquina o Node.js
Em seguida:
- Clone o projeto através do comando: $ git clone https://github.com/heloaaires/projeto-cirandeiras.git
- Digite no terminal o comando $ npm install
- Digite o comando $ npm start para executar o servidor
✔️ Para fazer testes no servidor local:
- Crie um arquivo .env na raiz do seu projeto e lembre-se de adicioná-lo ao seu .gitignore
- Utilize o arquivo .env.example para veririfcar as variáveis de ambiente necessárias.
- Inicialize a aplicação com o comando npm start na pasta raiz do projeto.
✔️ ✔️ Para rodar remotamente:
Utilize a URL do Heroku para fazer as requisições GET conforme as rotas descritas acima, ou apenas clique nos links abaixo. Lembre-se de passar um valor quando uma chave estiver declarada na URL. 😉
💠 Integrar uma página dedicada à cada Cirandeira, onde teremos:
🪡 Agenda de apresentações de cada artista
🪡 Loja virtual de produtos ou outra ferramenra que possa viabilizar recursos
(infelizmente, apesar de toda a riqueza cultural que produzem, é comum que estas mulheres enfrentem dificuldades financeiras)
💠 Mural de artistas já falecidas para homenagear e guardar legados como o da inesquecível Zabé da Loca
Este projeto foi desenvolvido por Heloá Aires em parceria com o Cirandeiras Podcast 🎶.
Achou interessante e quer contrubuir para o desenvolvimento de outras funcionalidades?
Escreve para a gente e vamos cirandar juntas! 💜
🤩 Projeto realizado com os recursos aprendidos no bootcamp: