Base pessoal de flashcards com revisão espaçada simples. Monorepo com FastAPI + SQLite no backend e HTML/Alpine.js no frontend (sem build step).
flashCards/
├── apps/
│ ├── api/ # FastAPI + SQLModel + SQLite
│ └── web/ # index.html + app.js (Alpine.js + Tailwind via CDN)
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
topics: lista ordenada (ex:["frontend", "vue", "watch"]) — define a hierarquiaquestion: perguntaoptions: lista de stringscorrect_answer: índice da opção corretadifficulty:easy|medium|hard(definido pelo usuário ao revisar)next_review: próxima revisão (calculada com base na dificuldade)last_reviewed,created_at
Intervalos: easy = +7d, medium = +3d, hard = +1d. Errou = +4h.
pip install -r requirements.txt
uvicorn apps.api.main:app --reloadAbra http://localhost:8000.
docker compose up --buildDados persistem em volume nomeado flashcards_data.
- Aponte para este repo.
- Build pack: Dockerfile (raiz do projeto).
- Porta:
8000. - Adicione um volume persistente em
/app/data. - Deploy.
Variável opcional:
DATABASE_URL(defaultsqlite:////app/data/flashcards.db).
GET /api/cards?topic_path=frontend/vue— listarGET /api/cards/due?topic_path=...— pendentesPOST /api/cards— criarPUT /api/cards/{id}— editarDELETE /api/cards/{id}— excluirPOST /api/cards/{id}/review— body{difficulty, correct}GET /api/topics— árvore de tópicos com contagemGET /healthz
Docs interativas: /docs.