Skip to content

Latest commit

 

History

156 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

👑🎶 Myke Towers

El Young King — Experiencia Digital Interactiva

Un sitio web inmersivo dedicado a la carrera musical de Myke Towers. DiscografĂ­a completa, biografĂ­a editorial, videos musicales y documentaciĂłn de API pĂşblica.


Vercel React Tailwind CSS Vite

Myke Towers Preview

Ver Demo en Vivo



ĂŤndice

  1. VisiĂłn General
  2. CaracterĂ­sticas
  3. TecnologĂ­as
  4. Estructura del Proyecto
  5. Inicio Rápido
  6. Scripts Disponibles
  7. Rutas
  8. Sistema de ReproducciĂłn Musical
  9. SEO y Rendimiento
  10. DocumentaciĂłn de la API
  11. Decisiones Técnicas
  12. Licencia



VisiĂłn General

Myke Towers no es simplemente un sitio web de un artista. Es una experiencia digital que acompaña la carrera de uno de los exponentes más relevantes de la música urbana puertorriqueña.

El proyecto fue concebido como un homenaje interactivo: un espacio donde los fans pueden explorar la discografía completa del artista, sumergirse en su biografía a través de una línea de tiempo editorial, navegar por sus videos musicales y descubrir la documentación técnica de su API pública.

"El Young King" — así lo conocen. Y este proyecto busca reflejar esa esencia con la misma dedicación que él pone en cada canción.

En vivo: myke-towers.vercel.app




CaracterĂ­sticas

Experiencia Visual

  • Scroll suavizado con Lenis para una navegaciĂłn fluida y natural
  • Transiciones de página animadas con Framer Motion (escala + desenfoque)
  • Efecto parallax en la secciĂłn hero con imágenes que responden al scroll
  • Cursor personalizado con anillo exterior que escala al interactuar (solo escritorio)
  • Fondo ambiental con gradientes de color difuminados que crean atmĂłsfera
  • Glassmorphism en el header flotante con backdrop-blur y bordes translĂşcidos

Contenido Editorial

  • BiografĂ­a completa con lĂ­nea de tiempo de 5 eras (2016–2025)
  • DiscografĂ­a interactiva con carrusel 3D de rotaciĂłn infinita y modal de tracklist
  • GalerĂ­a de videos con estados de carga skeleton y paginaciĂłn
  • Muro social con grid estilo masonry e interacciĂłn hover

MĂşsica en Vivo

  • Reproductor global que reproduce videos de YouTube en segundo plano
  • Controles en el header: play/pause, avanzar/retroceder, barra de progreso
  • Visualizador de audio animado con barras reactivas
  • Avance automático al terminar cada video
  • Inicio silenciado para cumplir con polĂ­ticas de autoplay del navegador

Técnico

  • SEO completo: meta tags, Open Graph, Twitter Cards, Schema.org JSON-LD
  • XML Sitemap y robots.txt optimizados
  • Diseño responsive con menĂş hamburguesa de pantalla completa en mĂłvil
  • 14 entradas de discografĂ­a con tracklists completos (2016–2025)
  • 20 videos oficiales con metadatos detallados
  • DocumentaciĂłn de API interactiva con cĂłdigo en 3 lenguajes



TecnologĂ­as

CategorĂ­a TecnologĂ­a VersiĂłn PropĂłsito
Framework React 19 Biblioteca de interfaces de usuario
Build Tool Vite 6 Servidor de desarrollo y empaquetado
Routing React Router DOM 7 NavegaciĂłn client-side
Estilos Tailwind CSS 4 Framework CSS utility-first
Animaciones Framer Motion 12 Animaciones, transiciones, layout
Scroll Lenis 1.3 Scroll suavizado
Iconos Lucide React 0.525 IconografĂ­a SVG
Video YouTube IFrame API — Reproducción de video embebido



Estructura del Proyecto

myke-towers/
├── public/                    # Assets estáticos
│   ├── favicon.png
│   ├── preview.jpg            # Imagen OG/Twitter
│   ├── hero-video.mp4
│   ├── robots.txt
│   └── sitemap.xml
│
├── src/
│   ├── main.jsx               # Punto de entrada
│   ├── App.jsx                # Componente raíz
│   ├── App.css                # Importación de Tailwind
│   ├── index.css              # Estilos globales y fuentes
│   │
│   ├── assets/font/           # Fuentes tipográficas
│   ├── context/
│   │   └── VideoContext.jsx   # Estado global del reproductor
│   ├── data/
│   │   └── staticData.js      # Toda la información del proyecto
│   ├── routers/
│   │   └── Routers.jsx        # Definición de rutas
│   │
│   └── landing/
│       ├── layout/
│       │   ├── Layout.jsx     # Wrapper de página
│       │   ├── Header.jsx     # Navbar flotante + reproductor
│       │   ├── Footer.jsx     # Pie de página
│       │   ├── Bg.jsx         # Fondo ambiental
│       │   └── Dock.jsx       # Componente estilo macOS
│       │
│       ├── components/
│       │   ├── common/
│       │   │   └── Cursor.jsx
│       │   └── home/
│       │       ├── Hero.jsx
│       │       ├── Musica.jsx
│       │       ├── Card.jsx
│       │       ├── Bio.jsx
│       │       ├── Discography.jsx
│       │       ├── DiscographySection.jsx
│       │       ├── SocialWall.jsx
│       │       └── Skeleton.jsx
│       │
│       └── pages/
│           ├── Home.jsx
│           ├── FullBio.jsx
│           ├── Albums.jsx
│           ├── AlbumDetail.jsx
│           └── ApiDocs.jsx
│
├── index.html                 # HTML con SEO y Schema.org
├── vite.config.js
├── tailwind.config.js
└── eslint.config.js



Inicio Rápido

Prerrequisitos

  • Node.js (v18 o superior)
  • npm, yarn o pnpm

InstalaciĂłn

# Clonar el repositorio
git clone https://github.com/sebastianvasquezechavarria1234/myke-towers.git

# Navegar al directorio
cd myke-towers

# Instalar dependencias
npm install

Desarrollo

npm run dev

El servidor de desarrollo estará disponible en http://localhost:5173.

ProducciĂłn

# Construir el proyecto
npm run build

# Previsualizar la build
npm run preview



Scripts Disponibles

Comando DescripciĂłn
npm run dev Inicia el servidor de desarrollo de Vite
npm run build Genera la build de producciĂłn
npm run preview Previsualiza la build de producciĂłn
npm run lint Ejecuta ESLint para detectar errores de cĂłdigo



Rutas

Ruta Página Descripción
/ Home Hero interactivo, galerĂ­a de videos y carrusel de discografĂ­a
/biografia FullBio Biografía editorial con línea de tiempo (2016–2025)
/albums Albums Grid completo de la discografĂ­a (14 lanzamientos)
/album/:id AlbumDetail Detalle de álbum con tracklist y enlaces de YouTube
/api-docs ApiDocs DocumentaciĂłn interactiva de la API con cĂłdigo en 3 lenguajes



Sistema de ReproducciĂłn Musical

El reproductor musical es uno de los pilares de la experiencia. Funciona en segundo plano mientras el usuario navega por el sitio.

CĂłmo funciona:

  1. Al cargar la página, el reproductor inicia silenciado (cumpliendo con las políticas de autoplay)
  2. En la primera interacciĂłn del usuario, se activa el audio
  3. Los videos se reproducen en orden aleatorio de una playlist de 20 canciones
  4. Al terminar un video, avanza automáticamente al siguiente
  5. El header muestra controles inline: play/pause, skip, barra de progreso
  6. Un visualizador de audio animado responde al ritmo

Controles disponibles:

  • Play / Pausa
  • Siguiente video
  • Video anterior
  • Barra de progreso (clic para saltar)
  • Indicador de mute/unmute

El header también muestra una versión difuminada del thumbnail del video actual como fondo, creando una conexión visual entre la música y la interfaz.




SEO y Rendimiento

OptimizaciĂłn para Motores de BĂşsqueda

  • Meta tags completos: tĂ­tulo, descripciĂłn, keywords, autor, robots
  • Open Graph: imágenes de vista previa para Facebook, WhatsApp y redes sociales
  • Twitter Cards: formato summary_large_image
  • Schema.org JSON-LD: datos estructurados MusicGroup para Rich Snippets de Google
  • XML Sitemap: mapa del sitio con 4 URLs y prioridades
  • Robots.txt: configuraciĂłn para crawlers

Rendimiento

  • Build optimizado con Vite (tree-shaking, code splitting, minificaciĂłn)
  • Assets estáticos en formato AVIF y MP4 (compresiĂłn eficiente)
  • Fuentes self-hosted (Poppins, Great Vibes) sin dependencia de CDN externo
  • Lazy loading implĂ­cito a travĂ©s de la arquitectura de componentes



DocumentaciĂłn de la API

El proyecto incluye una página dedicada (/api-docs) que documenta la API pública que acompaña al sitio.

La API complementaria está desplegada en myke-towers-api.onrender.com y el código fuente está disponible en:

github.com/sebastianvasquezechavarria1234/myke-towers-api

La página de documentación incluye:

  • Sidebar interactivo con 7 endpoints documentados
  • Bloques de cĂłdigo en JavaScript, Python y cURL
  • Funcionalidad de copiar al portapapeles
  • Tablas de parámetros con tipo, obligatoriedad y descripciĂłn
  • Vista previa de respuestas JSON

La documentación fue diseñada como una herramienta de uso real, no solo como una demostración visual.




Decisiones Técnicas

¿Por qué React 19?

React 19 trae mejoras significativas en rendimiento y un nuevo modelo de concurrencia. Para un proyecto que depende fuertemente de animaciones y transiciones, estas mejoras se traducen en una experiencia más fluida.

¿Por qué Vite y no Next.js?

Este proyecto es un Single Page Application sin necesidad de rendering del lado del servidor (SSR) o generación estática (SSG). Vite ofrece la configuración más ligera y un tiempo de desarrollo más rápido para este caso de uso.

¿Por qué YouTube IFrame API y no un componente de video?

La YouTube IFrame API permite un control más preciso sobre la reproducción: eventos de estado, progreso, control de volumen y integración con el sistema de contexto global. Un componente de video genérico no ofrecería este nivel de control.

¿Por qué Tailwind CSS v4?

Tailwind v4 introduce un nuevo motor de escritura en Rust, eliminando la dependencia de PostCSS. El resultado: tiempos de compilación significativamente más rápidos sin cambiar la experiencia de desarrollo.

Datos estáticos vs. API

Toda la información del artista está definida en staticData.js. Esta decisión fue intencional: al ser un sitio tributo/fan, la información no cambia frecuentemente y no necesita autenticación. Un archivo estático elimina latencia, reduce puntos de fallo y mejora el rendimiento.




Convenciones del Proyecto

Arquitectura de Componentes

  • Componentes atĂłmicos: Card, Skeleton, Cursor — piezas reutilizables
  • Componentes de secciĂłn: Hero, Musica, Bio — bloques de la landing page
  • Componentes de página: Home, FullBio, Albums — rutas completas
  • Layout components: Header, Footer, Layout — estructura compartida

GestiĂłn de Estado

El estado global se maneja a través de React Context (VideoContext). No se utiliza Redux ni Zustand porque la complejidad del estado no lo justifica.

Estilos

  • Utilidades de Tailwind CSS para estilos reutilizables
  • CSS personalizado solo cuando Tailwind no ofrece una soluciĂłn (variables CSS, fuentes, scrollbar personalizada)
  • Tema oscuro con acentos de color: verde (#0fa), pĂşrpura (#9c42f5), azul (#4579f5)



Recursos

TipografĂ­as

Fuente Uso Licencia
Poppins Texto principal (20 pesos) OFL
Great Vibes Display / tĂ­tulos decorativos OFL
JetBrains Mono Código y bloques técnicos OFL

APIs Externas




Licencia

Este proyecto tiene una licencia propietaria.

Copyright 2026, Sebastian Vasquez. All Rights Reserved.

El código fuente del frontend está restringido. Sin embargo, la API pública asociada está abierta para consumo de desarrolladores.

Consulta el archivo LICENSE para más detalles.




Made with ❤️ by Sebastián V

About

👑🎶 A premium, high-end web experience dedicated to Myke Towers' legacy, featuring a state-of-the-art editorial front-end and a public, developer-friendly REST API designed for open consumption. Built with React, Vite, Tailwind CSS, and Express. Node.js backend.🔥

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages