Skip to content

Mapa para dar mayor accesibilidad a ubicación de salas, baños y puntos de interés en los distintos campus de la UC

License

Notifications You must be signed in to change notification settings

open-source-uc/UbiCate-v2

Repository files navigation


banner

Ubícate UC

DescripciónUsoContribuirCréditosSoporteLicencia


Descripción

Proyecto Open Source desarrollado como un buscador de salas en los campus de la Pontificia Universidad Católica de Chile, que permite a los estudiantes encontrar y localizar rápidamente en un mapa dinámico.

Los datos iniciales del proyecto son sacados de almapp/uc-maps-seeds

(volver arriba)

Query Params

Para centrar el mapa o la ubicación en el formulario en un campus específico, se puede agregar un parámetro en la URL con el nombre del campus:

https://ubicate.osuc.dev/map?campus={Nombre campus}
https://ubicate.osuc.dev/form-geo?campus={Nombre campus}

Donde {Nombre campus} puede ser:

  • SanJoaquin
  • CasaCentral
  • Oriente
  • LoContador
  • Villarrica

Además se puede centrar el mapa en la ubicación de una sala dado su identificador

https://ubicate.osuc.dev/map?place={Id sala}

Donde {Id sala} puede ser:

  • B12

Developing

Instalación

Agregar Api Key pública de Mapbox a variable de entorno en archivo .env.local Agregar la URL base del proyecto, actualmente es https://ubicate.osuc.dev/

Important

Debe llamarse .env.local

NEXT_PUBLIC_MAPBOX_TOKEN = <API_KEY>
NEXT_PUBLIC_BASE_URL = <BASE_URL> // Opcional, en producción obligatorio
GITHUB_TOKEN_USER = <TOKEN_USER> // Opcional, en producción obligatorio
GITHUB_USER_EMAIL = <EMAIL> // Opcional, en producción obligatorio
GITHUB_BRANCH_NAME = <EXISTING_BRANCH> // Opcional, en producción obligatorio
API_UBICATE_SECRET = <API_UBICATE_SECRET> // Opcional, en producción obligatorio

Instalar dependencias

npm install

Scripts Disponibles

npm run dev

Inicia el servidor de desarrollo utilizando Turbopack para acelerar el proceso de desarrollo y habilita la inspección del código con NODE_OPTIONS='--inspect'.
Uso:

npm run dev

npm run build

Compila la aplicación para producción, optimizándola para su implementación.
Uso:

npm run build

npm run pages:build

Usa @cloudflare/next-on-pages para generar una versión de la aplicación compatible con Cloudflare Pages.
Uso:

npm run pages:build

npm run preview

Compila la aplicación con pages:build y la previsualiza localmente utilizando wrangler pages dev. Ideal para probar cambios antes de la implementación.

Note

Este comando es especialmente útil para identificar problemas antes de la implementación en Cloudflare Pages. Por ejemplo, ha permitido detectar errores como el Error 500 mencionado más adelante en este documento.

Uso:

npm run preview

npm run deploy

Compila la aplicación con pages:build y la implementa en Cloudflare Pages usando wrangler pages deploy.
Uso:

npm run deploy

npm run start

Inicia la aplicación previamente construida en modo producción usando Next.js.
Uso:

npm run start

npm run lint

Ejecuta el linter de Next.js para identificar errores y problemas de estilo en el código.
Uso:

npm run lint

npm run lint:fix

Ejecuta el linter y corrige automáticamente los problemas solucionables de forma segura.

Note

Asegúrate de ejecutar este comando antes de realizar una build o subirlo a cloudflare, ya que de lo contrario el build podría fallar.

Uso:

npm run lint:fix

Deployment

Cloudflare (automatic)

Es necesario que el proyecto pueda realizar correctamente un build (npm run build) antes de intentar desplegarlo en Cloudflare.
Si el build funciona localmente pero falla en Cloudflare, utiliza el comando npm run preview para identificar posibles problemas en un entorno de previsualización local de Cloudflare.

npm run build:cloudflare

Linux VM (manual)

  1. Crear un usuario dedicado.
useradd ubicate
  1. Clonar el repositorio.
git clone https://github.com/open-source-uc/UbiCate-v2 /usr/local/ubicate
  1. Entrar al directorio
cd /usr/local/ubicate
  1. Agregar Environmental Variables

  2. Install npm dependencies

  3. Ejecutar Linter

  4. Hacer una build.

npm run build
  1. Crear la Systemd Unit
touch /etc/systemd/system/ubicate.service
[Unit]
Description=Ubicate
After=multi-user.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/bin/npm --prefix /usr/local/ubicate run start
User=ubicate
Group=ubicate
Type=idle
Restart=on-abnormal
RestartSec=15
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target
  1. Reload Units
systemctl daemon-reload
  1. Start y enable el servicio
systemctl enable --now ubicate.service
  1. Reverse proxy con Apache

Reemplazar domain.tld con su dominio.

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName ubicate.domain.tld
    ErrorLog "/var/log/httpd/ubicate.domain.tld-error_log"
    CustomLog "/var/log/httpd/ubicate.domain.tld-access_log" common


    <Location / >
        RequestHeader set X-SCRIPT-NAME /
        RequestHeader set X-SCHEME https
        ProxyPass http://localhost:3000/
        ProxyPassReverse http://localhost:3000/
        ProxyPassReverseCookiePath  /  /
    </Location>

</VirtualHost>

Agregar Nuevas Salas y Áreas

Las salas subidas a través del formulario se cargan automáticamente a una rama de Git especificada en el archivo .env.local, bajo la variable GITHUB_BRANCH_NAME. Estas salas se añaden al archivo data/places.json.

Important

La rama de Git debe existir antes de usar el formulario. Además, asegúrate de configurar el token de GitHub en GITHUB_TOKEN_USER y el correo asociado a la cuenta en GITHUB_USER_EMAIL. Es fundamental que cualquier ubicación agregada manualmente se realice en la rama especificada para evitar conflictos.

Añadir Ubicaciones de Forma Manual

Es posible agregar ubicaciones manualmente siguiendo el formato GeoJSON. Además, las áreas que tengan una geometría de tipo "Polygon" también deben agregarse en este archivo.

En caso de querer agregar campus, estos deben incluirse en el archivo campus.json.

Caution

Es fundamental que cualquier ubicación agregada manualmente se realice en la rama especificada para evitar conflictos.

Note

Los puntos o áreas que no tengan el campo needApproval establecido en false, o que no incluyan este campo, no serán mostrados en el mapa.

(volver arriba)

Contribuir

Bug Reports & Feature Requests

Utilice las issues para informar cualquier bug o solicitud.

Workflow

PR a development -> Revisar preview y checks -> Asignar reviewers -> Aprobación -> Merge a development

La información detallada sobre cómo contribuir se puede encontrar en contributing.md.

Necesitas contactarnos

Comuníquese con nosotros a través de Open Source UC.

(volver arriba)

Bugs

Error del servidor 500

Si este error ocurre en Cloudflare, es muy probable que se deba a uno de los siguientes motivos:

Versión incorrecta de Node.js: Asegúrate de que la versión de Node.js configurada sea compatible con tu aplicación.

Fecha de compatibilidad obsoleta (Compatibility Date): Una fecha de compatibilidad muy antigua puede causar problemas con el entorno de ejecución de Cloudflare.

alt text

Créditos.

Mantenedores

(volver arriba)

## Licencia

License: GNU

(volver arriba)

About

Mapa para dar mayor accesibilidad a ubicación de salas, baños y puntos de interés en los distintos campus de la UC

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published