Solución moderna y escalable para impulsar marcas con diseño estratégico y tecnología de vanguardia.
- Visión General
- Tecnologías
- Estructura del Proyecto
- Estado Actual
- Instalación y Configuración
- Flujo de Desarrollo
- Características Implementadas
- Roadmap
Mar Digital es una plataforma profesional que combina:
✨ Frontend Moderno
- Sitio web público con landing page de alto impacto
- Blog dinámico con contenido en MDX
- Componentes interactivos y responsivos
- Optimización de rendimiento (Core Web Vitals)
- Soporte para múltiples dispositivos (Desktop, Tablet, Mobile con correcciones iOS/Safari)
🔌 Backend Escalable
- API RESTful con FastAPI
- Gestión de leads y contactos
- Sistema de health checks
- Documentación OpenAPI automática
🏗️ Infraestructura
- Monorepo con pnpm workspaces
- Docker Compose para desarrollo local
- Tipado end-to-end con OpenAPI
- Calidad de código con ESLint, Prettier, Ruff
Astro 4.x - Framework SSG/SSR moderno
React 18.x - Componentes interactivos (Islands)
TypeScript 5.x - Type safety
TailwindCSS 3.x - Estilos utilitarios
MDX - Contenido con componentes
FastAPI - Framework asincrónico
Python 3.11+ - Backend robusto
Pydantic - Validación de datos
OpenAPI/Swagger - Documentación automática
Docker Compose - Orquestación local
pnpm - Package manager
ESLint - Linting JS/TS
Prettier - Formateador de código
Ruff - Linting Python
mar-digital-web/
├── apps/
│ ├── web/ # Frontend Astro
│ │ ├── src/
│ │ │ ├── pages/ # Rutas (index, blog, servicios, etc.)
│ │ │ ├── components/ # Componentes reutilizables
│ │ │ │ ├── Hero.jsx # Hero animado con React
│ │ │ │ ├── LeadForm.jsx # Formulario de contacto
│ │ │ │ ├── HeroCarousel.jsx # Carrusel de beneficios
│ │ │ │ └── ...
│ │ │ ├── layouts/ # Layouts base
│ │ │ ├── content/ # Content Collections (blog)
│ │ │ ├── styles/ # CSS global + animaciones
│ │ │ └── utils/ # Utilidades (scroll reveal, etc.)
│ │ ├── public/ # Assets estáticos
│ │ └── tailwind.config.cjs # Configuración TailwindCSS
│ │
│ └── backend/ # API FastAPI
│ ├── app/
│ │ ├── main.py # Punto de entrada
│ │ ├── routers/
│ │ │ ├── health.py # Health checks
│ │ │ └── leads.py # Gestión de leads
│ │ └── models/
│ ├── requirements.txt # Dependencias Python
│ └── Dockerfile
│
├── packages/
│ ├── api-client/ # Cliente TS generado (OpenAPI)
│ └── ui/ # Componentes compartidos
│
├── infra/
│ └── docker/
│ └── docker-compose.yml # Orquestación local
│
├── docs/
│ ├── BACKDROP_BLUR_iOS_FIX.md # Fix para Safari/iOS
│ ├── TECHNICAL_EXPLANATION_iOS_FIX.md
│ ├── TESTING_GUIDE_iOS_BACKDROP_BLUR.md
│ ├── VERIFICATION_BACKDROP_BLUR.md
│ └── OPTIMIZATION_GUIDE.md
│
└── Makefile # Scripts principales
- Hero Principal: Animaciones suaves, CTA destacados, fondo dinámico
- ¿Quiénes Somos?: Descripción de la misión con efecto scroll reveal
- Divisiones:
- Mar Digital Creative (Diseño, Branding, Marketing)
- Mar Digital Business (Consultoría estratégica)
- Cards con glass morphism (backdrop-blur)
- Beneficios: Carrusel automático con 4 propuestas de valor
- Servicios Destacados: Timeline visual con 4 servicios clave
- CTA Final: Sección de cierre con propuesta principal
- Blog: Sistema de contenido dinámico con MDX
- Páginas Adicionales: about, servicios, creative, business, contacto, optimizacion
- ✅ Core Web Vitals: Imágenes optimizadas con
<picture>adaptativas - ✅ Responsive Design: Mobile-first, TeSTING en iOS/Android
- ✅ iOS/Safari Fix: Soporte completo para
backdrop-blur-xlen iOS - ✅ Animaciones Suaves: Scroll reveal, fade-in, transforms GPU-aceleradas
- ✅ Accesibilidad: ARIA labels, semantic HTML, color contrast WCAG AA
- ✅ Performance: Lazy loading de imágenes, CSS optimizado, minificación
- 🔧 Reducción de Timeline Points de
w-16aw-12para mejor proporcionalidad - 🔧 Ajuste de línea horizontal (top-8 → top-6) centrada con puntos
- 🔧 iOS Backdrop Blur Fix: Prefijo
-webkit-backdrop-filterpara Safari/iOS - 🔧 GPU acceleration con
translateZ(0)para mejor rendimiento móvil
GET /health- Health checkPOST /leads- Crear nuevo leadGET /leads- Listar leads (admin)
- OpenAPI/Swagger automático en
/docs - Tipado con Pydantic
- Validación de entrada robusta
- Cliente TypeScript generado automáticamente desde OpenAPI
- Tipado end-to-end
- Componentes compartidos base
- Sistema de design tokens (en desarrollo)
- Node.js 18+ (recomendado 20)
- Python 3.11+
- Docker & Docker Compose
- pnpm (npm install -g pnpm)# 1. Clonar repositorio
git clone https://github.com/cmoinr/mar-digital-web.git
cd mar-digital-web
# 2. Instalar dependencias (frontend + backend)
pnpm install
# 3. Configurar variables de entorno
cp apps/backend/.env.example apps/backend/.env
cp apps/web/.env.example apps/web/.env
# 4. Levantar infraestructura
docker-compose -f infra/docker/docker-compose.yml up -d# Terminal 1: Backend
cd apps/backend
pnpm dev:back
# → Corre en http://localhost:8000
# → Swagger en http://localhost:8000/docs
# Terminal 2: Frontend
cd apps/web
pnpm dev
# → Corre en http://localhost:3000cd apps/web
pnpm dev
# → http://localhost:3000make dev # Levanta backend + frontend
make dev-web # Solo frontend
make dev-back # Solo backend
make api-types # Regenera cliente TS desde OpenAPI
make lint # Linting de código
make format # Formateado automático| Característica | Estado | Detalles |
|---|---|---|
| Landing page profesional | ✅ | Hero, secciones, CTA |
| Glass Morphism (Backdrop Blur) | ✅ | Soporte completo iOS/Safari |
| Animaciones suaves | ✅ | Scroll reveal, fade-in, micro-interacciones |
| Responsive design | ✅ | Mobile/Tablet/Desktop optimizado |
| Dark theme profesional | ✅ | Paleta azul-cyan coherente |
| Formulario de contacto | ✅ | React + validación |
| Blog dinámico | ✅ | MDX + Content Collections |
| Característica | Estado | Detalles |
|---|---|---|
| TypeScript end-to-end | ✅ | Frontend + Backend tipado |
| API REST documentada | ✅ | OpenAPI/Swagger automático |
| Sistema de routing | ✅ | Astro pages + dinámicas |
| Gestor de contenido | ✅ | MDX + frontmatter |
| Optimización imágenes | ✅ | Picture adaptativas + WebP |
| Health checks | ✅ | Backend + monitoreo |
| Docker local | ✅ | Compose para dev/local |
| CSS modular | ✅ | TailwindCSS + custom utilities |
| Métrica | Estado | Meta |
|---|---|---|
| Lighthouse Performance | ✅ | 90+ |
| Core Web Vitals | ✅ | Good |
| Mobile Responsive | ✅ | 100% |
| Accessibility (WCAG AA) | ✅ | 95%+ |
| iOS Safari Compatible | ✅ | Backdrop blur OK |
Frontend:
- [ ] Página de testimonios interactivos
- [ ] Sección de casos de estudio
- [ ] Integración con CMS headless (Sanity/Contentful)
- [ ] Análisis (Google Analytics 4)
- [ ] A/B Testing de CTAs
Backend:
- [ ] Base de datos (PostgreSQL + Prisma)
- [ ] Autenticación JWT
- [ ] Sistema de contacto (email notifications)
- [ ] Dashboard admin básico
- [ ] Rate limiting y seguridad
- [ ] CI/CD (GitHub Actions)
- [ ] Testing (Vitest + Pytest)
- [ ] SEO avanzado (structured data, sitemap dinámico)
- [ ] PWA (Service Workers)
- [ ] Integración con herramientas de marketing (Mailchimp, HubSpot)
- [ ] Localización (i18n)
- [ ] E-commerce module (si aplica)
- [ ] Sistema de suscripción
- [ ] API webhooks
- [ ] Microservicios desacoplados
- [ ] Mobile app (React Native)
- iOS Backdrop Blur Fix - Detalle técnico de la solución para Safari
- Testing Guide iOS - Cómo verificar en dispositivos iOS
- Optimization Guide - Guía de rendimiento y Core Web Vitals
Para contribuir al proyecto:
- Crea una rama:
git checkout -b feature/nueva-caracteristica - Haz commit de cambios:
git commit -m "feat: descripción" - Push a la rama:
git push origin feature/nueva-caracteristica - Abre un Pull Request
Antes de hacer deploy:
- Tests pasan:
pnpm test - Lint OK:
pnpm lint - Tipos OK:
pnpm type-check - Lighthouse 90+:
pnpm build && pnpm preview - Mobile testing en iOS/Android
- Cross-browser (Chrome, Firefox, Safari, Edge)
DATABASE_URL=postgresql://...
API_PORT=8000
ENVIRONMENT=development
SECRET_KEY=tu-clave-secretaPUBLIC_API_URL=http://localhost:8000
PUBLIC_SITE_URL=http://localhost:3000
SITE_NAME=Mar DigitalPara reportar issues o sugerencias:
- GitHub Issues: Crear Issue
- Email: contacto@mardigital.com
Este proyecto está bajo licencia MIT. Ver LICENSE para más detalles.