Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Rincón del Aroma
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Estructura base de la aplicación Rincón del Aroma usando React + PWA // Esto incluye: Home, Catálogo vacío, Carrito de compras y panel de administración simple

// index.html const html = `

<!DOCTYPE html><html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rincón del Aroma</title>
<link rel="manifest" href="manifest.json">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="root"></div>
<script src="app.js"></script>
</body>
</html>
`;// manifest.json const manifest = { "name": "Rincón del Aroma", "short_name": "Rincón Aroma", "start_url": ".", "display": "standalone", "background_color": "#ffffff", "theme_color": "#f6e0dc", "icons": [ { "src": "icon-192.png", "sizes": "192x192", "type": "image/png" }, { "src": "icon-512.png", "sizes": "512x512", "type": "image/png" } ] };

// app.js (React básico) const { useState } = React;

function App() { const [cart, setCart] = useState([]);

return ( <div> <header> <h1>Rincón del Aroma</h1> <button>Carrito ({cart.length})</button> </header> <main> <section> <h2>Catálogo de Productos</h2> <p>Aquí podrás agregar tus productos más tarde desde el panel de administración.</p> <div id="product-list"></div> </section> </main> <footer> <p>© 2025 Rincón del Aroma</p> </footer> </div> ); }

ReactDOM.render(<App />, document.getElementById('root'));

// styles.css const css = body { font-family: Arial, sans-serif; margin: 0; padding: 0; background: #fff8f0; color: #333; } header { background: #f6e0dc; padding: 20px; display: flex; justify-content: space-between; align-items: center; } main { padding: 20px; } footer { text-align: center; padding: 10px; background: #f6e0dc; } button { background: #d49c8c; border: none; padding: 10px 20px; color: white; cursor: pointer; border-radius: 5px; };

// service-worker.js (para PWA) const sw = ` self.addEventListener('install', function(event) { console.log('Service Worker instalado'); });
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"typecheck": "react-router typegen && tsc"
},
"dependencies": {
"@netlify/blobs": "^8.1.2",
"@netlify/blobs": "^8.2.0",
"@react-router/node": "^7.9.4",
"@react-router/serve": "^7.9.4",
"isbot": "^5.1.17",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"typecheck": "react-router typegen && tsc"
},
"dependencies": {
"@netlify/blobs": "^8.1.2",
"@netlify/blobs": "^8.2.0",
"@react-router/node": "^7.9.4",
"@react-router/serve": "^7.9.4",
"isbot": "^5.1.17",
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/fixtures/serverless-site/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"typecheck": "tsc"
},
"dependencies": {
"@netlify/blobs": "^8.1.2",
"@netlify/blobs": "^8.2.0",
"@netlify/remix-adapter": "*",
"@remix-run/node": "^2.16.5-pre",
"@remix-run/react": "^2.16.5-pre",
Expand Down