From 8d4fb626bff3f0846835bd0a47f1cc91a0e34068 Mon Sep 17 00:00:00 2001 From: mealno Date: Mon, 25 May 2026 11:08:44 +0000 Subject: [PATCH] Upload files to "src" --- src/.env.example | 9 +++++++++ src/.gitignore | 8 ++++++++ src/README.md | 20 ++++++++++++++++++++ src/index.html | 16 ++++++++++++++++ src/metadata.json | 6 ++++++ src/package.json | 35 +++++++++++++++++++++++++++++++++++ src/tsconfig.json | 26 ++++++++++++++++++++++++++ src/vite.config.ts | 22 ++++++++++++++++++++++ 8 files changed, 142 insertions(+) create mode 100644 src/.env.example create mode 100644 src/.gitignore create mode 100644 src/README.md create mode 100644 src/index.html create mode 100644 src/metadata.json create mode 100644 src/package.json create mode 100644 src/tsconfig.json create mode 100644 src/vite.config.ts diff --git a/src/.env.example b/src/.env.example new file mode 100644 index 0000000..7a550fe --- /dev/null +++ b/src/.env.example @@ -0,0 +1,9 @@ +# 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" diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..5a86d2a --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +build/ +dist/ +coverage/ +.DS_Store +*.log +.env* +!.env.example diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..f1aa5e9 --- /dev/null +++ b/src/README.md @@ -0,0 +1,20 @@ +
+GHBanner +
+ +# Run and deploy your AI Studio app + +This contains everything you need to run your app locally. + +View your app in AI Studio: https://ai.studio/apps/3ee1668e-a64b-4275-bbd0-23ae0f558de6 + +## Run Locally + +**Prerequisites:** Node.js + + +1. Install dependencies: + `npm install` +2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key +3. Run the app: + `npm run dev` diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..be2fbb7 --- /dev/null +++ b/src/index.html @@ -0,0 +1,16 @@ + + + + + + Mealno - Cloud Kitchen + + + + + +
+ + + + diff --git a/src/metadata.json b/src/metadata.json new file mode 100644 index 0000000..80ee3e0 --- /dev/null +++ b/src/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "Mealno", + "description": "Gen-Z cloud kitchen landing page for students with dark-tech-appetizing aesthetic.", + "requestFramePermissions": [], + "majorCapabilities": ["MAJOR_CAPABILITY_SERVER_SIDE_GEMINI_API"] +} diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..44745ed --- /dev/null +++ b/src/package.json @@ -0,0 +1,35 @@ +{ + "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 server.js", + "lint": "tsc --noEmit" + }, + "dependencies": { + "@google/genai": "^2.4.0", + "@tailwindcss/vite": "^4.1.14", + "@vitejs/plugin-react": "^5.0.4", + "lucide-react": "^0.546.0", + "react": "^19.0.1", + "react-dom": "^19.0.1", + "vite": "^6.2.3", + "express": "^4.21.2", + "dotenv": "^17.2.3", + "motion": "^12.23.24" + }, + "devDependencies": { + "@types/node": "^22.14.0", + "autoprefixer": "^10.4.21", + "esbuild": "^0.25.0", + "tailwindcss": "^4.1.14", + "tsx": "^4.21.0", + "typescript": "~5.8.2", + "vite": "^6.2.3", + "@types/express": "^4.17.21" + } +} diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 0000000..d88f175 --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2022", + "experimentalDecorators": true, + "useDefineForClassFields": false, + "module": "ESNext", + "lib": [ + "ES2022", + "DOM", + "DOM.Iterable" + ], + "skipLibCheck": true, + "moduleResolution": "bundler", + "isolatedModules": true, + "moduleDetection": "force", + "allowJs": true, + "jsx": "react-jsx", + "paths": { + "@/*": [ + "./*" + ] + }, + "allowImportingTsExtensions": true, + "noEmit": true + } +} diff --git a/src/vite.config.ts b/src/vite.config.ts new file mode 100644 index 0000000..fc23e76 --- /dev/null +++ b/src/vite.config.ts @@ -0,0 +1,22 @@ +import tailwindcss from '@tailwindcss/vite'; +import react from '@vitejs/plugin-react'; +import path from 'path'; +import {defineConfig} from 'vite'; + +export default defineConfig(() => { + return { + plugins: [react(), tailwindcss()], + resolve: { + alias: { + '@': path.resolve(__dirname, '.'), + }, + }, + server: { + // HMR is disabled in AI Studio via DISABLE_HMR env var. + // Do not modify—file watching is disabled to prevent flickering during agent edits. + hmr: process.env.DISABLE_HMR !== 'true', + // Disable file watching when DISABLE_HMR is true to save CPU during agent edits. + watch: process.env.DISABLE_HMR === 'true' ? null : {}, + }, + }; +});