Organizador académico para estudiantes universitarios
Características • Empezando • Scripts • Release automática • Estructura del proyecto • Modelo de datos
Cufa es una aplicación móvil para Android que ayuda a un estudiante universitario a organizar su carrera por cuatrimestres: materias, trabajos prácticos, evaluaciones, temas a repasar y notas, todo pensado para quien además de estudiar trabaja o tiene poco tiempo disponible.
Note
La aplicación funciona completamente sin conexión a internet. Todos los datos se guardan de forma local en el dispositivo.
- Carrera: onboarding inicial para cargar los datos de la carrera y lista de asignaturas asociadas.
- Asignaturas: creación, edición y eliminación, con horarios opcionales y cuenta regresiva mientras dura la clase.
- Evaluaciones: parciales, finales, recuperatorios, trabajos prácticos y presentaciones, con fecha, enlace, notas y lista de temas. Se ordenan por proximidad y se resaltan con un código de colores según el tiempo restante.
- Notas: notas libres o asociadas a una asignatura, con listado resumido y detalle editable.
- Pantalla principal: muestra primero las evaluaciones próximas y luego las asignaturas de la carrera.
Important
La versión actual soporta una sola carrera activa. El soporte para múltiples carreras está planeado para una versión futura.
- Expo (React Native) con Expo Router para la navegación
- NativeWind (Tailwind CSS) para los estilos
- Zustand para el estado global
- Persistencia local mediante patrón repository, sin dependencia de backend
npm installnpm startEsto abre el bundler de Expo. Desde ahí podés escanear el código QR con Expo Go o elegir una plataforma específica:
npm run android
npm run ios
npm run web| Comando | Descripción |
|---|---|
npm start |
Inicia el servidor de desarrollo de Expo |
npm run android |
Compila y ejecuta la app en Android |
npm run ios |
Compila y ejecuta la app en iOS |
npm run web |
Ejecuta la app en el navegador |
npm run lint |
Corre el linter del proyecto |
npm run reset-project |
Reinicia la plantilla base de Expo Router |
Tip
Corré npx expo-doctor de tanto en tanto para verificar que las dependencias del proyecto coincidan con las que espera el SDK de Expo instalado.
Para generar el APK de producción manualmente con EAS Build:
eas build --platform android --profile production-apkEl workflow .github/workflows/release.yml automatiza la generación de builds y su publicación como release de GitHub.
Disparador: se ejecuta al pushear un tag que empiece con v (por ejemplo v1.0.0):
npm version patch # 1.0.0 -> 1.0.1
npm version minor # 1.0.0 -> 1.1.0
npm version major # 1.0.0 -> 2.0.0git push --follow-tagsQué hace:
- Instala las dependencias del proyecto con
Node.js 20.19.5. - Autentica
eas-clicontra Expo usando el secretEXPO_TOKEN. - Genera un
.apkcon el perfilproduction-apk(para instalación directa en un dispositivo). - Genera un
.aabcon el perfilproduction(el formato que requiere Play Store). - Crea una release de GitHub para el tag pusheado, adjuntando ambos archivos (
cufa.apkycufa.aab).
Important
El workflow necesita el secret EXPO_TOKEN configurado en el repositorio (Settings → Secrets and variables → Actions). Se genera desde expo.dev/settings/access-tokens.
Note
El .aab queda adjunto a la release, pero no se sube automáticamente a Play Store. Subirlo es un paso manual, o se puede automatizar más adelante agregando eas submit al workflow.
app/
├── app # Rutas de Expo Router
│ └── (tabs) # Navegación principal por tabs
├── assets # Íconos e imágenes
├── components # Componentes de UI por dominio (evaluation, note, subject, ui)
├── constants # Constantes compartidas
├── hooks # Hooks personalizados
├── lib # Utilidades (fechas, rangos de semana, etc.)
├── stores # Estado global con Zustand
└── types # Tipos de dominio
La aplicación gira en torno a cuatro entidades: Career, Subject, Note y Evaluation. El detalle completo de los campos y las reglas de negocio (asociación obligatoria de evaluaciones a una asignatura, código de colores por proximidad, etc.) está documentado en PRODUCT.md.