Este microservicio se encarga de gestionar la localización de los usuarios y los lugares favoritos dentro de la aplicación WhereWeApp. Utiliza WebSocket con STOMP para la actualización en tiempo real de la ubicación y el estado de los lugares favoritos de los usuarios.
- Dominio: Gestión de ubicaciones y lugares favoritos
- Base de datos: MongoDB
- Framework: Spring Boot
- Tecnología de comunicación: WebSocket + STOMP
- Arquitectura: RESTful + WebSocket
- Transporte: HTTP y WebSocket para la comunicación en tiempo real
Los endpoints se agrupan bajo el prefijo
/api/v1/favoritePlacespara lugares favoritos y bajo/api/v1/users/push-tokenpara la gestión de tokens de notificación.
Envía la ubicación de un usuario a través de WebSocket (STOMP). Este endpoint no es accesible directamente en Swagger, ya que utiliza WebSocket.
Los mensajes se envían a
/app/locationy se distribuyen en/topic/location/{groupId}.
Agrega un lugar favorito para un grupo mediante WebSocket. Similar al anterior, este endpoint no es accesible directamente en Swagger, pero el mensaje es enviado a /app/addFavoritePlace y transmitido a /topic/favoritePlace/{groupId}.
Permite editar un lugar favorito para un grupo a través de WebSocket. Los mensajes se envían a /app/editFavoritePlace y se distribuyen a /topic/favoritePlaceEdited/{groupId}.
Elimina un lugar favorito mediante WebSocket. Los mensajes se envían a /app/deleteFavoritePlace y se distribuyen a /topic/favoritePlaceDeleted/{groupId}.
Obtiene todos los lugares favoritos asociados a un grupo.
Edita un lugar favorito de forma tradicional utilizando HTTP.
Elimina un lugar favorito mediante HTTP utilizando su ID.
Guarda un token de notificación push para un usuario.
{
"groupId": "group-id",
"userId": "user-id",
"latitude": 40.7128,
"longitude": -74.0060,
"timestamp": "2025-04-04T12:00:00Z"
}{
"id": "507f1f77bcf86cd799439011",
"placeName": "Central Park",
"latitude": 40.7851,
"longitude": -73.9683,
"groupId": "group-id",
"radius": 100,
"timestamp": "2025-04-04T12:00:00Z"
}Configuración de WebSocket y STOMP disponible en WebSocketConfig.java, que habilita los mensajes a través del endpoint /ws para clientes.
Las variables de entorno se cargan desde un archivo .env ubicado en la raíz del proyecto mediante DotEnvConfig.
Configuración de Firebase para manejar notificaciones push disponible en FirebaseConfig.java.
mvn clean verifyReporte HTML generado en:
/target/site/jacoco/index.html
Incluye:
- Cobertura de JaCoCo
- Reglas de calidad
- Análisis estático (bugs, code smells, duplicación)
- Todos los servicios de ubicación y lugares favoritos están basados en WebSocket con STOMP, lo que permite una actualización en tiempo real de la información entre los miembros de un grupo.
- Se utilizan notificaciones push para alertar a los usuarios cuando ingresan o salen de lugares favoritos.
- El servicio está documentado con Swagger/OpenAPI y cubierto con pruebas automatizadas usando JaCoCo.
- Team Picada ARSW 2025
- 📧 picadaarsw2025@outlook.com

