Skip to content
gusplayerPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Vesper

App de foco y asignación de tiempo con la forma de Brick (ADR-0016) y capacidades reales detrás de src/platform/ (ADR-0017): SQLite, notificaciones, Salud, Live Activity y bloqueo de apps. Corre en simulador y emulador; nada se ha verificado aún en un teléfono.

Pomodoro que respeta tu tiempo, hábitos que se verifican solos, y un recordatorio honesto de cuánta vida te queda.

Documentación

Documento Para qué
CLAUDE.md Reglas de trabajo para Claude Code
docs/PRD.md Qué se construye y qué no
docs/DESIGN_SYSTEM.md Tokens, tipografía, componentes
docs/PROTOTYPE_GUIDE.md Cómo se escribe una pantalla del prototipo
docs/ARCHITECTURE.md Stack, estructura, flujo de datos
docs/DATA_MODEL.md Esquema de base de datos
docs/ROADMAP.md Fases y criterios de salida
docs/STATUS.md Qué existe, dónde se verificó y qué falta. Empieza aquí
docs/SPRINT_01.md Tareas del primer prototipo (histórico)
docs/PLATFORM_IOS.md Screen Time API, entitlement, límites
docs/PLATFORM_ANDROID.md Usage stats, bloqueo, políticas de Play
docs/PLAY_DECLARATIONS.md Declaraciones de Google Play para el módulo de bloqueo
docs/STORE_LISTING.md Ficha de Google Play
docs/adr/README.md Índice de decisiones de arquitectura

Empezar

Expo Go no sirve: hay seis módulos nativos (SQLite, notificaciones, Salud, widgets, Tiempo de uso en iOS y el módulo local modules/vesper-blocking en Android), así que hace falta un dev build (ADR-0001, ADR-0017, ADR-0019). postinstall aplica el parche de patches/ a react-native-health. Con una cuenta gratuita de Apple, VESPER_FREE_TEAM=1 deja fuera widgets y Tiempo de uso (app.config.js).

npm install

iOS

npx expo prebuild --platform ios
npx expo run:ios --device "iPhone 17 Pro"

Después del primer build, el ciclo normal es npx expo start --dev-client.

Android

Requiere el SDK de Android y Java 17. Si ANDROID_HOME no está en el entorno:

export ANDROID_HOME=$HOME/Library/Android/sdk
npx expo prebuild --platform android
npx expo run:android --device Pixel_6_API_34

--device toma el nombre del AVD, no el id de adb: emulator-5554 falla con Could not find device with name. Los AVDs disponibles salen con $ANDROID_HOME/emulator/emulator -list-avds.

El primer build de Android compila Kotlin de op-sqlite, pager-view y expo-modules-core, y tarda bastante más que el de iOS.

Cada vez que el emulador arranca hace falta abrirle el puerto de Metro, o la app queda esperando el bundle para siempre:

$ANDROID_HOME/platform-tools/adb reverse tcp:8081 tcp:8081

/ios y /android están en .gitignore: son carpetas generadas por prebuild.

Las extensiones de Tiempo de uso

targets/ sí se versiona, y es código nuestro: el plugin de react-native-device-activity ya no lo copia en cada build (ADR-0054). Al subir ese paquete, trae sus plantillas nuevas y revisa el diff antes de commitear:

COPY_TO_TARGET_FOLDER=1 npx expo prebuild --platform ios

Actualizaciones por el aire

Un cambio que solo toca JS o assets llega a los builds de tienda sin pasar por revisión (ADR-0052):

eas update --channel production --message "Arregla el cierre de la semana"

Llega a quien abra la app, en el arranque en frío siguiente. Todo lo nativo pide build: módulos, targets/, patches/, plugins, permisos o una dependencia nativa. El runtime es un fingerprint de todo eso, así que una actualización nunca cae sobre un binario que no la soporta. Para saber si el runtime cambió desde el último build:

npx expo-updates fingerprint:generate --platform ios

Una actualización que trae una migración solo agrega, y no se le hace rollback: se corrige con otra.

Si npm install <paquete> falla

.npmrc fija legacy-peer-deps=true. El árbol de SDK 57 tiene un conflicto de peers con react-dom que hace fallar cualquier instalación sin ese flag.

Tests

npm test                     # vitest sobre src/**/*.test.ts: domain, lib, db, data, i18n, features, platform
npx vitest run --coverage    # lo mismo, con cobertura; falla bajo el 80%
npm run typecheck            # obligatorio antes de cerrar cualquier tarea

Los módulos puros se testean con vitest; los repositorios y las queries, contra un handle falso de base de datos, sin módulo nativo. Los stores, las pantallas, los componentes y la plataforma se verifican corriendo la app (docs/STATUS.md, "Cómo probar").

Estado

Completa en código, verificada en simulador y emulador, pendiente de teléfonos reales y del entitlement de Family Controls. Ver docs/STATUS.md; el plan por fases, en docs/ROADMAP.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages