Requisitos previos
Antes de clonar el repositorio y compilar el proyecto es necesario disponer del siguiente software instalado y configurado en la máquina de desarrollo.
Entorno de desarrollo
| Herramienta | Versión mínima | Notas |
|---|---|---|
| Android Studio | Hedgehog (2023.1.1) o superior | Se recomienda la versión más reciente estable |
| JDK | 11 | Configurado como sourceCompatibility y targetCompatibility en el módulo :app |
| Gradle | 8.13 | Gestionado por el wrapper incluido en el repositorio (gradlew) |
| Android SDK (compileSdk) | 36 | Instalar desde el SDK Manager de Android Studio |
| Android SDK (minSdk) | 24 (Android 7.0 Nougat) | La aplicación no se instala en versiones anteriores |
| Kotlin | 2.0+ | Gestionado por el plugin kotlin.android declarado en build.gradle.kts |
Cuentas de servicio necesarias
El proyecto depende de dos backends externos que requieren cuentas activas:
Supabase
Se necesita un proyecto de Supabase con las tablas del esquema descritas en Base de datos. Las credenciales (SUPABASE_URL y SUPABASE_KEY) se declaran como constantes en AppConfig.kt. Para entornos de producción se recomienda moverlas a un fichero local.properties o a variables de entorno y no incluir los valores reales en el repositorio.
Firebase
Se necesita un proyecto de Firebase con el servicio Data Connect habilitado. El fichero google-services.json debe copiarse en app/google-services.json. Este fichero no debe subirse al repositorio si el proyecto es público.
Permisos requeridos por la aplicación
El AndroidManifest.xml declara los siguientes permisos:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
| Permiso | Tipo | Propósito |
|---|---|---|
INTERNET | Normal | Acceso a Supabase y Firebase |
ACCESS_NETWORK_STATE | Normal | Comprobación de conectividad |
POST_NOTIFICATIONS | Runtime (Android 13+) | Mostrar notificaciones de recordatorio de reservas |
SCHEDULE_EXACT_ALARM | Normal | Programar alarmas exactas para los recordatorios |
USE_EXACT_ALARM | Normal | Garantía adicional de exactitud de alarmas en API 33+ |
RECEIVE_BOOT_COMPLETED | Normal | Declarado para futura reprogramación de alarmas tras reinicio |
El permiso POST_NOTIFICATIONS se solicita en tiempo de ejecución desde MainActivity.onCreate() en dispositivos con Android 13 (API 33) o superior. En versiones anteriores el permiso se concede automáticamente. La aplicación sigue funcionando sin este permiso, pero no enviará notificaciones de recordatorio.
La conectividad de red es imprescindible para el funcionamiento de la aplicación ya que todas las operaciones de datos son remotas.