Este proyecto es una plataforma de gestión de ganado y zonas, con frontend en Next.js y backend con endpoints RESTful. Utiliza MongoDB con capacidades geoespaciales para búsquedas avanzadas.
En la raíz del proyecto, ejecuta:
docker-compose up --build
Esto construirá y levantará los contenedores definidos en docker-compose.yml.
- Gestión de ganado: Alta, baja, modificación y búsqueda de vacas.
- Gestión de zonas: Alta, baja, modificación y búsqueda de zonas geográficas.
- Búsqueda geoespacial: Puedes buscar vacas dentro de un radio usando geosearch de MongoDB, tanto desde la interfaz como desde la API.
- Monitoreo de contenedores: Daemons en Bash monitorean el estado de los contenedores y notifican por Telegram si hay problemas.
- En la sección "Ganado", puedes buscar vacas por radio usando el botón destacado "Buscar vacas". Esto abre un modal donde ingresas latitud, longitud y radio (en km). La búsqueda se realiza usando geosearch en MongoDB.
- Endpoint general:
/api/cattle?lat=LAT&lng=LNG&radius=RADIO - Endpoint dedicado:
/api/cattle-geosearch?lat=LAT&lng=LNG&radius=RADIO
Ambos endpoints devuelven las vacas dentro del radio especificado, usando $geoWithin y $centerSphere de MongoDB.
- Accede al contenedor de MongoDB:
docker exec -it mongo bash
- Inicia el shell de MongoDB:
mongosh
- Selecciona la base de datos:
use livestock-management
- Muestra las colecciones:
show collections
- Consulta una colección:
db.<nombre-de-la-coleccion>.find()
Hay scripts Bash en daemon/ que monitorean los contenedores y envían alertas a Telegram si alguno falla. Puedes probar el envío manual de mensajes con el script interactivo:
python3 send_telegram.py
Completa el mensaje y se enviará al chat configurado.
Los daemon se encargan de monitoriar a los contenedores.
Nota importante: Antes de copiar los servicios, revisá y modificá la ruta absoluta del script en el campo
ExecStart=de cada archivo.service. Para saber la ruta exacta, ejecutápwddentro de la carpetadaemony usá esa ruta en el archivo.
Ejemplo:
- Ejecutá en la terminal:
cd daemon
pwd
-
Copiá la ruta que te muestra y reemplazala en la línea
ExecStart=de los archivosmonitorCliente.serviceymonitorMongo.service. -
Luego, copiá los archivos de servicio:
cp ../daemon/monitorCliente.service /etc/systemd/system/monitorCliente.service
cp ../daemon/monitorMongo.service /etc/systemd/system/monitorMongo.service
- Recargá los servicios y activalos:
sudo systemctl daemon-reload
sudo systemctl start monitorCliente
sudo systemctl start monitorMongo
sudo systemctl enable monitorCliente
sudo systemctl enable monitorMongo
sudo systemctl status monitorCliente
sudo systemctl status monitorMongo
Asegúrate de editar la ruta de ExecStart en los archivos .service si tu ruta local es diferente.
- Si usas búsquedas geoespaciales, asegúrate de tener un índice 2dsphere en el campo
positionde la coleccióncattle. - El archivo
send_telegram.pypermite enviar mensajes personalizados a tu bot de Telegram. - El sistema está pensado para ser usado y probado en Linux.