Skip to content

TeposteAJ/Get-Talent-Backend

 
 

Repository files navigation

¿Qué es Get Talent?

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.

Qué buscamos como plataforma:

  • 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.

Desarrollo Backend

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

Plantilla básica de un proyecto de Django con Django Rest Framework

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.

Live mode

https://hackademy-drf-boilerplate.herokuapp.com/

Test user credentials

username: testuser password: testuser

Tecnologías incluidas:

Para el ambiente de desarrollo usando pipfile se incluye también:

  • flake8 para el linting
  • black para formatear el código
  • isort para formatear y ordenar los imports

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

Existen varias maneras de levantar el proyecto

  1. pipenv
  2. venv

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
      

Cómo levantar el proyecto usando pipenv (1):

  • 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
    

Cuidado!

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

Comandos útiles de pipenv

  • 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 [email protected] --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.

Cómo levantar el proyecto usando venv (2):

  • 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
    

Despliegue en producción:

En un servidor propio

  • 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.
    

En un servidor de Heroku (3)

TODO

⌨️ 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

About

Desarrollo de Apis dentro del Bootcamp de Hackwomen. https://gettalent2022.netlify.app/

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.0%
  • Dockerfile 1.8%
  • Other 0.2%