https://github.com/techabraao/flash-cards-rest-api
RESTful API for flashcard management, built with Python, Flask, SQLAlchemy, MySQL, and Docker.
https://github.com/techabraao/flash-cards-rest-api
docker flask marshmallow mysql postman python sqlalchemy unittest
Last synced: 3 months ago
JSON representation
RESTful API for flashcard management, built with Python, Flask, SQLAlchemy, MySQL, and Docker.
- Host: GitHub
- URL: https://github.com/techabraao/flash-cards-rest-api
- Owner: TechAbraao
- License: mit
- Created: 2025-07-14T20:22:43.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-07-19T00:18:57.000Z (8 months ago)
- Last Synced: 2025-07-19T04:59:04.416Z (8 months ago)
- Topics: docker, flask, marshmallow, mysql, postman, python, sqlalchemy, unittest
- Language: Python
- Homepage:
- Size: 4.19 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Flash Cards REST API
### Tecnologias

### Funcionalidades
- __Gerenciamento de Decks:__ criar, listar, atualizar, excluir e visualizar detalhes de decks de flashcards.
- __Gerenciamento de Flashcards:__ criar flashcards, associá-los a decks, buscar aleatoriamente ou individualmente, atualizar e remover flashcards.
## Instalação
```bash
# Clone o repositório já trazendo o submódulo templates
git clone --recurse-submodules https://github.com/TechAbraao/flash-cards-rest-api.git
# Acesse o diretório do projeto
cd flash-cards-rest-api
# (Opcional) Se esqueceu do --recurse-submodules, inicialize o submódulo manualmente
git submodule update --init --recursive
# Crie o ambiente virtual
python3 -m venv .venv
# Ative o ambiente virtual (Linux ou Mac)
source .venv/bin/activate
# Ou, se estiver no Windows
# .venv\Scripts\activate
# Instale as dependências do projeto
pip install -r src/requirements.txt
# Acesse a pasta de código-fonte
cd src
# Rode a aplicação Flask
flask run
```
## Atualizando o submódulo templates (quando houver alterações)
```bash
# Acesse a pasta do submódulo
cd src/app/templates
# Busque as últimas alterações do repositório de templates
git pull origin main # ou a branch correta
# Volte para o repositório principal
cd ../../../..
# Adicione e commite a atualização do submódulo
git add src/app/templates
git commit -m "Atualiza submódulo templates"
git push origin main
```
## Contrato e Definições da API
### Endpoints
#### Decks
| Método | URL | Descrição |
| ------ | --------------------- | ------------------------------- |
| GET | `/api/decks` | Listar todos os decks |
| POST | `/api/decks` | Criar um novo deck |
| GET | `/api/decks/` | Obter detalhes de um deck |
| PUT | `/api/decks/` | Atualizar informações de um deck |
##### Exemplo de Payload para Decks
```json
{
"title": "História - Revolução Francesa Atualizado",
"description": "Deck atualizado com mais flashcards sobre a Revolução Francesa.",
"tags": ["história", "revolução", "frança"]
}
```
#### Cards
| Método | URL | Descrição |
| ------ | ----------------------------------- | ----------------------------------- |
| POST | `/api/decks//cards` | Adicionar card ao deck |
| GET | `/api/decks//cards` | Buscar todos os cards de um deck |
| GET | `/api/decks//cards/random` | Buscar card aleatório do deck |
| GET | `/api/cards/` | Buscar card específico |
| PUT | `/api/cards/` | Atualizar card específico |
| DELETE| `/api/cards/` | Remover card |
#### Exemplo de Payload para Cards
```json
{
"question": "Quando ocorreu a Revolução Francesa?",
"answer": "Em 1789.",
"tags": ["história", "datas", "revolução"]
}
```
#### Formato das Respostas da API:
Todas as respostas da API seguem o seguinte padrão:
- Sucesso
```json
{
"success": true,
"message": "Mensagem descritiva da operação",
"data": { /* objeto ou lista retornada */ }
}
```
- Erro
```json
{
"success": false,
"message": "Mensagem de erro",
"error": { /* objeto ou lista de erros */ }
}
```
> **Observações:**
> - O campo `error` contém o objeto de erro ou lista de erros.
> - O campo `message` descreve o resultado da operação ou o motivo do erro.