ZippoLag / gework

Repositorio para webapp de Grupo10 para HP en UTN Rosario - 2019

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GeWork

GeWork (sistema de Gestión de Cowork) es el trabajo de Cindi Martín y Sebastián Vansteenkiste para la asignatura de Habilitación Profesional de la carrera de Ingeniería/Analista en Sistemas de Información en la Universidad Tecnológica Nacional - Facultad Regional Rosario.

El sitio se ha desarrollado con un enfoque mobile-first y sólo es un prototipo, si utiliza un dispositivo de pantalla grande, por favor utilice el modo de visualización móvil en las herramientas de navegador del mismo (F12 en Chrome).

El prototipo actual (en master) no se encuentra corriendo en ninguna plataforma para su visualización.

Estructura del proyecto

El proyecto se encuentra dividido en 2 grupos:

  • espacios y gework contienen el backend desarrollado en Django, con el código de conexión a la Base de Datos, lógica de negocio, servidor de archivos estáticos y API de servicios REST expuesta; Además de frontend_bundle que contiene la versión compilada del frontend, lista para ser servida.
  • frontend por otro lado contiene una aplicación ReactJS que no ha de ser servida directamente, sólo empaquetada (con webpack) y servida desde el sub-proyecto frontend_bundle ubicado en backend.

Configurando el entorno de desarrollo

Siendo que el proyecto se ha desarrollado en máquinas corriendo Windows, las instrucciones contienen utilización de scripts de Powershell. Se asume que las últimas versiones de Python 3.x, Powershell y NPM se encuentran ya instaladas antes de proseguir, así como una mínima familiaridad con ellas.

Tras realizar un git clone por primera vez, hemos de abrir una consola y navegar hasta el directorio raíz del repositorio, donde hemos de ejecutarel scrip crear_dev_venv.ps1 (el cual creará un entorno virtual de python, lo activará, actualizará pip e instalará todas las dependencias del proyecto backend). Nota: será necesario aquí crear en gework/settings su local_settings.py en base al .py.bak proveído para conectarse a una BD (así sea un archivo SQLite local) y luego correr un python manage.py migrate y python manage.py createsuperuser (a menos que se use una BD ya existente).

Así mismo, se deberá navegar a la carpeta frontend del proyecto y ejecutar npm install, lo cual instalará todas las dependencias detalladas en el archivo package.json.

Corriendo el código en local

Idealmente su IDE le permitirá configurarse para ejecutar ambos proyectos con capacidad de debugging, no obstante, la forma más sencilla de ejectuar este proyecto localmente es mantener 2 consolas abiertas en paralelo y:

En una ejecutar activar_dev_env.ps1, luego de lo cual se podrá correr python manage.py runsever para exponer la API REST en http://localhost:8000/api, así como para servir los archivos estáticos desde frontend_bundle/templates y frontend_bundle/static en http://localhost:8000 (lo cual no garantia ser la última versión disponible en el proyecto de frontend).

En otra, ir a frontend y ejecutar npm start, lo que servirá el sitio en ReactJS en http://localhost:3000. Alternativamente se podría ejectuar npm build production y luego navegar al directorio build que acaba de crearse y desde allí servir el contenido del sitio empaquetado (por ejemplo con serve, que lo haría en http://localhost:5000).

Tanto los puertos 3000 como 5000 han sido habilitados en las configuraciones de desarrollo del proyecto backend para no desatar errores por CORS, no obstante, algunas funcionalidades de la API podrían no funcionar a menos que el sitio se ejecute sirviendo los archivos estáticos en 8000 mediante el proyecto backend mismo.

Subiendo código al repositorio

Es importante recordar que siempre que se modifique el código en frontend será necesario actualizar el frontend_bundle. Esto puede realizarse sencillamente ejecutando el script empaquetar_y_organizar.ps1 ubicado en el root del proyecto.

Después de cada pull

Para asegurar estar con la última versión funcionando tras un git pull, será buena idea ejecutar un pip install -r requirements.txt, python manage.py migrate y frontend/npm install.

About

Repositorio para webapp de Grupo10 para HP en UTN Rosario - 2019


Languages

Language:JavaScript 75.1%Language:Python 14.3%Language:HTML 9.7%Language:PowerShell 0.5%Language:CSS 0.3%