Get-talent es una plataforma donde empresas y candidatos , interactúan de manera virtual y exploran las distintas áreas laborales, obteniendo así un mayor alcance en la empleabilidad, que lo diferencia de otras plataformas como LinkedIn, Computrabajo, etc…
Es que desde un comienzo los aspirantes tienen contacto directo a través de un video de manera online, contestando una serie de preguntas que la empresa solicita como primer paso, para poder aplicar a la vacante, desdé el primer momento les está dando una mayor probabilidad de poder quedar en el empleo que están solicitando, ya que muchas otras solo envían mensaje o piden solo el CV sumándose así a los miles de cv ignorados u olvidados en bandejas de Correos electrónicos.
- 1- Posicionar a las grandes empresas.
- 2- Tener un crecimiento en empleabilidad para México.
- 3- Que tanto mujeres como hombres puedan contar con un salario digno desde el comienzo.
Durante 7 meses el equipo de backend desarrollo las apis de Get Talent, mismas donde pueden visualizarse aquí, donde usamos tecnología como python con django, heroku, PostgreSQL, docker, jwt Token, pipenv y venv como entorno virtual, swagger para el uso de documentación y usamos el servidor de correos gmail para poder hacer uso de envio de emails
El objetivo de este repositorio es usarlo como una plantilla, esqueleto o también llamado boilerplate
inicial para cualquier proyecto de API REST que use Django.
La finalidad es que sirva de guía y permita al desarrollador enfocarse en escribir código y no en invertir demasiado tiempo en la inicialización y configuración del proyecto.
https://hackademy-drf-boilerplate.herokuapp.com/
username: testuser password: testuser
- Django
- Django Rest Framework
- psycopg2-binary
- Python decouple
- Django-cors-headers
- Dj-database-url
- WhiteNoise y Brotli
- Gunicorn
- django-heroku
Opcional. Recomendaciones nivel intermedio - avanzado:
- Pre-commit para chequear y arreglar nuestro código con las convenciones de los commits antes de publicar el código a un repositorio remoto
En todos los casos antes de levantarlo se deben cumplir los siguientes requisitos:
-
Crear un archivo de configuración
.env
con las variables de entorno necesarias a partir del archivo.env-example
.$ cp .env-example .env
-
Tener instalado o levantado una base de datos ya sea local o en la nube. Los datos de conexión tienen que ser incluidos en el archivo
.env
donde corresponda. -
Concluido el proceso de desplieque, se debe levantar el servidor y si es la primera vez se debe ejecutar el comando
python manage.py migrate
para sincronizar la base de datos. Después ese comando se usará a demanda cuando se creen nuevos modelos (leer la documentación). -
Opcional para el ambiente de desarrollo:
-
Usar WhiteNoise para el manejo de archivos estáticos
$ python manage.py runserver --nostatic
-
-
Instalar pipenv
$ pip install pipenv
-
Instalar la versión de python indicada
$ pipenv install --python 3.8.12
-
Opcional: instalar las dependencias regulares sumando las de desarrollo también
$ pipenv install --python 3.8.12 --dev
-
-
Activar el entorno virtual
$ pipenv shell
-
Levantar el servidor
$ cd api $ python manage.py runserver
-
Para desactivar el entorno virtual
$ exit
Al cambiar la carpeta del proyecto a otra ruta se rompe la referencia entre el entorno virtual creado con pipenv y el proyecto en sí, causando como consecuencia que no se pueda usar más nunca. Para evitar eso, se puede crear el entorno virtual dentro de la carpeta del proyecto (antes de hacer
$ pipenv install
) creando la siguiente variable de entorno
$ export PIPENV_VENV_IN_PROJECT=1
-
Instalar una nueva dependencia
$ pipenv install <dependencia>
-
Opcional: instalar una dependencia de desarrollo
$ pipenv install <dependencia> --dev
-
-
Actualizar las dependencias
$ pipenv update
-
Ejecutar un comando en el entorno virtual sin lanzar un nuevo shell
$ pipenv run <comando>
-
Ejemplos:
$ pipenv run django-admin startproject <nombre_proyecto> $ pipenv run python manage.py startapp <nombre_app> $ pipenv run python manage.py makemigrations $ pipenv run python manage.py migrate $ pipenv run python manage.py createsuperuser --email admin@example.com --username admin $ pipenv run python manage.py runserver
-
-
Para transformar el archivo Pipfile en formato requirements.txt
$ pipenv lock -r > requirements.txt $ pipenv lock -r -d > dev-requirements.txt
-
Cuando todo funcione en desarrollo y se quiera pasar a producción. Se debe crear / actualizar el archivo Pipfile.lock ejecutando
$ pipenv lock
Cuidado: Nunca se debe escribir manualmente información en el archivo Pipfile.lock.
-
Crear el entorno virtual. En este caso se está usando la herramienta incluida de Python
$ python3 -m venv env
-
Activar el entorno virtual
$ source env/bin/activate
-
Instalar las dependencias del
requirements.txt
existente$ python3 -m pip install -r requirements.txt
-
Levantar el servidor
$ cd api $ python manage.py runserver
-
Para desactivar el entorno virtual
$ deactivate
-
La instalación de dependencias se ejecuta mediante
$ pipenv install --ignore-pipfile
De modo que usa el archivo Pipfile.lock en vez de Pipfile.
-
Para crear los archivos estáticos ejecutar
$ python manage.py collectstatic --noinput --clear
-
Actualizar las variables de entorno del archivo
.env
-
De ser necesario ejecutar la sincronización de la BD
$ python manage.py migrate
-
Levantar el servidor en el puerto deseado ejecutando
$ gunicorn core.wsgi --bind 0.0.0.0:$PORT --error-logfile - --access-logfile - --workers 4 **Nota:** de ser necesario agregar la bandera `--pythonpath api` a gunicorn o hacer `cd api/` antes de ejecutarlo.
⌨️ con ❤️ por Gabriella Martínez 😊
Referencias:
(1) Documentación oficial de pipenv. https://pipenv.readthedocs.io/en/latest/index.html (2) Documentación oficial de venv. https://docs.python.org/3/library/venv.html (3) Configuring Django Apps for Heroku. https://devcenter.heroku.com/articles/django-app-configuration