ivanDev
Custodia Compartida

Custodia Compartida

Iván Bazaga

Iván Bazaga

Desarrollador Junior

Demo access

Tarjeta de acceso de prueba

Aquí tienes las credenciales asignadas para que puedas entrar al proyecto de demostración.

Usuario de prueba

test@usuario.com

Contraseña de prueba

12345678

Usa estas credenciales solo para pruebas o demostraciones del proyecto.

PHP JavaScript Tailwind MySQL Supabase Node.js Apache Git Leaflet Android_Studio Google_Chrome Cloudflare

# Calendario Custodia Compartida

Aplicación web para gestionar calendarios de custodia compartida. Permite a cada familia/usuario tener su propio calendario, planificar días de custodia, configurar los nombres de los progenitores (padre/madre/tercero) y compartir/controlar accesos mediante códigos. Incluye panel administrativo para gestionar usuarios y calendarios.

# Tabla de contenidos

# Estado

En desarrollo. Lista de funcionalidades implementadas y parcheadas localmente.

# Características

  • Calendarios por usuario y por familia (cada calendario es independiente)
  • CRUD de días de custodia (API REST interna)
  • Configuración por calendario: nombres de padre, madre y tercero
  • Gestión de usuarios y calendarios desde panel admin
  • Control de sesiones y autenticación básica
  • Scripts de diagnóstico y migración incluidos para entornos locales

# Requisitos

  • Apache 2.4+, PHP 8.x (extensiones PDO/MySQL), MySQL/MariaDB
  • Composer (opcional para dependencias PHP si se añaden)
  • Navegador moderno (Chrome/Firefox) para la interfaz

# Instalación (entorno local)

  1. Clona el repositorio dentro de tu DocumentRoot de Apache (ej. C:\Apache24\htdocs):
git clone 
cd Calendario-Custodia
  1. Crea la base de datos e importa el esquema:
-- usa el archivo SQL incluido
mysql -u root -p calendario_custodia < sql/install.sql
  1. Copia y ajusta el archivo .env si es necesario (BASE_URL, credenciales DB).
  2. Asegúrate de que Apache sirve el directorio y que mod_rewrite está activo.

# Uso

Abre en el navegador:

http://localhost/Calendario-Custodia/

Rutas útiles:

  • /auth/registro — registrar nuevo usuario
  • /auth/login — iniciar sesión
  • / — vista del calendario (necesita autenticación)
  • /admin — panel de administración (solo usuarios con rol admin)

API internas:

  • views/api — endpoint principal para CRUD de dias_custodia y config (?config=1)
  • app/controllers/admin-api-calendarios.php — API admin para asignar/remover usuarios a calendarios

# Configuración

Principales variables en .env:

  • BASE_URL — base URL del proyecto (ej. http://localhost/Calendario-Custodia)
  • Variables de conexión a base de datos (definidas en app/database/db.php o .env según configuración)

Archivo SQL principal: sql/install.sql (tablas: usuarios, calendarios, usuarios_calendarios, config, dias_custodia).

# Desarrollo

  • Sigue el flujo habitual de Git para crear ramas y PRs.
  • Respeta convenciones de nombres y estructura de PHP/JS del proyecto.

Scripts de ayuda incluidos (local):

  • debug_db.php — muestra tablas y relaciones (ubicado en la raíz del proyecto)
  • migrate_calendarios.php — crea calendarios faltantes para usuarios existentes
  • validate_calendarios.php — valida/crea calendarios para garantizar que cada usuario tenga uno propio

Estos scripts son utilitarios para desarrollo local y debugging; no deben exponerse en producción sin protección.

# Pruebas

No existe suite automática incluida. Para verificar manualmente:

  • Registrar dos usuarios distintos y comprobar que cada uno tenga su propio calendario y configuración.
  • Usar debug_db.php y validate_calendarios.php para inspeccionar/crear calendarios en desarrollo.

# Contribuir

  1. Abre un issue describiendo la mejora o bug.
  2. Crea una rama feat/... o fix/..., implementa y abre PR con descripción clara.

# Licencia

Por defecto incluye LICENSE.md en el repositorio. Revisa el archivo para conocer los términos.

# Autor

Iván Bazaga — desarrollo y mantenimiento.

Contacto y referencias están en el repositorio (sección Autor previa). Si quieres, actualizo la sección de autor con detalles adicionales.