| 👨💻 Nombre | 📧 Correo | 🏫 Link directo al repositorio | 🐙 Usuario GitHub |
|---|---|---|---|
| Jonathan David Fernandez Vargas | jonathanfdez62@gmail.com | LinkRepositorio | jonathand77 |
Práctica de desarrollo web que recrea una base de datos visual de WWE: marcas, campeones, eventos premium y su historial de ediciones/ganadores.
Este proyecto es una aplicación React de página única (SPA) que funciona como una base de datos visual del universo WWE. Permite navegar por las tres marcas (RAW, SmackDown y NXT), consultar sus campeones actuales y logos, explorar el roster general (Champions, Wyatts, MFT) y revisar los Premium Live Events (Royal Rumble, WrestleMania, Money in the Bank, Clash at the Castle, SummerSlam, Crown Jewel, Survivor Series y Elimination Chamber) con sus ganadores históricos y ediciones de logo.
Toda la navegación ocurre sin recargar la página: al seleccionar una marca o un evento se reemplaza la vista principal por una vista de detalle con pestañas (DetailView), y el botón "Back" o los enlaces del NavBar regresan a la vista general con scroll suave a la sección correspondiente.
Antes de comenzar, asegúrate de contar con:
- Git
- Node.js v18 o superior (incluye npm)
- Un navegador web (Chrome, Edge, Firefox, etc.)
- Un editor de código como Visual Studio Code (opcional)
No se requiere base de datos ni backend: todo el contenido vive como datos estáticos en src/data/.
wwe-database/
├── RAÍZ
│ ├── .gitignore
│ ├── .git/
│ ├── package.json
│ ├── public/
│ │ ├── index.html
│ │ ├── manifest.json
│ │ ├── favicon.ico
│ │ └── LogoWWE-Database.png
│ └── src/
│ ├── index.js
│ ├── App.js
│ ├── styles/
│ │ ├── global.css
│ │ └── common.css
│ ├── assets/
│ │ ├── font/ # Tipografía CentraNo2 (Bold / Book / Medium)
│ │ └── img/
│ │ ├── banners/ # Imágenes del Banner, ToCome y fondos
│ │ ├── brands/ # Logos actuales de RAW, SmackDown y NXT
│ │ ├── events/ # Carátulas del carrusel de eventos
│ │ ├── icons/ # Iconos de redes sociales del Footer
│ │ ├── roster/ # Fotos de campeones, Wyatts y MFT
│ │ └── ple/ # Logos y ganadores por evento (royal-rumble, wrestlemania, mitb, ...)
│ ├── components/
│ │ ├── NavBar/ # Navegación y scroll-spy
│ │ ├── Banner/ # Sección de bienvenida
│ │ ├── Brands/ # Carrusel de marcas (RAW / SmackDown / NXT)
│ │ ├── Events/ # Carrusel de Premium Live Events
│ │ ├── Projects/ # Roster general con tabs (Champions / Wyatts / MFT)
│ │ ├── BrandDetail/ # Vista de detalle de una marca
│ │ ├── EventDetail/ # Vista de detalle de un evento
│ │ ├── DetailView/ # Layout de tabs compartido por Brand/Event Detail
│ │ ├── ProjectCard/ # Card reutilizable (imagen + nombre + descripción)
│ │ ├── ToCome/ # Sección "próximamente"
│ │ └── Footer/ # Pie de página y contacto
│ └── data/
│ ├── BrandData/ # brandsData, brandDetailsData, rawData, smackdownData, nxtData
│ ├── EventsData/ # eventsData, eventDetailsData
│ ├── PleData/ # Un archivo por evento (royalRumbleData, wrestlemaniaData, ...)
│ ├── RosterData/ # rosterData (Champions / Wyatts / MFT)
│ └── carouselConfig.js # Breakpoints responsive de los carruseles
git clone https://github.com/Jonathand77/wwe-database.git
cd wwe-databasenpm installnpm startYa puedes abrir en el navegador y utilizar la aplicación:
http://localhost:3000
La página se recarga automáticamente con cada cambio y verás los errores de lint en la consola.
npm run buildGenera una versión optimizada y minificada en la carpeta build/, lista para desplegar en cualquier hosting estático.
Todo el contenido visual (campeones, logos, ganadores) sigue la misma forma, consumida por ProjectCard:
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | Identificador único del ítem |
title |
string | Nombre del luchador, equipo o edición |
description |
string | Título que ostenta, año o contexto |
imgUrl |
string | Imagen importada desde assets/img/ |
BrandDetail y EventDetail reutilizan DetailView, que renderiza pestañas a partir de un objeto con id, title, subtitle y un arreglo tabs (cada tab con id, label, variant e items). El variant controla el gradiente de fondo de las cards (por marca, por evento o el genérico champions).
- Separación por dominio de datos: cada marca/evento tiene su propio archivo en
BrandData/oPleData/, y un archivo agregador (brandDetailsData.js,eventDetailsData.js) los combina en un único mapa consultado porid. - Componentes de presentación reutilizables:
ProjectCardyDetailViewson agnósticos del contenido; solo recibenitems/tabsy renderizan. - Accesibilidad:
altdescriptivo en imágenes,aria-labelen botones de carrusel y navegación, estadosdisabledpara marcas/eventos sin detalle cargado. - Sin animaciones de reingreso: las secciones se renderizan directamente al montar, evitando destellos al navegar entre la vista principal y las vistas de detalle.
En el directorio del proyecto puedes ejecutar:
| Script | Descripción |
|---|---|
npm start |
Corre la app en modo desarrollo en http://localhost:3000 |
npm test |
Lanza el test runner en modo interactivo (Jest + Testing Library) |
npm run build |
Genera el build de producción minificado en build/ |
npm run eject |
Expone la configuración de Create React App (operación irreversible) |
- NavBar: navegación fija con scroll-spy entre secciones (
home,brands,events,projects,to-come,connect). - Banner: presentación inicial con efecto de texto rotativo.
- Brands / Events: carruseles (
react-multi-carousel) que abrenBrandDetail/EventDetailal hacer clic. - Projects: roster general con pestañas Champions / Wyatts / MFT.
- BrandDetail / EventDetail: obtienen su contenido por
iddesdedata/y lo delegan aDetailView. - DetailView: layout compartido de pestañas (
react-bootstrapTab.Container) + grilla deProjectCard. - ProjectCard: card con imagen, overlay de color por
varianty nombre/descripción. - Footer: enlaces de contacto y navegación de regreso al inicio.
- Tell others about this project 📢
- Say thank you publicly 🤓
⌨️ by Jonathand77 😊