Skip to content

Repository files navigation

DaleFocus

DaleFocus reduce la procrastinacion: toma una tarea difusa, detecta tu barrera emocional y la convierte en un plan accionable con IA + Pomodoro + metricas.

Elevator Pitch (15s)

DaleFocus combina un atomizador IA que devuelve JSON estructurado, un loop de dopamina (accion -> sesion -> recompensa) y un dashboard con metricas de enfoque (Focus Index, Time-to-Action y Momentum) para pasar de "no se por donde empezar" a "ya avance" en minutos.

Como Funciona (Demo Path 60s)

  1. Login: el usuario entra con Firebase Auth (email/password).
  2. Check-in emocional: selecciona su barrera (overwhelmed, uncertain, bored, perfectionism).
  3. Escribe tarea -> Atomizar: atomizeTask llama OpenAI y devuelve JSON con pasos.
  4. Ejecuta pasos + Pomodoro: el usuario inicia foco con temporizador y registra sesion.
  5. Completa sesion -> recompensa: completeSession guarda la sesion y generateReward puede generar refuerzo motivacional.
  6. Dashboard -> metricas: getUserMetrics entrega Focus Index, TTA, Momentum y barreras.

Nota de estado actual: el flujo visual existe; la UI de login y el calculo real de metricas siguen en progreso (ver Docs/03_Metrics.md).

Diferenciadores Para El Reto

  • Atomizador Core: salida JSON accionable, no texto largo.
  • Flujo circular: accion pequena -> progreso visible -> motivacion -> siguiente accion.
  • Analitica orientada a habitos: Focus Index, Time-to-Action, Momentum.
  • Barreras emocionales como input estructural del plan, no solo como etiqueta.

Arquitectura (Alto Nivel)

[React + Vite + Tailwind]
         |
         | httpsCallable (Firebase SDK, auth automatica)
         v
[Cloud Functions Gen2 - onCall (Callable)]
   | atomizeTask / completeSession / generateReward / getUserMetrics
   |
   +--> [Cloud Firestore]
   |
   +--> [OpenAI Chat Completions]

Modelo De Datos (Alto Nivel)

  • users/{uid}: perfil del usuario, personalidad y config Pomodoro.
  • tasks/{taskId}: tarea atomizada, barrera, estrategia y estado.
  • steps/{stepId}: pasos atomizados por tarea.
  • sessions/{sessionId}: sesiones Pomodoro completadas/interrumpidas.
  • metrics/{userId}/daily/{date}: reservado por reglas; aun no persistido por funciones.

Detalle completo en Docs/02_DataModel.md.

Seguridad

  • Firestore Rules: ownership por usuario (request.auth.uid) para users, tasks, steps, sessions y metrics.
  • Callable Functions (onCall): Firebase SDK valida automaticamente el token de auth. El userId se deriva de request.auth.uid en el servidor (nunca enviado por el cliente).
  • Pendiente en backend: rate limiting y endurecer validaciones de negocio adicionales.

Setup Local

Requisitos

  • Node.js 20+
  • npm
  • Firebase CLI (npm i -g firebase-tools)

1) Frontend

cd frontend
npm install
cp .env.example .env
# Completar VITE_FIREBASE_*
npm run dev

2) Functions (nuevo terminal)

cd functions
npm install
cp .env.example .env
# OPENAI_API_KEY=...
npm run serve

Variables de entorno

Archivo Variable Requerida Uso
frontend/.env VITE_FIREBASE_API_KEY Si Firebase Web SDK
frontend/.env VITE_FIREBASE_AUTH_DOMAIN Si Firebase Auth
frontend/.env VITE_FIREBASE_PROJECT_ID Si Firebase project
frontend/.env VITE_FIREBASE_STORAGE_BUCKET Si Firebase Storage config
frontend/.env VITE_FIREBASE_MESSAGING_SENDER_ID Si Firebase config
frontend/.env VITE_FIREBASE_APP_ID Si Firebase config
functions/.env OPENAI_API_KEY Si Llamadas OpenAI en atomizeTask y generateReward

Deploy

# Build frontend
cd frontend
npm run build
cd ..

# Deploy (hosting + functions + firestore)
firebase deploy --only hosting,functions,firestore:rules,firestore:indexes

Gobernanza y Definition of Done

  • Cualquier pantalla nueva debe usar UI primitives (Button, Input, Card, Badge) del Design System v0.
  • Prohibido red-* / green-* / blue-* / amber-* en código nuevo. Usar tokens semánticos.
  • Cambios de alto impacto (schema, auth, rules, DS tokens, contexts) requieren mini-RFC + aprobación del Owner antes de código.
  • Flujo obligatorio: Brief → Plan → Approval Gate → Build → Audit → Close. Ver AGENTS.md y WORKFLOW.md.

Roadmap Corto (Post-Reto)

  • Cerrar login/register UI en frontend (AuthContext ya implementado).
  • Implementar calculo real de metricas en getUserMetrics.
  • Conectar generateReward en el timer para mostrar recompensa en tiempo real.
  • Agregar rate limiting por usuario para atomizeTask.

Documentacion

About

🚀 Vence la procrastinación con DaleFocus. La app de productividad para jóvenes en LatAm que combina técnica Pomodoro, división de tareas asistida por IA y micro-recompensas motivadoras. ¡Pasa del agobio al control total! 🍅✨

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages