Skip to content

Latest commit

 

History

233 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cufa

Organizador académico para estudiantes universitarios

CaracterísticasEmpezandoScriptsRelease automáticaEstructura del proyectoModelo 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.

Características

  • 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.

Stack técnico

  • 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

Empezando

Requisitos

  • Node.js 20.19.5
  • Expo Go en tu dispositivo, o un emulador de Android/iOS configurado

Instalación

npm install

Ejecutar la app

npm start

Esto 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

Scripts

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.

Build de producción

Para generar el APK de producción manualmente con EAS Build:

eas build --platform android --profile production-apk

Release automática

El 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.0
git push --follow-tags

Qué hace:

  1. Instala las dependencias del proyecto con Node.js 20.19.5.
  2. Autentica eas-cli contra Expo usando el secret EXPO_TOKEN.
  3. Genera un .apk con el perfil production-apk (para instalación directa en un dispositivo).
  4. Genera un .aab con el perfil production (el formato que requiere Play Store).
  5. Crea una release de GitHub para el tag pusheado, adjuntando ambos archivos (cufa.apk y cufa.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.

Estructura del proyecto

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

Modelo de datos

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.

About

Organizador académico para estudiantes universitarios.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages