Trabajo práctico realizado para la materia Diseño de Sistemas en UTN FRBA, 2025.
Este proyecto modela un sistema de gestión de calendarios personales que permite a los usuarios organizar eventos únicos y recurrentes, recibir recordatorios y verificar si pueden llegar a tiempo a sus próximos compromisos. Se trabaja con principios de diseño orientado a objetos, tests unitarios, integración con servicios externos simulados (como mapas y notificaciones) y una interfaz de uso sencilla y extensible.
Incluye funcionalidades como solapamiento de eventos, cálculo de tiempo restante, recordatorios configurables y ubicación geográfica, todo probado con JUnit 5 y Mockito.
- ✅ Un usuario puede tener múltiples calendarios personales
- ✅ En cada calendario se pueden agendar múltiples eventos
- ✅ Cada evento registra: nombre, fecha y hora de inicio y fin, ubicación, y una lista de invitados
- ✅ Posibilidad de listar eventos entre dos fechas (para un calendario o un usuario)
- ✅ Consultar cuánto tiempo falta para un evento
- ✅ Verificar si dos eventos están solapados, y obtener con cuáles del calendario colisionan
- ✅ Soporte para eventos recurrentes diarios, semanales, mensuales o anuales
- ✅ Detección de si el usuario llega a tiempo al próximo evento según su ubicación actual y estimación de viaje
- ✅ Los eventos pueden tener múltiples recordatorios que se activan según el tiempo restante (por ejemplo, 10 minutos antes)
- Java 17
- Maven
- JUnit 5
- Mockito
src/main/java
: código fuente del sistema de calendariossrc/test/java
: tests unitarios e integración con mockspom.xml
: configuración de Maven y dependencias
mvn test