diff --git a/frontend-lectures/lesson3/openriver/EXPLICACION_ES5.md b/frontend-lectures/lesson3/openriver/EXPLICACION_ES5.md
new file mode 100644
index 0000000..033ae27
--- /dev/null
+++ b/frontend-lectures/lesson3/openriver/EXPLICACION_ES5.md
@@ -0,0 +1,731 @@
+# OpenRiver - Explicación Completa del Código en ES5
+
+## Tabla de Contenidos
+1. [Estructura General](#estructura-general)
+2. [Configuración Principal (_app.tsx)](#configuración-principal)
+3. [Configuración Web3 (wagmi.ts)](#configuración-web3)
+4. [Layout (layout.tsx)](#layout)
+5. [Header (Header.tsx)](#header)
+6. [Componentes de Tarjetas (Card.tsx, Cards.tsx)](#componentes-tarjetas)
+7. [Páginas (list, mint, dashboard, marketplace, myNFT)](#páginas)
+8. [Contratos Inteligentes (contracts.ts)](#contratos)
+
+---
+
+## Estructura General
+
+Este es un proyecto de **NFT Marketplace** construido con:
+- **Next.js**: Framework React para aplicaciones web
+- **wagmi**: Librería para interactuar con contratos de Ethereum
+- **RainbowKit**: Interfaz para conectar carteras de criptomonedas
+- **Tailwind CSS**: Framework para estilos
+
+El proyecto permite a usuarios:
+✓ Conectar su cartera de criptomonedas
+✓ Crear (mintear) nuevos NFTs
+✓ Listar NFTs en el mercado
+✓ Ver NFTs disponibles para comprar
+✓ Ver su colección personal de NFTs
+
+---
+
+## Configuración Principal (_app.tsx)
+
+```typescript
+import '../styles/globals.css';
+import '@rainbow-me/rainbowkit/styles.css';
+```
+
+**Línea por línea:**
+
+1. `import '../styles/globals.css'`
+ - Importa los estilos CSS globales que se aplican a toda la aplicación
+ - Estos estilos definen el look general de la aplicación
+
+2. `import '@rainbow-me/rainbowkit/styles.css'`
+ - Importa los estilos de la librería RainbowKit
+ - Estila el botón de conectar cartera y los modales
+
+```typescript
+import type { AppProps } from 'next/app';
+```
+
+3. `import type { AppProps }`
+ - Importa el tipo TypeScript que define las propiedades que recibe el componente App
+ - `AppProps` contiene `Component` (el componente actual) y `pageProps` (las propiedades)
+
+```typescript
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+```
+
+4. `QueryClient` - Objeto que maneja el caché de datos
+5. `QueryClientProvider` - Componente que proporciona QueryClient a toda la aplicación
+
+```typescript
+import { WagmiProvider } from 'wagmi';
+```
+
+6. `WagmiProvider` - Componente que proporciona funciones para interactuar con Ethereum a toda la aplicación
+
+```typescript
+import { RainbowKitProvider } from '@rainbow-me/rainbowkit';
+```
+
+7. `RainbowKitProvider` - Componente que proporciona la interfaz de cartera a toda la aplicación
+
+```typescript
+import { config } from '../wagmi';
+import DashboardLayout from './layout';
+```
+
+8. `config` - Configuración de wagmi (redes, proyecto ID, etc.)
+9. `DashboardLayout` - Componente que proporciona el header y footer a todas las páginas
+
+```typescript
+const client = new QueryClient();
+```
+
+10. Se crea una instancia de QueryClient para manejar datos
+
+```typescript
+function MyApp({ Component, pageProps }: AppProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+```
+
+11. `MyApp` es el componente raíz que envuelve toda la aplicación
+
+**Estructura de Providers (como cajas anidadas):**
+```
+WagmiProvider (acceso a Ethereum)
+ └─ QueryClientProvider (caché de datos)
+ └─ RainbowKitProvider (cartera)
+ └─ DashboardLayout (header y footer)
+ └─ Component (página actual)
+```
+
+Cada provider proporciona funcionalidades especiales a sus componentes internos.
+
+---
+
+## Configuración Web3 (wagmi.ts)
+
+```typescript
+import { getDefaultConfig } from '@rainbow-me/rainbowkit';
+import { sepolia } from 'wagmi/chains';
+```
+
+1. `getDefaultConfig` - Función que crea una configuración lista para usar
+2. `sepolia` - Red de prueba de Ethereum (usada para desarrollo, no requiere dinero real)
+
+```typescript
+export const config = getDefaultConfig({
+ appName: 'RainbowKit App',
+```
+
+3. `appName` - Nombre de la aplicación que aparecerá en la cartera
+
+```typescript
+ projectId: 'd69f9edb23bbe0354a3b186e1bee340c',
+```
+
+4. `projectId` - ID único para este proyecto en WalletConnect (servicio que conecta aplicaciones con carteras)
+
+```typescript
+ chains: [sepolia],
+```
+
+5. `chains` - Array de redes disponibles. Aquí solo Sepolia (red de prueba)
+
+```typescript
+ ssr: true,
+```
+
+6. `ssr: true` - Server-Side Rendering habilitado (renderiza en el servidor para mejor rendimiento)
+
+---
+
+## Layout (layout.tsx)
+
+```typescript
+import type { ReactNode } from 'react'
+import Header from '../components/Header'
+
+type LayoutProps = {
+ children: ReactNode
+}
+```
+
+1. `ReactNode` - Tipo que representa cualquier contenido React (componentes, texto, etc.)
+2. `LayoutProps` - Define que este componente recibe `children` (contenido interno)
+
+```typescript
+export default function DashboardLayout({ children }: LayoutProps) {
+ return (
+
+
+ {children}
+
+
+ )
+}
+```
+
+3. `minHeight: '100vh'` - La altura mínima es la altura total de la pantalla
+4. `backgroundColor: '#f8fafc'` - Color de fondo gris claro
+5. `` - Componente de navegación
+6. `{children}` - Aquí va el contenido de cada página
+7. `