Charis · Plan del Proyecto

Repostería Charis Basque en la web

Tienda online de la repostería @charisbasquegt, con WordPress + WooCommerce y Recurrente como pasarela de pagos, desplegada en un VPS privado con Coolify.

Stack · WordPress + WooCommerce Pagos · Recurrente (4.5%) Infra · Coolify self-hosted País · Guatemala (GTQ)

01Resumen ejecutivo

NegocioRepostería artesanal — Charis Basque
Canal actualInstagram @charisbasquegt
ObjetivoTienda online con catálogo, checkout y cobros con tarjeta
StackWordPress + WooCommerce + Recurrente
InfraestructuraVPS privado vía Coolify (servidor del cliente)
PagosRecurrente — plugin oficial WooCommerce
Idioma inicialEspañol (Guatemala)

02Identidad visual

La marca "Charis Basque" en Instagram se mueve en una línea femenina, cálida, artesanal. Mientras se confirma el manual de marca, propongo esta paleta como base:

Blush#F4C2C2
Champagne#D4AF7A
Cream#FAF3E7
ABC
Chocolate#4A2E1F

Tipografía: Playfair Display (serif) para títulos · Inter (sans) para cuerpo.

Acción: confirmar con la dueña si el logo y los colores del IG coinciden. Si tiene manual de marca, ajustar variables CSS en el tema hijo.

03Arquitectura

3.1 Diagrama de infraestructura

flowchart TB Cliente(["Cliente
navegador / móvil"]) IG["Instagram
@charisbasquegt"] DNS["DNS
AdGuard / Cloudflare"] Coolify["Coolify
Traefik reverse proxy"] WP["WordPress
+ WooCommerce"] DB[("MariaDB
10.11")] Storage["Volumen persistente
wp-uploads"] Recurrente["Recurrente
pasarela de pagos"] Banco(("Banco GT
24h hábiles")) Email["Email
SMTP saliente"] Backups[("Backups
S3 / disco")] Cliente --> DNS IG -. link bio .-> DNS DNS --> Coolify Coolify -->|HTTPS 443| WP WP --> DB WP --> Storage WP -->|API REST| Recurrente Recurrente -->|liquidacion| Banco WP -->|notificaciones| Email DB -. snapshot .-> Backups Storage -. snapshot .-> Backups

3.2 Topología de contenedores (Coolify)

flowchart LR subgraph VPS["VPS privado Coolify"] Traefik["Traefik
443 / 80"] subgraph Proyecto["Proyecto Coolify charis"] App["wordpress
php-fpm-apache
puerto interno 80"] DB["db
mariadb 10.11
puerto interno 3306"] end Vol1["vol wp_uploads
wp-content uploads"] Vol2["vol wp_db
var lib mysql"] end Traefik --> App App --> DB App --- Vol1 DB --- Vol2

Regla Traefik: todo el tráfico público entra a Traefik en :443 y se enruta por dominio (ej. tienda.charis.com.gt o un subdominio interno) al servicio wordpress por HTTP interno. MariaDB NO se expone al exterior.

04Stack técnico

CapaTecnologíaJustificación
SistemaVPS Coolify (Ubuntu 24.04)Servidor del cliente, ya con Traefik, TLS y backups configurados
Web serverTraefik (incluido en Coolify)Reverse proxy + Let's Encrypt automático
CMSWordPress 6.xEstándar, plugins de pago, fácil de operar
TiendaWooCommerce 9.xPlugin oficial Recurrente, ecosistema enorme
PagosRecurrente (plugin WooCommerce oficial)Comisión 4.5%, liquida 24h, soporte GT, PCI cert.
DBMariaDB 10.11Compatible 100% con WordPress
CacheRedis (opcional)Sessions y transients, no obligatorio al inicio
TemaTema hijo de Storefront o AstraBase customizable con la paleta Charis
EmailSMTP (Brevo o Gmail Workspace)Pedidos, facturas, recuperación de carrito
BackupsS3 semanal (DB + uploads)Coolify lo soporta nativamente

05Dominio y DNS

Subdominio propuesto: tienda.charis.com.gt o un subdominio interno — pendiente de decisión con la dueña.

Registros DNS necesarios (tipo A o CNAME):

tienda.charis.com.gt  →  <IP pública del VPS Coolify>

Traefik emite el certificado TLS automáticamente (Let's Encrypt) cuando el DNS resuelve.

06Plan de despliegue

Fase 0

Pre-requisitos · 1 día

Confirmar paleta y logo. Confirmar dominio. Crear cuenta Recurrente sandbox. Definir método de envío.

Fase 1

Infra Coolify · 1 día

Proyecto nuevo en Coolify. DB MariaDB. Servicio WordPress. Dominio en Traefik. Verificar 200 en /wp-admin.

Fase 2

WP + Woo · 1 día

Wizard WordPress. WooCommerce con GTQ. Plugin Recurrente oficial. Pago de prueba en sandbox.

Fase 3

Diseño y catálogo · 2-3 días

Tema hijo con paleta Charis. Categorías y productos. Páginas legales. Feed de IG en footer.

Fase 4

Go-live · 1 día

SMTP. Backups. 2FA admin. Prueba E2E con Q1 real. Cambiar Recurrente a producción. Anuncio en stories.

Pasos detallados

  1. Crear proyecto en Coolify — siempre proyecto nuevo, nunca reusar existentes
  2. Crear base de datos MariaDB — DB: charis_wp, user: wp_user, password aleatorio 32 chars
  3. Crear servicio WordPress — imagen wordpress:6-php8.3-apache, volumen wp_uploads
  4. Configurar dominio en Traefik — Let's Encrypt automático
  5. Verificar instalación curl -I https://<dominio>/wp-admin/install.php debe dar 200/302
  6. Completar wizard WordPress — admin, password fuerte, español
  7. Instalar WooCommerce + plugin Recurrente — configurar con llaves sandbox primero
  8. Pago de prueba end-to-end — sandbox Q1 → confirmar webhook → cambiar a producción

07Receta docker-compose

Referencia portable. En Coolify se prefiere create_dockerimage con la imagen de WordPress, pero el compose se documenta para entornos fuera de Coolify.

services:
  wordpress:
    image: wordpress:6-php8.3-apache
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: charis_wp
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_HOME', 'https://tienda.charis.com.gt');
        define('WP_SITEURL', 'https://tienda.charis.com.gt');
    volumes:
      - wp_uploads:/var/www/html/wp-content/uploads
    depends_on:
      - db
    # Traefik lo expone; NO publicar puertos aquí

  db:
    image: mariadb:10.11
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: charis_wp
      MARIADB_USER: wp_user
      MARIADB_PASSWORD: ${DB_PASSWORD}
      MARIADB_RANDOM_ROOT_PASSWORD: 'yes'
    volumes:
      - wp_db:/var/lib/mysql
    # NO exponer puertos

volumes:
  wp_uploads:
  wp_db:

08Flujo de pago

sequenceDiagram autonumber participant C as Cliente participant W as WooCommerce participant R as Recurrente participant B as Banco GT C->>W: Agrega productos al carrito C->>W: Click "Finalizar compra" W->>W: Crea orden (status: pending) W->>R: POST /api/v1/charges (monto, moneda, referencia) R-->>W: charge_id + checkout_url W-->>C: Redirige a checkout_url de Recurrente C->>R: Ingresa datos de tarjeta R->>R: 3D Secure + antifraude R->>B: Procesa con adquirente B-->>R: Aprobado R-->>C: Muestra confirmación R-->>W: Webhook: charge.succeeded W->>W: Orden → status: processing W-->>C: Email de confirmación Note over R,B: T+24h hábiles: Recurrente liquida al banco de Charis

09Seguridad

10Costos recurrentes

ConceptoCosto aprox. mensual
VPS Coolify (ya pagado)$0 (compartido con otros servicios)
Dominio .com.gt~Q200/año
Recurrente comisión 4.5%Variable (sobre ventas)
Email transaccional (Brevo free)$0 hasta 300 emails/día
Backups S3 (Backblaze B2)~$1-3
Total fijo< $5/mes + comisión sobre ventas

11Riesgos y mitigaciones

RiesgoMitigación
Caída del VPSBackups S3 permiten restaurar en otro VPS en <1h
Conflicto plugin Recurrente con WooCommerceÚltimas versiones; sandbox primero
Inventario desincronizado (IG vs tienda)Único punto de verdad = tienda; IG es vitrina
Tarjeta rechazada en producciónDashboard Recurrente para disputas; 3DSecure siempre activo
Edición rompe el sitioTema hijo + backups diarios para rollback

12Próximos pasos

  1. Confirmar con la dueña — dominio, paleta, logo, envío, facturación IVA
  2. Crear cuenta Recurrente — obtener llaves sandbox
  3. Revisar este plan — aprobar para iniciar Fase 1
  4. Reservar subdominio — AdGuard / Cloudflare