No description
  • HTML 53.9%
  • Python 43.2%
  • CSS 2.5%
  • Shell 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
PepeluiMoreno 464b4c848f docs: dejar por escrito el contexto del proyecto antes de cambiar de maquina
Todo lo decidido en julio vivia en una conversacion que no viaja con el
repositorio. Se escribe lo que no se deduce leyendo el codigo:

- estado-del-proyecto.md: el modelo en cuatro niveles y POR QUE es asi, las dos
  fuentes de verdad, el ciclo de vida de una actividad, las decisiones que no se
  ven en el codigo (borrar es reversible, retirar de la cartera no es borrar, el
  lugar condiciona la planificacion), como se prueba esto —incluido el node del
  contenedor de Cal.diy, que es el unico de la maquina— y lo que esta a medias.
- levantar-en-otra-maquina.md: que no viaja en el clon (.env, backups, uploads y
  los datos de NocoDB, que estan en un volumen), en que orden montarlo y con que
  hay que tener cuidado.
- backlog.md: lo que queda, con lo averiguado del codigo en cada punto.
- plan-modelo-servicio.md: el plan del refactor, con el diseno del cierre
  mensual y la anulacion por el alumno, que estan pensados y sin implementar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 14:44:12 +02:00
authelia authelia: retirar el logotipo inventado; quedan solo los textos. Se genero un logo.png y un favicon.ico para Julia y se presentaron como si existieran, cuando Julia NO tiene logotipo. Inventar una identidad visual no es una decision tecnica y un logotipo puesto por descarte acaba apareciendo donde nadie lo ha aprobado, asi que se borran. Queda el override de textos en castellano, que es lo unico defendible aqui: la instancia es infraestructura compartida (/opt/docker/infra), de modo que cualquier marca que se le ponga sale tambien en el acceso al resto de servicios del servidor. El LEEME explica por que no hay logotipo, por que no hay colores ni tipografia, y que hacer si algun dia se diseña uno. 2026-07-19 00:40:05 +00:00
data web: regenerar con el catalogo del modelo nuevo 2026-07-20 14:38:25 +02:00
docs docs: dejar por escrito el contexto del proyecto antes de cambiar de maquina 2026-07-20 14:44:12 +02:00
nginx Subida de fotos desde el panel: endpoint /admin/api/foto (protegido, valida imagen, redimensiona a 1200px con Pillow y guarda JPEG optimizado en sitio/uploads servido por nginx). Captador -> python:3.12-slim con Pillow. Panel con selector de fichero y previsualizacion. Probado: auth, redimensionado, rechazo de no-imagenes, respeto de UPLOADS_DIR. 2026-07-16 16:46:25 +00:00
scripts lugares: fuera el "como llegar", dentro el mapa, y la foto deja de comerse la ficha 2026-07-20 14:04:22 +02:00
secrets Sitio 4 idiomas + stack de negocio (web, analítica, reservas, boletín, automatizaciones, datos) 2026-07-06 07:24:15 +00:00
sitio web: regenerar con el catalogo del modelo nuevo 2026-07-20 14:38:25 +02:00
stack/initdb n8n eliminado por completo del stack: workflows borrados, ruta Traefik (auto.) retirada, N8N_KEY fuera del bootstrap, docs actualizadas a Python (captador + build-web). Cero referencias a n8n en el repo 2026-07-16 09:01:11 +00:00
traefik n8n eliminado por completo del stack: workflows borrados, ruta Traefik (auto.) retirada, N8N_KEY fuera del bootstrap, docs actualizadas a Python (captador + build-web). Cero referencias a n8n en el repo 2026-07-16 09:01:11 +00:00
.env.example Actividades multiidioma + CI/CD 2026-07-15 12:51:49 +00:00
.gitignore gitignore: los volcados de NocoDB no van al repositorio 2026-07-20 14:42:19 +02:00
docker-compose.yml Modularizar el backend (antes captador.py, 869 lineas monoliticas) y renombrarlo a 'backend'. 2026-07-16 19:43:49 +00:00
README.md n8n eliminado por completo del stack: workflows borrados, ruta Traefik (auto.) retirada, N8N_KEY fuera del bootstrap, docs actualizadas a Python (captador + build-web). Cero referencias a n8n en el repo 2026-07-16 09:01:11 +00:00

juliamoreno.yoga

Presencia digital y herramientas de negocio de Julia Moreno · Yoga (Hatha yoga en Nerja, Maro y Almuñécar).

Estructura

  • sitio/ — web estática en 4 idiomas (ES raíz, /en/, /fr/, /de/), SEO local, schema LocalBusiness, hreflang y sitemap.
  • docker-compose.yml — todo el despliegue, con perfiles:
    • web: solo el sitio (nginx tras Traefik, TLS automático, redirección canónica desde www y juliamorenoyoga.com).
    • negocio: Postgres + Umami (analítica sin cookies). El mínimo para medir.
    • todo: añade Cal.com (reservas), Listmonk (boletín), captador Python (formularios) y NocoDB (alumnos/bonos).
  • nginx/sitio.conf — configuración del sitio (gzip, caché, cabeceras).
  • stack/initdb/ — creación de las BDs del stack.
  • scripts/bootstrap-secrets.sh — genera .env y secretos (solo en el VPS).
  • docs/ — guía de despliegue y generador del manual de usuario.

Despliegue

git clone <repo> /opt/juliamoreno && cd /opt/juliamoreno
./scripts/bootstrap-secrets.sh
docker compose --profile web up -d        # el sitio
docker compose --profile negocio up -d    # + analítica
# más adelante:
docker compose --profile todo up -d

Requisitos: Traefik en la red externa proxy con entrypoint websecure y certresolver letsencrypt; DNS del dominio y subdominios (stats, reservas, correo, auto, datos) apuntando al VPS.

Contenido dinámico

  • Precios y horarios: data/contenido.json + scripts/build-web.py (ver docs/backoffice-precios-horarios.md).
  • Actividades con sondeo de demanda: docs/actividades-sondeo.md.
  • Traducción es→en/fr/de vía build-web.py+DeepL: docs/traduccion-cambiar-motor.md.

Reglas del repo

  • Ni .env ni secrets/ se versionan jamás (ver .gitignore).
  • Los paneles auto. y datos. deben protegerse con Authelia u otro middleware de autenticación en Traefik: son internos.
  • Marcadores pendientes en sitio/: [TELÉFONO], [DIRECCIÓN], [DÍA]/[HORA], [PRECIO], usuario de Instagram.

Backoffice de contenido (precios, horarios, actividades)

Julia edita en NocoDB (datos.juliamoreno.yoga); la web se regenera sola.

  • Precios y horarios: valores en tablas; ver docs/backoffice-precios-horarios.md
  • Actividades y talleres: Julia escribe en español; build-web.py traduce a EN/FR/DE con DeepL y regenera; ver docs/traduccion-cambiar-motor.md para cambiar el motor de traducción.
  • Generador: scripts/build-web.py (solo toca las secciones entre marcadores).
  • Despliegue automático de código: docs/cicd-despliegue.md

Flujos:

  • CONTENIDO (Julia, NocoDB) -> build-web.py (traduce + genera)
  • CÓDIGO (Jose/soporte, git push) -> CI/CD -> build-web.py