Track gym workouts offline using a local SQLite database synced to Google Drive
Translation pending
AI summary · README
Sports & fitnessTypeScript · CSSGitHub @SergioMelladoMartinOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Un tracker de gimnasio minimalista, sin backend. La "base de datos" es literalmente un archivo SQLite de FitNotes (gymlog.fitnotes) que corre en el navegador con sqlite-wasm + OPFS y se sincroniza a la carpeta oculta appData de tu Google Drive. Es una PWA instalable y funciona offline. No hay servidor, ni cookies, ni datos en ningún sitio salvo tu propio Drive.Read the full README ↗
Un tracker de gimnasio minimalista, sin backend. La "base de datos" es
literalmente un archivo SQLite de FitNotes
(gymlog.fitnotes) que corre en el navegador con sqlite-wasm + OPFS y se
sincroniza a la carpeta oculta appData de tu Google Drive. Es una PWA
instalable y funciona offline.
[Google Drive appData] ←→ [OPFS] ←→ [sqlite-wasm en un Web Worker]
sync blob copia local consultas en vivo
No hay servidor, ni cookies, ni datos en ningún sitio salvo tu propio Drive.
static) + React islands (client:only)@sqlite.org/sqlite-wasm) sobre OPFSdrive.appdata)main → producción)Requiere Node ≥ 22.12.
npm install
npm run dev # http://localhost:4321
En desarrollo se carga un public/seed.fitnotes de ejemplo para no tener
que loguearse (en producción ese seed nunca se usa).
| Comando | Acción |
|---|---|
npm run dev | Servidor de desarrollo |
npm run build | Build estático a ./dist/ |
npm run preview | Previsualiza el build |
npm run export-json | Exporta el seed .fitnotes a JSON (script) |
Crea un .env con tu client ID de OAuth de Google:
PUBLIC_GOOGLE_CLIENT_ID=xxxxxxxx.apps.googleusercontent.com
El cliente OAuth necesita el scope https://www.googleapis.com/auth/drive.appdata
y, en la pantalla de consentimiento, añadir como usuarios de prueba a quien
vaya a usar la app (o publicarla) mientras esté en modo testing.
.fitnotes (o .db/.sqlite) desde Acceso
o Ajustes → Backup. Se migra el esquema a lo que la app espera y se sube a
Drive..fitnotes
compatible con la app oficial de FitNotes en Android.online, al volver a
la app). Si una subida llega a Drive pero se pierde la respuesta, el MD5
la reconoce como propia. Si otro dispositivo subió cambios mientras este
tenía series sin subir, gana la copia de Drive y la local se aparta en
Ajustes para restaurarla o descargarla.public/sw.js cachea la shell de la app y los assets; los datos viven en OPFS,
así que la app funciona sin conexión salvo la sincronización con Drive (que
requiere red). Instálala desde Ajustes → Instalar o el menú del navegador.