SEVICI Station Forecaster es un proyecto que busca recopilar datos en tiempo real sobre las estaciones de SEVICI con el objetivo de ofrecer al usuario final un sistema de recomendaciones que prediga la mejor estación en relación distancia/bicis para el usuario.
También ofrece servicios para filtrar las estaciones de la compañía en función de su estado en un momento determinado, tanto de manera general como en un radio de distancia desde una dirección.
AÚN NO TENEMOS DEMO
- NodeJS: 20.0.0
- npm: 9.6.4
- PostgreSQL: 14.7
- Python: 3.8.13
- pip: 23.1.2
- PostGIS: 3.1.4
- Clonar el repositorio
git clone https://github.com/Alex-GF/sevici-recommender.git
- Crear una base de datos en PostgreSQL y un usuario con todos los permisos sobre ella. (De ahora en adelante, nos referiremos a esta BD con el nombre:
sevici_db
):
- Accedemos a la consola de PostgreSQL:
psql postgres
- Creamos la base de datos y el usuario:
CREATE DATABASE sevici_db;
CREATE USER sevici_user WITH PASSWORD 'sevici_password';
GRANT ALL PRIVILEGES ON DATABASE sevici_db TO sevici_user;
- Salimos de la consola de PostgreSQL:
\q
- Accedemos a la base de datos recien creada, y habilitamos la extensión PostGIS:
psql sevici_db
CREATE EXTENSION PostGIS;
\q
- Accedemos a la carpeta
backend
del proyecto y creamos un archivo.env
siguiendo el ejemplo del archivo.env.example
.
- NOTA IMPORTANTE: es necesario contar con una API key de desarrollador en JCDecaux. Siga los pasos para crease una cuenta y activarla. Esta API key deberá colocarla como valor de la variable
API_KEY
en el archivo.env
del paso 3.
- Instalamos todos los requisitos (recomendamos hacerlo dentro de un entorno virtual):
pip install -r requirements.txt
- Creamos y ejecutamos todas las migraciones de los modelos de django a la base de datos:
python manage.py makemigrations
python manage.py migrate
- Lanzamos el backend de la aplicación en el puerto 8000:
python manage.py runserver --noreload
Una vez lanzado el backend, dejamos corriendo la tarea y, desde otra terminal, accedemos a la carpeta client
del proyecto. A continuación:
- Instalamos el gestor de paquetes
yarn
de manera global en nuestro equipo:
npm i -g yarn
- Instalamos todos los paquetes necesarios para el frontend:
yarn install
- Lanzamos el frontend de la aplicación en el puerto 3000:
yarn start
Una vez lanzados los dos servidores, podemos acceder a la aplicación desde el navegador en la dirección http://localhost:3000/
. Cabe destacar que no se podrán ver datos de las estaciones ni usar las funcionalidades hasta 10 minutos después del lanzamiento del backend, ya que es el tiempo que tarda en lanzarse la primera tarea periódica de recopiación de datos.
- Docker: 20.10.20
- Docker-compose: 2.12.1
- Clonar el repositorio
git clone https://github.com/Alex-GF/sevici-recommender.git
- Accedemos a la carpeta
sevici-recommender/docker
:
cd sevici-recommender/docker
- Creamos un archivo
.env
siguiendo el ejemplo del archivo.env.example
.
-
NOTA IMPORTANTE: es necesario contar con una API key de desarrollador en JCDecaux. Siga los pasos para crease una cuenta y activarla. Esta API key deberá colocarla como valor de la variable
API_KEY
en el archivo.env
del paso 3. -
NOTA IMPORTANTE 2: debe tener en cuenta que las variables del archivo
.env.example
cuyos valores se encuentran separados por una barra/
deben ser sustituidos por un único valor, por ejemplo:DJANGO_ENV="production"
en lugar deDJANGO_ENV="development/production"
.
- Construimos la arquitectura de contenedores con Docker:
docker-compose up
- NOTA: si se desea lanzar los contenedores en segundo plano, especificar el flag
-d
al final del comando anterior.
Una vez lanzados los dos servidores, podemos acceder a la aplicación desde el navegador en la dirección http://localhost/
. Cabe destacar que no se podrán ver datos de las estaciones ni usar las funcionalidades hasta 10 minutos después del lanzamiento del backend, ya que es el tiempo que tarda en lanzarse la primera tarea periódica de recopiación de datos.