Skip to content
View PeterDamianG's full-sized avatar
🏠
Working from home
🏠
Working from home

Block or report PeterDamianG

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
PeterDamianG/README.md

Personal Web — Peter DG

Portfolio personal de Peter Damián Gómez, Web Developer.

🌐 peterdg.com.ar

Stack

Rol Herramienta
Build / Dev server Vite
UI framework Preact (~3KB, API idéntica a React)
Package manager / Runtime Bun
Tests Vitest + @testing-library/preact
Cobertura @vitest/coverage-v8
Linting ESLint (airbnb + jsx-a11y + prettier)
Estilos CSS puro + CSS Modules

Comandos

bun install          # Instalar dependencias
bun run dev          # Servidor de desarrollo (http://localhost:5173)
bun run build        # Build de producción → dist/
bun run preview      # Previsualizar el build localmente
bun run test         # Ejecutar tests unitarios (verbose)
bun run coverage     # Tests con cobertura (objetivo ≥90%)
bun run lint         # ESLint
bun run prettier     # Formatear y verificar código

Ejecutar un test específico:

bun run test tests/components/icons/Icons.test.js

Estructura

src/
├── App.tsx                    # Componente raíz
├── main.tsx                   # Entry point (render + theme init)
├── components/
│   ├── icons/                 # SVG icons
│   ├── layout/
│   │   ├── appbar/            # AppBar, ThemeChanger, Drawer
│   │   └── footer/            # Footer
│   ├── main/
│   │   ├── sections/          # Hero, About, Proyects, Contact
│   │   └── WrapperSection.tsx # IntersectionObserver + lazy mounting
│   ├── placeholders/          # SVG placeholders para Suspense
│   ├── ui/                    # Componentes UI reutilizables
│   └── utils/                 # ErrorBoundary, setPathHash
├── data/
│   └── siteData.ts            # ★ Fuente única de datos del sitio
├── hooks/
│   ├── useTheme.ts            # Manejo de tema claro/oscuro
│   ├── useMediaQuery.ts       # Media queries con matchMedia
│   ├── useIntersectionObserver.ts
│   └── useFunctionOverTime.tsx
└── styles/
    ├── globals.css
    └── themes.css             # CSS custom properties para temas

Personalización

Todo el contenido editable está en src/data/siteData.ts:

  • PERSONAL_INFO — nombre, email, URLs de redes sociales, CV
  • LIST_PROJECTS — lista de proyectos
  • DRAWER_TEXT — frases del drawer de escritorio
  • CERTIFICATIONS — certificaciones profesionales

Diseño responsive

Solo dos breakpoints:

  • Mobile ≤767px
  • Desktop ≥768px

Accesibilidad

  • HTML semántico: <header>, <nav>, <main>, <footer>, <section>, <article>
  • Skip-to-content link para screen readers
  • aria-label en todos los elementos interactivos
  • alt descriptivo en todas las imágenes
  • Hotkeys de navegación: H (hero), A (about), P (proyects), C (contact), T (theme), M (menu), Esc (cerrar)

Browser support

Chrome, Firefox, Safari, Edge, Brave — últimos 5 años (~2020+)

Deploy

El build en dist/ es completamente estático. Funciona en:

  • https://peterdg.com.ar/ (dominio personalizado)
  • https://peterdamiang.github.io/PeterDamianG/ (GitHub Pages fallback)

El archivo vite.config.ts usa base: './' para rutas relativas que funcionan en ambos.

Pinned Loading

  1. challengejs-alkemy challengejs-alkemy Public archive

    Este repositorio, es una posible solución al desafío de javascript propuesto por la aceleradora Alkemy.

    JavaScript 6 1

  2. AlkemyFinalProyect AlkemyFinalProyect Public archive

    Proyecto Final propuesto por la aceleradora Alkemy.

    JavaScript 1

  3. TemplarKnightsGuild TemplarKnightsGuild Public archive

    Este es un sitio web, desarrollado como practica. Es una página de una guild de videojuegos, con contenido minimo sobre el mismo.

    Vue 1

  4. ChallengeAngularBlog ChallengeAngularBlog Public archive

    Challenge Angular Blog Alkemy

    TypeScript 1

  5. ArtifactHelper ArtifactHelper Public archive

    An unofficial application, for the game Artifact Card Game Dota 2. On the web (in-comming) and for the desktop, is an assistant with the purpose of providing the latest news, changeslogs, decks/car…

    JavaScript 1

  6. LoRHelper LoRHelper Public archive

    This app is a deck tracker and helper for Legends Of Runeterra.

    C# 1