Initial commit: site + GA4 + Docker for Coolify

This commit is contained in:
2026-10-06 18:38:18 +00:00
commit 3601bc88e7
59 changed files with 4364 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
# dylanmazzei.com
Sitio de Dylan Mazzei, Founder & Operator. HTML estático generado con un script de Node sin dependencias.
## Estructura
```
src/layout.mjs Layout compartido: <head>, nav, footer, iconos y helpers
src/pages/*.mjs Una página por archivo (texto literal del documento de contenido)
src/service.mjs Bloques compartidos de las páginas de servicios de Consulting
static/ Se copia tal cual a dist/ (CSS, JS, imágenes, favicon)
build.mjs Genera dist/ + sitemap.xml + robots.txt + 404.html
```
| Ruta | Archivo |
|------|---------|
| `/` | `src/pages/home.mjs` |
| `/about/` | `src/pages/about.mjs` |
| `/portfolio/` | `src/pages/portfolio.mjs` |
| `/consulting/` | `src/pages/consulting.mjs` |
| `/consulting/marketing/` | `src/pages/marketing.mjs` |
| `/consulting/business-setup/` | `src/pages/business-setup.mjs` |
| `/consulting/business-optimization/` | `src/pages/business-optimization.mjs` |
| `/consulting/supply-chain/` | `src/pages/supply-chain.mjs` |
| `/consulting/cybersecurity/` | `src/pages/cybersecurity.mjs` |
| `/consulting/education/` | `src/pages/education.mjs` |
| `/consulting/fractional/` | `src/pages/fractional.mjs` |
| `/contact/` | `src/pages/contact.mjs` |
| `/press/` | `src/pages/press.mjs` |
## Desarrollo
```bash
npm run build # genera dist/
npm run dev # build + servidor local
```
## Deploy en Vercel
Importa el repo en Vercel. `vercel.json` ya define el build (`npm run build`), la salida (`dist`) y las URLs limpias con slash final. No hace falta configurar nada más.
## Pendientes de contenido
- **Press:** falta el link del artículo de Gulf Insider y confirmar su titular exacto (`FEATURE` en `src/pages/press.mjs`).
- **Korrith:** falta el cargo de Dylan (el tercer campo, vacío, en `src/pages/portfolio.mjs`).
- **Páginas fuera del alcance actual:** Playbook y Poetry no forman parte del sitio. Sus secciones se muestran sin botón; si se crean esas páginas, se añade el botón con su texto original del documento.
- **Calendario:** poner el link real de agenda en `SITE.calendar`.
- **Formulario de contacto:** hoy abre el cliente de correo con el mensaje prellenado. Para recibirlo directo hay que conectar un servicio (Formspree, Resend, etc.).