Humbl3m33 commited on
Commit
02f50ff
·
verified ·
1 Parent(s): bfe06a1

Upload 10 files

Browse files
Files changed (10) hide show
  1. README.md +146 -9
  2. SETUP-GUIDE.md +151 -0
  3. next.config.mjs +35 -0
  4. package.json +70 -0
  5. pnpm-lock.yaml +0 -0
  6. postcss.config.mjs +8 -0
  7. requirements.txt +4 -0
  8. tailwind.config.ts +98 -0
  9. tsconfig.json +27 -0
  10. vercel.json +23 -0
README.md CHANGED
@@ -1,12 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
- title: WEB.BUILDING.GENIOUS
3
- emoji: 🌖
4
- colorFrom: gray
5
- colorTo: red
6
- sdk: docker
7
- pinned: false
8
- license: mit
9
- short_description: 'AI SOFTWARE ENGINEERING MASTER '
 
 
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🔥 WEB.BUILDING.GENIOUS
2
+
3
+ > AI-powered software engineering and website generation agent
4
+
5
+ ---
6
+
7
+ ## 📌 Table of Contents
8
+
9
+ - [Quick Deploy](#-quick-deploy)
10
+ - [Features](#-features)
11
+ - [Quick Start](#-quick-start)
12
+ - [Environment Variables](#-environment-variables)
13
+ - [Docker](#-docker)
14
+ - [Tech Stack](#-tech-stack)
15
+ - [Local Development](#-local-development)
16
+ - [Build & Start](#-build--start)
17
+ - [AI Agent Capabilities](#-ai-agent-capabilities)
18
+ - [Cost Estimates](#-cost-estimates)
19
+ - [License](#-license)
20
+
21
+ ---
22
+
23
+ ## 🚀 Quick Deploy
24
+
25
+ [![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/MadScientist85/WEB.BUILDING.GENIOUS)
26
+ [![Deploy to HuggingFace](https://huggingface.co/datasets/huggingface/badges/resolve/main/deploy-to-spaces-sm.svg)](https://huggingface.co/new-space?template=https://github.com/MadScientist85/WEB.BUILDING.GENIOUS&sdk=docker)
27
+
28
  ---
29
+
30
+ ## ✨ Features
31
+
32
+ - Multi-AI support: OpenAI, OpenRouter, Groq, Grok
33
+ - Generates full websites (HTML/CSS/JS)
34
+ - Supabase + MongoDB storage
35
+ - Upload/download chat history & export HTML
36
+ - Tailwind CSS with light/dark themes
37
+ - Ready for Vercel & HuggingFace Spaces
38
+
39
  ---
40
 
41
+ ## 🛠️ Quick Start
42
+
43
+ ```bash
44
+ # Clone repository
45
+ git clone https://github.com/MadScientist85/WEB.BUILDING.GENIOUS
46
+ cd WEB.BUILDING.GENIOUS
47
+
48
+ # Install dependencies
49
+ npm install
50
+
51
+ # Copy environment file
52
+ cp .env.example .env.local
53
+
54
+ # Add your API keys to .env.local
55
+ npm run dev
56
+
57
+
58
+ ---
59
+
60
+ 📋 Environment Variables
61
+
62
+ NEXT_PUBLIC_SUPABASE_URL (required)
63
+
64
+ SUPABASE_SERVICE_ROLE_KEY (required)
65
+
66
+ AI API keys (OPENAI_API_KEY, OPENROUTER_API_KEY, etc.)
67
+
68
+ Optional: MONGODB_URI
69
+
70
+
71
+
72
+ ---
73
+
74
+ 🐳 Docker
75
+
76
+ docker build -t web.building.genious .
77
+ docker run -p 3000:3000 --env-file .env.local web.building.genious
78
+ docker-compose up -d
79
+
80
+
81
+ ---
82
+
83
+ 🔧 Tech Stack
84
+
85
+ Frontend: Next.js 14, React, Tailwind CSS
86
+
87
+ Backend: Next.js API Routes, Vercel AI SDK
88
+
89
+ Database: Supabase + MongoDB
90
+
91
+ AI: OpenAI, OpenRouter, Groq, Grok
92
+
93
+ Deployment: Vercel, HuggingFace Spaces
94
+
95
+
96
+
97
+ ---
98
+
99
+ 📝 Local Development
100
+
101
+ yarn install
102
+ yarn dev
103
+
104
+
105
+ ---
106
+
107
+ 📦 Build & Start
108
+
109
+ yarn build
110
+ yarn start
111
+
112
+
113
+ ---
114
+
115
+ 🎯 AI Agent Capabilities
116
+
117
+ Generate complete websites with HTML/CSS/JavaScript
118
+
119
+ Debug and fix code issues
120
+
121
+ Create database schemas and migrations
122
+
123
+ Build REST APIs and integrations
124
+
125
+ Provide architectural recommendations
126
+
127
+ Generate documentation and guides
128
+
129
+
130
+
131
+ ---
132
+
133
+ 📊 Cost Estimates
134
+
135
+ Free Tier: Supabase + Groq + Vercel = $0/month
136
+
137
+ Basic Usage: ~$5-20/month with OpenAI
138
+
139
+ Heavy Usage: $20-100/month depending on AI calls
140
+
141
+
142
+
143
+ ---
144
+
145
+ 📄 License
146
+
147
+ MIT License - see LICENSE for details
148
+
149
+ ---
SETUP-GUIDE.md ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🚀 DEEP.REBUILD Complete Setup Guide
2
+
3
+ ## 📋 Required API Keys & Configuration
4
+
5
+ ### 1. **Supabase Database** (Primary Storage)
6
+ - **Where to get**: [supabase.com](https://supabase.com)
7
+ - **Steps**:
8
+ 1. Create free account → New Project
9
+ 2. Go to Settings → API → Copy URL and Service Role Key
10
+ - **Required Variables**:
11
+ \`\`\`env
12
+ NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
13
+ SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
14
+ \`\`\`
15
+
16
+ ### 2. **AI Providers** (Choose at least one)
17
+
18
+ #### OpenAI (Recommended)
19
+ - **Where to get**: [platform.openai.com/api-keys](https://platform.openai.com/api-keys)
20
+ - **Cost**: Pay-per-use (~$0.01-0.06 per 1K tokens)
21
+ - **Models**: GPT-4o, GPT-4o-mini, GPT-4-turbo
22
+ - **Variable**:
23
+ \`\`\`env
24
+ OPENAI_API_KEY=sk-proj-abc123...
25
+ \`\`\`
26
+
27
+ #### OpenRouter (Multi-Model Access)
28
+ - **Where to get**: [openrouter.ai/keys](https://openrouter.ai/keys)
29
+ - **Cost**: Varies by model ($0.002-0.10 per 1K tokens)
30
+ - **Models**: Claude, Llama, Gemini, GPT-4, and 200+ others
31
+ - **Variable**:
32
+ \`\`\`env
33
+ OPENROUTER_API_KEY=sk-or-v1-abc123...
34
+ \`\`\`
35
+
36
+ #### Groq (Ultra-Fast Inference)
37
+ - **Where to get**: [console.groq.com/keys](https://console.groq.com/keys)
38
+ - **Cost**: Free tier available, then pay-per-use
39
+ - **Models**: Llama 3.1, Mixtral (500+ tokens/sec)
40
+ - **Variable**:
41
+ \`\`\`env
42
+ GROQ_API_KEY=gsk_abc123...
43
+ \`\`\`
44
+
45
+ #### Grok (xAI)
46
+ - **Where to get**: [console.x.ai](https://console.x.ai)
47
+ - **Cost**: Pay-per-use
48
+ - **Models**: Grok-beta, Grok-vision-beta
49
+ - **Variable**:
50
+ \`\`\`env
51
+ XAI_API_KEY=xai-abc123...
52
+ \`\`\`
53
+
54
+ ### 3. **MongoDB** (Optional Backup Storage)
55
+ - **Where to get**: [mongodb.com/atlas](https://mongodb.com/atlas)
56
+ - **Steps**:
57
+ 1. Create free cluster (512MB)
58
+ 2. Database Access → Add User
59
+ 3. Network Access → Add IP (0.0.0.0/0 for development)
60
+ 4. Connect → Connect Application → Copy connection string
61
+ - **Variable**:
62
+ \`\`\`env
63
+ MONGODB_URI=mongodb+srv://username:password@cluster0.xxxxx.mongodb.net/deep_rebuild?retryWrites=true&w=majority
64
+ \`\`\`
65
+
66
+ ### 4. **Deployment Tokens** (For CI/CD)
67
+
68
+ #### Vercel
69
+ - **Where to get**: [vercel.com/account/tokens](https://vercel.com/account/tokens)
70
+ - **Variable**:
71
+ \`\`\`env
72
+ VERCEL_TOKEN=abc123...
73
+ \`\`\`
74
+
75
+ #### HuggingFace
76
+ - **Where to get**: [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens)
77
+ - **Permissions**: Write access to create/update Spaces
78
+ - **Variables**:
79
+ \`\`\`env
80
+ HF_TOKEN=hf_abc123...
81
+ HF_SPACE_NAME=your-username/deep-rebuild
82
+ \`\`\`
83
+
84
+ ## 🔧 Quick Setup Commands
85
+
86
+ ### Local Development
87
+ \`\`\`bash
88
+ # 1. Clone and install
89
+ git clone <your-repo>
90
+ cd deep-rebuild
91
+ npm install
92
+
93
+ # 2. Copy environment file
94
+ cp .env.example .env.local
95
+
96
+ # 3. Add your API keys to .env.local
97
+ # 4. Run development server
98
+ npm run dev
99
+ \`\`\`
100
+
101
+ ### Deploy to Vercel
102
+ \`\`\`bash
103
+ # Option 1: One-click deploy
104
+ # Click: https://vercel.com/new/clone?repository-url=<your-github-repo>
105
+
106
+ # Option 2: Vercel CLI
107
+ npm i -g vercel
108
+ vercel --prod
109
+ \`\`\`
110
+
111
+ ### Deploy to HuggingFace
112
+ \`\`\`bash
113
+ # 1. Create Space at huggingface.co/new-space
114
+ # 2. Choose Docker SDK
115
+ # 3. Push your code to the Space repository
116
+ # 4. Add environment variables in Space settings
117
+ \`\`\`
118
+
119
+ ## 🎯 Minimum Required Setup
120
+
121
+ **For basic functionality, you only need**:
122
+ 1. **Supabase** (free tier) - Database
123
+ 2. **One AI Provider** (OpenAI recommended) - AI Generation
124
+ 3. **Environment variables** in your deployment platform
125
+
126
+ **Optional enhancements**:
127
+ - MongoDB for backup storage
128
+ - Multiple AI providers for redundancy
129
+ - Deployment tokens for automated CI/CD
130
+
131
+ ## 🚨 Security Notes
132
+
133
+ - **Never commit API keys** to version control
134
+ - Use **environment variables** in production
135
+ - **Rotate keys** regularly
136
+ - Set **usage limits** on AI provider accounts
137
+ - Use **service role keys** for Supabase (not anon keys)
138
+
139
+ ## 📊 Cost Estimates (Monthly)
140
+
141
+ - **Supabase**: Free (up to 500MB)
142
+ - **MongoDB Atlas**: Free (up to 512MB)
143
+ - **OpenAI**: $5-50 (depending on usage)
144
+ - **Groq**: $0-20 (generous free tier)
145
+ - **Vercel**: Free (hobby projects)
146
+ - **HuggingFace**: Free (public spaces)
147
+
148
+ **Total estimated cost**: $5-70/month depending on AI usage
149
+ \`\`\`
150
+
151
+ ```dockerfile file="" isHidden
next.config.mjs ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ reactStrictMode: true,
4
+ experimental: {
5
+ serverComponentsExternalPackages: ['mongodb']
6
+ },
7
+ output: 'standalone',
8
+ env: {
9
+ CUSTOM_KEY: process.env.CUSTOM_KEY,
10
+ },
11
+ async headers() {
12
+ return [
13
+ {
14
+ source: '/api/:path*',
15
+ headers: [
16
+ { key: 'Access-Control-Allow-Origin', value: '*' },
17
+ { key: 'Access-Control-Allow-Methods', value: 'GET, POST, PUT, DELETE, OPTIONS' },
18
+ { key: 'Access-Control-Allow-Headers', value: 'Content-Type, Authorization' },
19
+ ],
20
+ },
21
+ ]
22
+ },
23
+ // Added eslint, typescript, and images configurations
24
+ eslint: {
25
+ ignoreDuringBuilds: true,
26
+ },
27
+ typescript: {
28
+ ignoreBuildErrors: true,
29
+ },
30
+ images: {
31
+ unoptimized: true,
32
+ },
33
+ }
34
+
35
+ export default nextConfig
package.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "deep-rebuild",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "build": "next build",
7
+ "dev": "next dev",
8
+ "lint": "next lint",
9
+ "start": "next start",
10
+ "type-check": "tsc --noEmit"
11
+ },
12
+ "dependencies": {
13
+ "@ai-sdk/groq": "latest",
14
+ "@ai-sdk/openai": "latest",
15
+ "@aws-sdk/credential-providers": "latest",
16
+ "@mongodb-js/zstd": "latest",
17
+ "@openrouter/ai-sdk-provider": "latest",
18
+ "@radix-ui/react-dialog": "^1.0.5",
19
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
20
+ "@radix-ui/react-scroll-area": "^1.0.5",
21
+ "@radix-ui/react-select": "^2.0.0",
22
+ "@radix-ui/react-separator": "^1.0.3",
23
+ "@radix-ui/react-slot": "^1.0.2",
24
+ "@radix-ui/react-switch": "^1.0.3",
25
+ "@radix-ui/react-textarea": "^1.0.4",
26
+ "@remix-run/react": "latest",
27
+ "@supabase/supabase-js": "latest",
28
+ "@sveltejs/kit": "latest",
29
+ "@types/node": "^20.0.0",
30
+ "@types/react": "^18.2.0",
31
+ "@types/react-dom": "^18.2.0",
32
+ "@vercel/analytics": "latest",
33
+ "ai": "latest",
34
+ "autoprefixer": "^10.4.0",
35
+ "class-variance-authority": "^0.7.1",
36
+ "clsx": "^2.1.1",
37
+ "gcp-metadata": "latest",
38
+ "geist": "latest",
39
+ "jszip": "^3.10.0",
40
+ "kerberos": "latest",
41
+ "lucide-react": "^0.454.0",
42
+ "mongodb": "latest",
43
+ "mongodb-client-encryption": "latest",
44
+ "next": "15.2.4",
45
+ "next-themes": "latest",
46
+ "openai": "^4.20.0",
47
+ "postcss": "^8.4.0",
48
+ "react": "^19",
49
+ "react-dom": "^19",
50
+ "snappy": "latest",
51
+ "socks": "latest",
52
+ "svelte": "latest",
53
+ "tailwind-merge": "^2.5.5",
54
+ "tailwindcss": "^3.4.17",
55
+ "tailwindcss-animate": "^1.0.7",
56
+ "typescript": "^5.0.0",
57
+ "vue": "latest",
58
+ "vue-router": "latest",
59
+ "zod": "latest"
60
+ },
61
+ "devDependencies": {
62
+ "@types/node": "^22",
63
+ "@types/react": "^19",
64
+ "@types/react-dom": "^19",
65
+ "eslint": "^8.0.0",
66
+ "eslint-config-next": "^14.0.0",
67
+ "postcss": "^8.5",
68
+ "typescript": "^5"
69
+ }
70
+ }
pnpm-lock.yaml ADDED
The diff for this file is too large to render. See raw diff
 
postcss.config.mjs ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ /** @type {import('postcss-load-config').Config} */
2
+ const config = {
3
+ plugins: {
4
+ tailwindcss: {},
5
+ },
6
+ };
7
+
8
+ export default config;
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ # Python dependencies (for Hugging Face Spaces if needed)
2
+ flask
3
+ numpy
4
+ # Add other dependencies as needed
tailwind.config.ts ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { Config } from "tailwindcss";
2
+
3
+ // all in fixtures is set to tailwind v3 as interims solutions
4
+
5
+ const config: Config = {
6
+ darkMode: ["class"],
7
+ content: [
8
+ "./pages/**/*.{js,ts,jsx,tsx,mdx}",
9
+ "./components/**/*.{js,ts,jsx,tsx,mdx}",
10
+ "./app/**/*.{js,ts,jsx,tsx,mdx}",
11
+ "*.{js,ts,jsx,tsx,mdx}"
12
+ ],
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ background: 'hsl(var(--background))',
17
+ foreground: 'hsl(var(--foreground))',
18
+ card: {
19
+ DEFAULT: 'hsl(var(--card))',
20
+ foreground: 'hsl(var(--card-foreground))'
21
+ },
22
+ popover: {
23
+ DEFAULT: 'hsl(var(--popover))',
24
+ foreground: 'hsl(var(--popover-foreground))'
25
+ },
26
+ primary: {
27
+ DEFAULT: 'hsl(var(--primary))',
28
+ foreground: 'hsl(var(--primary-foreground))'
29
+ },
30
+ secondary: {
31
+ DEFAULT: 'hsl(var(--secondary))',
32
+ foreground: 'hsl(var(--secondary-foreground))'
33
+ },
34
+ muted: {
35
+ DEFAULT: 'hsl(var(--muted))',
36
+ foreground: 'hsl(var(--muted-foreground))'
37
+ },
38
+ accent: {
39
+ DEFAULT: 'hsl(var(--accent))',
40
+ foreground: 'hsl(var(--accent-foreground))'
41
+ },
42
+ destructive: {
43
+ DEFAULT: 'hsl(var(--destructive))',
44
+ foreground: 'hsl(var(--destructive-foreground))'
45
+ },
46
+ border: 'hsl(var(--border))',
47
+ input: 'hsl(var(--input))',
48
+ ring: 'hsl(var(--ring))',
49
+ chart: {
50
+ '1': 'hsl(var(--chart-1))',
51
+ '2': 'hsl(var(--chart-2))',
52
+ '3': 'hsl(var(--chart-3))',
53
+ '4': 'hsl(var(--chart-4))',
54
+ '5': 'hsl(var(--chart-5))'
55
+ },
56
+ sidebar: {
57
+ DEFAULT: 'hsl(var(--sidebar-background))',
58
+ foreground: 'hsl(var(--sidebar-foreground))',
59
+ primary: 'hsl(var(--sidebar-primary))',
60
+ 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))',
61
+ accent: 'hsl(var(--sidebar-accent))',
62
+ 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',
63
+ border: 'hsl(var(--sidebar-border))',
64
+ ring: 'hsl(var(--sidebar-ring))'
65
+ }
66
+ },
67
+ borderRadius: {
68
+ lg: 'var(--radius)',
69
+ md: 'calc(var(--radius) - 2px)',
70
+ sm: 'calc(var(--radius) - 4px)'
71
+ },
72
+ keyframes: {
73
+ 'accordion-down': {
74
+ from: {
75
+ height: '0'
76
+ },
77
+ to: {
78
+ height: 'var(--radix-accordion-content-height)'
79
+ }
80
+ },
81
+ 'accordion-up': {
82
+ from: {
83
+ height: 'var(--radix-accordion-content-height)'
84
+ },
85
+ to: {
86
+ height: '0'
87
+ }
88
+ }
89
+ },
90
+ animation: {
91
+ 'accordion-down': 'accordion-down 0.2s ease-out',
92
+ 'accordion-up': 'accordion-up 0.2s ease-out'
93
+ }
94
+ }
95
+ },
96
+ plugins: [require("tailwindcss-animate")],
97
+ };
98
+ export default config;
tsconfig.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "lib": ["dom", "dom.iterable", "esnext"],
4
+ "allowJs": true,
5
+ "target": "ES6",
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./*"]
23
+ }
24
+ },
25
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26
+ "exclude": ["node_modules"]
27
+ }
vercel.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": 2,
3
+ "builds": [
4
+ {
5
+ "src": "next.config.mjs",
6
+ "use": "@vercel/next"
7
+ }
8
+ ],
9
+ "routes": [
10
+ {
11
+ "src": "/(.*)",
12
+ "dest": "/"
13
+ }
14
+ ],
15
+ "env": {
16
+ "NEXT_PUBLIC_SUPABASE_URL": "@supabase-url",
17
+ "SUPABASE_SERVICE_ROLE_KEY": "@supabase-service-key",
18
+ "OPENAI_API_KEY": "@openai-key",
19
+ "OPENROUTER_API_KEY": "@openrouter-key",
20
+ "GROQ_API_KEY": "@groq-key",
21
+ "XAI_API_KEY": "@xai-key"
22
+ }
23
+ }