Public
Roteiro de cafés Recife & RMR — SQLite + fotos no servidor
cafessqlite
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Roteiro de cafés para dois explorarem, com visitas, notas, favoritos e fotos persistidos no servidor (Val Town) — disponível de qualquer aparelho.
Nada de um único bloco que possa ser sobrescrito: cada café visitado e cada café custom é uma linha própria no SQLite do projeto, e o servidor sempre faz merge ao salvar — um POST vindo de um aparelho/aba com memória vazia nunca apaga visitas existentes.
Chave no SQLite (kv) | Guarda |
|---|---|
visit:<id> | dados da visita de um café (nota, data, favorito, photo_key) |
custom:<n> | um café custom por linha |
meta | contadores (ex.: lastBackupCount) |
blob cafe:<id> | foto de cada visita |
Endpoints:
GET /api/state→ estado completo (montado das linhas)POST /api/visit→ upsert de uma visita (aceitaphoto_base64→ blob)POST /api/state→ merge (nunca apaga visitas)GET /api/photo/<key>→ serve a foto
Um cron diário (backup-cron.ts) tira um instantâneo completo do estado e grava no blob do projeto como backup/snapshot-<ISO>.json, mantendo os 30 mais recentes (retenção automática).
- Criar snapshot:
backup.ts→runBackup()(já testado e funcionando) - Listar snapshots:
restore.ts→listSnapshots() - Restaurar:
restore.ts→restoreFromBackup(<key>)— repõe visitas, custom e meta no SQLite. ⚠️ Sobrescreve; só usar em emergência.
Agendamento: 37 4 * * * UTC (≈ 01:37 Brasília), próximo em 2026-08-28 04:37 UTC.
main.ts— API + serve o app (endpoint HTTP)frontend.html— a interface (HTML/JS/CSS)backup.ts— lógica de snapshotbackup-cron.ts— cron diário que chamarunBackup()restore.ts— recuperação a partir de um snapshot
cafes, sqlite