# Shop [![codecov](https://codecov.io/gh/pablo-moreno/shoppy/graph/badge.svg?token=8oQg2Mqn3m)](https://codecov.io/gh/pablo-moreno/shoppy) ## Desarrollo ### Establecer variables de entorno A partir del archivo `.env.example`, creamos un archivo `.env` en el que podemos establecer las [variables de entorno](#variables-de-entorno). ### Instalar dependencias El siguiente comando instalará todas las dependencias, incluidas las necesarias para desarrollo y testing. ```bash pip install -r requirements.test.txt ``` ### Lanzar migraciones ```bash python manage.py migrate ``` ### Arrancar servidor ```bash python manage.py runserver ``` ### Crear superusuario Con este usuario tendremos control total de la aplicación desde el [admin de Django](http://localhost:8000/admin/) ```bash python manage.py createsuperuser ``` ### Arrancar Tailwind ```bash tailwindcss -w -i theme/static/css/main.css -o theme/static/css/styles.css ``` ### Tareas de Celery ```bash celery -A config worker -B -l debug ``` ### Pruebas con pytest ```bash pytest --cov ``` ## Docker ### Descarga ```bash docker pull ghcr.io/pablo-moreno/shoppy ``` ### Construir imagen ```bash docker build -t shoppy . ``` ### Crear contenedor **API** ```bash docker run -it --rm -p 8000:80 -e RUN_SERVER=TRUE --env-file=.env shoppy_api ``` **Tareas en segundo plano** ```bash docker run -it --rm -p 8000:80 -e RUN_CELERY=TRUE --env-file=.env shoppy_tasks ``` ## Variables de entorno Puedes crear un archivo `.env` con las siguientes variables de entorno. | Variable | Default value | Comments | |-------------------------|----------------------------------|--------------------------------------------| | SECRET_KEY | secret key | Clave de encriptación | | DEBUG | TRUE | Modo de desarrollo activo | | DATABASE_URL | sqlite:///db.sqlite3 | URL de conexión a base de datos | | STATIC_ROOT | static | Carpeta de estáticos | | MEDIA_ROOT | media | Carpeta de archivos media | | REDIS_HOST | redis | Dirección de servidor Redis | | REDIS_PORT | 6379 | Puerto de Redis | | PAGE_SIZE | 20 | Tamaño de paginación | | ALLOWED_HOSTS | * | Hosts permitidos (CORS) | | CELERY_BROKER_URL | redis://172.17.0.1:6379/0 | Url de conexión para celery | | S3_ENABLED | FALSE | Activado protocolo S3 | | S3_HOST | | URL de servidor S3 | | AWS_ACCESS_KEY_ID | | Clave de acceso de S3 | | AWS_SECRET_ACCESS_KEY | | Clave secreta de S3 | | AWS_STORAGE_BUCKET_NAME | | Nombre del bucket de S3 | | AWS_S3_ENDPOINT_URL | | Endpoint de S3 | ## Depurar pagos TPV con Redsys Para poder usar el TPV en la máquina local necesitaremos instalar y configurar [`ngrok`](https://ngrok.com/), siguiendo los pasos que nos indican en la web al crear nuestra cuenta Arrancaremos ngrok con el siguiente comando: ```bash ngrok http http://localhost:8000 ``` Ngrok nos dará una URL accesible desde fuera, que tendremos que guardar en los `Ajustes de la tienda` como `Dominio del TPV` Tendremos que establecer también los siguientes ajustes de la cuenta con estos valores para desarrollo. | Variable | Valor para desarrollo | Descripción | |------------------------|----------------------------------|------------------------------------------------------------------------------| | `redsys_shared_secret` | sq7HjrUOBfKmC576ILgskD5srU870gJ7 | Clave privada de Redsys | | `merchant_code` | 999008881 | Código de negocio de Redsys | | `terminal` | 001 | Terminal de Redsys | | `currency_code` | 978 | Código de moneda de Redsys | | `tpv_domain` | | Dominio del TPV para redirección de Redsys (en local lo obtenemos por ngrok) |