diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..36e4b26
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,15 @@
+# GEMINI_API_KEY: Required for Gemini AI API calls.
+# AI Studio automatically injects this at runtime from user secrets.
+# Users configure this via the Secrets panel in the AI Studio UI.
+GEMINI_API_KEY="MY_GEMINI_API_KEY"
+
+# APP_URL: The URL where this applet is hosted.
+# AI Studio automatically injects this at runtime with the Cloud Run service URL.
+# Used for self-referential links, OAuth callbacks, and API endpoints.
+APP_URL="MY_APP_URL"
+
+# Supabase configuration
+VITE_SUPABASE_URL="YOUR_SUPABASE_URL"
+VITE_SUPABASE_ANON_KEY="YOUR_SUPABASE_ANON_KEY"
+VITE_N8N_WEBHOOK_URL="YOUR_N8N_WEBHOOK_URL"
+VITE_RECAPTCHA_SITE_KEY="YOUR_RECAPTCHA_SITE_KEY"
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5a86d2a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+node_modules/
+build/
+dist/
+coverage/
+.DS_Store
+*.log
+.env*
+!.env.example
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..4edc241
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Cómete el mundo y gana
+
+
+
+
+
+
+
diff --git a/metadata.json b/metadata.json
new file mode 100644
index 0000000..24ac69b
--- /dev/null
+++ b/metadata.json
@@ -0,0 +1,6 @@
+{
+ "name": "Cómete el mundo y gana",
+ "description": "App para campaña promocional Cómete el mundo y gana de Maggi y Nestlé, donde podrás escanear tus facturas, acumular puntos y ganar increíbles premios.",
+ "requestFramePermissions": [],
+ "majorCapabilities": []
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c5a7dc4
--- /dev/null
+++ b/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "react-example",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite --port=3000 --host=0.0.0.0",
+ "build": "vite build",
+ "preview": "vite preview",
+ "clean": "rm -rf dist",
+ "lint": "tsc --noEmit"
+ },
+ "dependencies": {
+ "@google/genai": "^1.29.0",
+ "@supabase/supabase-js": "^2.105.0",
+ "@tailwindcss/vite": "^4.1.14",
+ "@vitejs/plugin-react": "^5.0.4",
+ "clsx": "^2.1.1",
+ "dotenv": "^17.2.3",
+ "express": "^4.21.2",
+ "lucide-react": "^0.546.0",
+ "motion": "^12.23.24",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "react-google-recaptcha": "^3.1.0",
+ "react-router-dom": "^7.14.2",
+ "tailwind-merge": "^3.5.0",
+ "vite": "^6.2.0"
+ },
+ "devDependencies": {
+ "@types/express": "^4.17.21",
+ "@types/node": "^22.14.0",
+ "@types/react-google-recaptcha": "^2.1.9",
+ "autoprefixer": "^10.4.21",
+ "tailwindcss": "^4.1.14",
+ "tsx": "^4.21.0",
+ "typescript": "~5.8.2",
+ "vite": "^6.2.0"
+ }
+}