Proyecto educativo (PGPI) que combina una pequeña tienda online con un sistema de reservas para servicios presenciales (masajes y tratamientos). Está pensado para que el personal del centro gestione las citas y los productos, mientras los usuarios pueden reservar y consultar productos desde la web.
Este README resume cómo preparar el entorno, ejecutar la aplicación en local y dónde encontrar las piezas principales del código.
- Plataforma de reserva de citas (masajes: drenantes, quiromasajes, anticelulítico, antiestrés, etc.).
- Catálogo de productos con imagen, descripción y precio.
- Página de producto con enlace de compra hacia la tienda de Herbalife (enlace afiliado configurable).
- Interfaz principal con un carrusel "infinito" de productos (autoplay, arrastre y soporte por rueda).
- Feed de Instagram integrado (renderizado en servidor si se configura token, con fallback cliente).
- API simple para paginar productos:
GET /api/products/(útil para carga perezosa/infinite scroll).
- Clona el repositorio y ve a la carpeta:
git clone <repo-url>
cd practica_pgpi- Crea y activa un entorno virtual:
python -m venv .venv
.\.venv\Scripts\Activate.ps1- Instala dependencias (si existe
requirements.txt):
pip install -r requirements.txt- Inicializa la base de datos y crea un superusuario:
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser- Ejecuta el servidor de desarrollo:
python manage.py runserverVisita http://127.0.0.1:8000/ en tu navegador.
| Componente | Versión sugerida |
|---|---|
| Python | 3.10+ |
| Django | 4.x / 5.x (compatible con el proyecto) |
| Base de datos | SQLite (local), Postgres recomendado en producción |
practica_pgpi/
├─ tienda_virtual/ # Proyecto Django
├─ home/ # App principal (vistas, modelos, templates)
├─ db.sqlite3 # Base de datos local (se crea al migrar)
├─ .gitignore
└─ README.md
Plantillas principales: home/templates/index.html, catalog.html, product_detail.html, contact.html.
Vistas importantes: definidas en home/views.py — index, catalog, product_detail, contact, reservations, products_api.
/— Página principal (carrusel + grid de productos + sección social)./catalog/— Catálogo con carga infinita desde la API./product/<id>/— Detalle de producto y enlace de compra (Herbalife)./contact/— Información de contacto./reservations/— Formulario y/o listado de reservas./api/products/— JSON paginado de productos.
DJANGO_SECRET_KEY— clave secreta de Django (producción).INSTAGRAM_ACCESS_TOKEN— token para obtener feed de Instagram (opcional).INSTAGRAM_FEED_TTL— tiempo (segundos) para cachear el feed.HERBALIFE_SALE_CODE— código de afiliado para construir enlaces de compra.HERBALIFE_BASE_URL— URL base de la tienda de Herbalife.COMPANY_ADDRESS,COMPANY_OWNER,COMPANY_EMAIL— datos para la página de contacto.
Consejo: guarda estos valores en un
.envlocal (no subirlo al repo)..venv/ya está incluido en.gitignore.
python manage.py runserver # Inicia servidor local
python manage.py makemigrations # Genera migraciones
python manage.py migrate # Aplica migraciones
python manage.py createsuperuser # Crea admin
python manage.py test # Ejecuta testsPara ejecutar la aplicación dentro de un contenedor Docker (útil para entornos de producción o pruebas consistentes), sigue estos pasos desde el directorio raíz del repositorio (practica_pgpi/), donde se encuentra el Dockerfile.
docker build -t tienda_virtual . docker run -d -p 8000:8000 --name natursur_app tienda_virtualVisita en tu navegador:
docker stop natursur_app
docker rm natursur_appEl enlace para acceder a la página web desplegada en Render es: https://pgpi-natursur.onrender.com
- Usuario visita la landing y explora productos.
- Puede ver detalle de producto y abrir el enlace afiliado para compra.
- Para reservar, completa el formulario de
reservationscon fecha/hora y detalles. - El personal del centro gestiona citas desde el panel (o mediante Django admin).
- Si falta Django:
pip install -r requirements.txt. - Si el puerto 8000 está ocupado:
python manage.py runserver 8080. - Para reiniciar base de datos local: borra
db.sqlite3y ejecutamigrate.
- Haz fork del repositorio.
- Crea una rama:
git checkout -b feature/mi-cambio. - Añade cambios y tests si procede.
- Abre un Pull Request describiendo lo que cambias.
Proyecto educativo (PGPI) — licencia por determinar / uso académico.
Si tienes dudas o necesitas ayuda adicional abre una issue o contacta al responsable del repositorio.
Este README fue reescrito para acercar su estructura y presentación a ejemplos profesionales, manteniendo redacción y contenido propios.