Portfolio Personal & Blog - datanarch.dev



Portfolio Personal & Blog - datanarch.dev

📋 Resumen del Proyecto

Sitio web personal moderno construido desde cero con Astro, diseñado para mostrar proyectos profesionales, compartir conocimientos técnicos mediante un blog, y presentar mi trayectoria profesional de forma interactiva. El proyecto implementa un sistema completo de internacionalización (i18n) soportando español, inglés y francés.

🎯 Objetivo del Proyecto

Crear una presencia profesional en línea que sirva como:

  • Portafolio de Proyectos: Showcasing de trabajos técnicos con descripciones detalladas
  • Blog Técnico: Plataforma para compartir aprendizajes y tutoriales
  • CV Interactivo: Presentación dinámica de experiencia profesional
  • Punto de Contacto: Canal directo para oportunidades profesionales

⚙️ Características Principales

1. Sistema Multiidioma (i18n)

  • Soporte completo para 3 idiomas: Español (ES), Inglés (EN), Francés (FR)
  • Sistema de traducciones con archivos JSON
  • Detección automática de idioma por ruta
  • Contenido traducido: navegación, páginas estáticas, y contenido dinámico
  • Rutas localizadas: /es/, /en/, /fr/

2. Blog con Markdown

  • Sistema de Content Collections de Astro
  • Syntax highlighting con Material Ocean theme
  • Tiempo de lectura calculado automáticamente
  • Tags y categorización de posts
  • Filtrado por idioma
  • Páginas individuales con metadata SEO optimizada

3. Sección de Proyectos

  • Cards visuales con información destacada
  • Estados de proyecto: FINISHED, UNDER-CONSTRUCTION, IN-REVIEW
  • Links directos a repositorios GitHub y demos en vivo
  • Badge de proyectos destacados (featured)
  • Grid responsive adaptable a dispositivos
  • Ordenamiento inteligente (destacados primero, luego por fecha)

4. CV Multiidioma

  • Timeline interactiva de experiencia laboral
  • Educación y certificaciones
  • Skills principales visualizadas
  • Componentes reutilizables (TimeLineItem, SideBarCard)
  • Datos centralizados en archivos JSON por idioma

5. Sistema de Diseño

  • Design tokens CSS personalizados
  • Paleta de colores consistente
  • Variables para espaciado, tipografía y radios
  • Fuentes: IBM Plex Sans (texto) e IBM Plex Mono (código)
  • Componentes modulares y reutilizables

6. Arquitectura Escalable

  • Estructura de carpetas organizada
  • Separación de contenido y presentación
  • Componentes Astro reutilizables
  • Utilidades compartidas (i18n.ts, readingTime.ts)
  • Type-safe con TypeScript

🛠️ Stack Tecnológico

Framework y Lenguajes

  • Astro 4.x: Framework principal (SSG/SSR híbrido)
  • TypeScript: Tipado estático para mayor robustez
  • Markdown: Formato de contenido para blog y proyectos

Librerías y Herramientas

  • Astro Content Collections: Sistema de gestión de contenido
  • Zod: Validación de schemas
  • Shiki: Syntax highlighting para bloques de código
  • js-yaml: Parser para frontmatter

Estilos

  • CSS Modules: Estilos con scope local
  • Design Tokens: Sistema de variables CSS personalizado
  • Responsive Design: Mobile-first approach

DevOps

  • Git: Control de versiones
  • GitHub: Repositorio y colaboración
  • npm: Gestión de dependencias

💻 Características Técnicas Destacadas

Content Collections con Zod

const projects = defineCollection({
  type: "content",
  schema: z.object({
    title: z.string(),
    description: z.string(),
    date: z.coerce.date(),
    tags: z.array(z.string()).optional(),
    git: z.string().url().optional(),
    demo: z.string().url().optional(),
    featured: z.boolean().default(false),
    projectStatus: z.enum(['UNDER-CONSTRUCTION', 'FINISHED', 'IN-REVIEW']),
    lang: z.enum(['es', 'en', 'fr']).default('es')
  })
});

Sistema i18n Robusto

export function useTranslations(lang: 'es' | 'en' | 'fr' = 'es') {
  return function t(key: string) {
    const keys = key.split('.');
    let value: any = translations[lang];
    for (const k of keys) {
      value = value?.[k];
    }
    return value || key;
  };
}

Detección de Idioma por Ruta

export function getLanguageFromPath(currentPath: string) {
  if (currentPath.startsWith('/en')) return 'en';
  if (currentPath.startsWith('/fr')) return 'fr';
  return 'es';
}

📈 Metodología de Desarrollo

Desarrollo Progresivo por Fases

  1. Fase 1: Setup inicial y contenido básico
  2. Fase 2: Sistema de proyectos
  3. Fase 3: Componentes multimedia
  4. Fase 4: Theme switcher (dark/light) - Pendiente
  5. Fase 5: Implementación i18n básico ✅
  6. Fase 6: i18n avanzado de contenido - En progreso
  7. Fase 7: Automatización redes sociales - Planificado

Principios Aplicados

  • DRY (Don’t Repeat Yourself): Componentes reutilizables
  • Separation of Concerns: Contenido separado de lógica
  • Type Safety: TypeScript en toda la aplicación
  • Progressive Enhancement: Funciona sin JavaScript
  • Mobile First: Diseño responsive desde el inicio

📚 Aprendizajes Clave

Técnicos

  • Astro Content Collections: Sistema robusto para contenido tipado
  • i18n sin librerías: Implementación custom de internacionalización
  • CSS Architecture: Design tokens y variables CSS efectivas
  • TypeScript Patterns: Interfaces, types y validación con Zod
  • Component Design: Creación de componentes modulares y reutilizables

De Diseño

  • Balance entre simplicidad y funcionalidad
  • Importancia de la consistencia visual
  • Accesibilidad desde el inicio
  • Performance primero (SSG con Astro)

De Proceso

  • Documentación como parte del desarrollo
  • Desarrollo incremental por fases
  • Version control con commits descriptivos
  • Testing manual exhaustivo

🌟 Características Únicas

  1. Triple Idioma desde el Core: No es un agregado, sino parte fundamental de la arquitectura
  2. Type-Safe Content: Zod valida todo el contenido en build time
  3. Zero Client JS: Sitio estático generado, ultra rápido
  4. Design System Propio: Sin dependencia de frameworks CSS
  5. Markdown-First: Contenido portable y versionable

📝 Métricas del Proyecto

  • Líneas de código: ~3,500 LOC
  • Componentes Astro: 12+
  • Páginas generadas: 20+ (con todas las variantes de idioma)
  • Posts de blog: 12 (4 por idioma)
  • Proyectos documentados: 3+
  • Idiomas soportados: 3
  • Tiempo de desarrollo: 2 semanas
  • Performance: Lighthouse 95+ en todas las métricas

🎓 Casos de Uso

  1. Desarrollador Buscando Empleo: Portfolio completo con proyectos y experiencia
  2. Blogger Técnico: Plataforma para compartir conocimientos
  3. Consultor Freelance: Presencia profesional con contacto directo
  4. Open Source Contributor: Showcase de contribuciones y proyectos

📄 Licencia

Código fuente: MIT License Contenido: © 2025 Henry Pérez (datanarch)


Estado actual: En construcción activa Última actualización: Octubre 2025 Autor: Henry Pérez (@datanarch) Tecnología Principal: Astro + TypeScript