{"id":20294904,"url":"https://github.com/hackademymx/pets-backend-django","last_synced_at":"2025-03-04T05:27:05.088Z","repository":{"id":98621992,"uuid":"477446647","full_name":"hackademymx/pets-backend-django","owner":"hackademymx","description":null,"archived":false,"fork":false,"pushed_at":"2022-04-04T11:10:39.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-01-14T09:41:25.884Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hackademymx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-03T19:38:48.000Z","updated_at":"2022-04-03T21:10:59.000Z","dependencies_parsed_at":"2023-04-24T22:03:15.162Z","dependency_job_id":null,"html_url":"https://github.com/hackademymx/pets-backend-django","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-django","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-django/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-django/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-django/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackademymx","download_url":"https://codeload.github.com/hackademymx/pets-backend-django/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241789928,"owners_count":20020568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T15:31:57.512Z","updated_at":"2025-03-04T05:27:05.053Z","avatar_url":"https://github.com/hackademymx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plantilla básica de un proyecto de Django con Django Rest Framework\n\nEl 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.\n\nLa 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.\n\n## Live mode\n\nhttps://hackademy-drf-boilerplate.herokuapp.com/\n\n### Test user credentials\n\nusername: testuser\npassword: testuser\n\n## Tecnologías incluidas:\n- [Django](https://www.djangoproject.com/)\n- [Django Rest Framework](https://www.django-rest-framework.org/)\n- [psycopg2-binary](https://pypi.org/project/psycopg2-binary/)\n- [Python decouple](https://pypi.org/project/python-decouple/)\n- [Django-cors-headers](https://pypi.org/project/django-cors-headers/)\n- [Dj-database-url](https://pypi.org/project/dj-database-url/)\n- [WhiteNoise y Brotli](https://pypi.org/project/whitenoise/)\n- [Gunicorn](https://pypi.org/project/gunicorn/)\n- [django-heroku](https://pypi.org/project/django-heroku/)\n\n### Para el ambiente de desarrollo usando pipfile se incluye también:\n- [flake8](https://pypi.org/project/flake8/) para el linting\n- [black](https://pypi.org/project/black/) para formatear el código\n- [isort](https://pypi.org/project/isort/) para formatear y ordenar los imports\n\nOpcional. Recomendaciones nivel intermedio - avanzado:\n- [Pre-commit](https://pre-commit.com/) para chequear y arreglar nuestro código con las convenciones de los commits antes de publicar el código a un repositorio remoto\n\n\n## Existen varias maneras de levantar el proyecto\n1. [pipenv](#)\n2. [venv](#)\n\nEn todos los casos antes de levantarlo se deben cumplir los siguientes requisitos:\n\n- Crear un archivo de configuración `.env` con las variables de entorno necesarias a partir del archivo `.env-example`.\n\n        $ cp .env-example .env\n\n- 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.\n\n- 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).\n\n- Opcional para el ambiente de desarrollo:\n\n    - Usar WhiteNoise para el manejo de archivos estáticos\n\n            $ python manage.py runserver --nostatic\n\n## Cómo levantar el proyecto usando pipenv (1):\n\n- Instalar pipenv\n\n        $ pip install pipenv\n\n- Instalar la versión de python indicada\n\n        $ pipenv install --python 3.8.12\n\n    - Opcional: instalar las dependencias regulares sumando las de desarrollo también\n\n            $ pipenv install --python 3.8.12 --dev\n\n- Activar el entorno virtual\n\n        $ pipenv shell\n\n- Levantar el servidor\n\n        $ cd api\n\n        $ python manage.py runserver\n\n- Para desactivar el entorno virtual\n\n        $ exit\n\n#### Cuidado!\n\u003e **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.**\n\u003e **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**\n\n        $ export PIPENV_VENV_IN_PROJECT=1\n\n\n### Comandos útiles de pipenv\n\n- Instalar una nueva dependencia\n\n        $ pipenv install \u003cdependencia\u003e\n\n    - Opcional: instalar una dependencia de desarrollo\n\n            $ pipenv install \u003cdependencia\u003e --dev\n\n- Actualizar las dependencias\n\n        $ pipenv update\n\n- Desinstalar una dependencia\n\n        $ pipenv uninstall \u003cdependencia\u003e\n\n- Ejecutar un comando en el entorno virtual sin lanzar un nuevo shell\n\n        $ pipenv run \u003ccomando\u003e\n\n    - Ejemplos:\n\n            $ pipenv run django-admin startproject \u003cnombre_proyecto\u003e\n            $ pipenv run python manage.py startapp \u003cnombre_app\u003e\n            $ pipenv run python manage.py makemigrations\n            $ pipenv run python manage.py migrate\n            $ pipenv run python manage.py createsuperuser --email admin@example.com --username admin\n            $ pipenv run python manage.py runserver\n\n- Para transformar el archivo Pipfile en formato requirements.txt\n\n        $ pipenv lock -r \u003e requirements.txt\n\n        $ pipenv lock -r -d \u003e dev-requirements.txt\n\n- Cuando todo funcione en desarrollo y se quiera pasar a producción. Se debe crear / actualizar el archivo Pipfile.lock ejecutando\n\n        $ pipenv lock\n\n\u003e **Cuidado: Nunca se debe escribir manualmente información en el archivo Pipfile.lock.**\n\n\n## Cómo levantar el proyecto usando venv (2):\n\n- Crear el entorno virtual. En este caso se está usando la herramienta incluida de Python\n\n        $ python3 -m venv env\n\n- Activar el entorno virtual\n\n        $ source env/bin/activate\n\n- Instalar las dependencias del `requirements.txt` existente\n\n        $ python3 -m pip install -r requirements.txt\n\n- Levantar el servidor\n\n        $ cd api\n\n        $ python manage.py runserver\n\n- Para desactivar el entorno virtual\n\n        $ deactivate\n\n\n## Despliegue en producción:\n\n### En un servidor propio\n\n- La instalación de dependencias se ejecuta mediante\n\n        $ pipenv install --ignore-pipfile\n\n    De modo que usa el archivo Pipfile.lock en vez de Pipfile.\n\n- Para crear los archivos estáticos ejecutar\n\n        $ python manage.py collectstatic --noinput --clear\n\n- Actualizar las variables de entorno del archivo `.env`\n\n- De ser necesario ejecutar la sincronización de la BD\n\n        $ python manage.py migrate\n\n- Levantar el servidor en el puerto deseado ejecutando\n\n        $ gunicorn core.wsgi --bind 0.0.0.0:$PORT --error-logfile - --access-logfile - --workers 4\n\n        **Nota:** de ser necesario agregar la bandera `--pythonpath api` a gunicorn o hacer `cd api/` antes de ejecutarlo.\n\n### En un servidor de Heroku (3)\n\nTODO\n\n\n⌨️ con ❤️ por Gabriella Martínez 😊\n\n\n**Referencias:**\n\n(1) Documentación oficial de pipenv. https://pipenv.readthedocs.io/en/latest/index.html\n(2) Documentación oficial de venv. https://docs.python.org/3/library/venv.html\n(3) Configuring Django Apps for Heroku. https://devcenter.heroku.com/articles/django-app-configuration\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackademymx%2Fpets-backend-django","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackademymx%2Fpets-backend-django","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackademymx%2Fpets-backend-django/lists"}