Descripción • Uso • Contribuir • Créditos • Soporte • Licencia
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
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
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
npm install
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
Compila la aplicación para producción, optimizándola para su implementación.
Uso:
npm run build
Usa @cloudflare/next-on-pages
para generar una versión de la aplicación compatible con Cloudflare Pages.
Uso:
npm run pages:build
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
Compila la aplicación con pages:build
y la implementa en Cloudflare Pages usando wrangler pages deploy
.
Uso:
npm run deploy
Inicia la aplicación previamente construida en modo producción usando Next.js.
Uso:
npm run start
Ejecuta el linter de Next.js para identificar errores y problemas de estilo en el código.
Uso:
npm run lint
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
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
- Crear un usuario dedicado.
useradd ubicate
- Clonar el repositorio.
git clone https://github.com/open-source-uc/UbiCate-v2 /usr/local/ubicate
- Entrar al directorio
cd /usr/local/ubicate
-
Hacer una build.
npm run build
- 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
- Reload Units
systemctl daemon-reload
- Start y enable el servicio
systemctl enable --now ubicate.service
- 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>
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.
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.
Utilice las issues para informar cualquier bug o solicitud.
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.
Comuníquese con nosotros a través de Open Source UC.
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.
## Licencia