Bhishaj commited on
Commit
3bf6f3c
·
1 Parent(s): f4ae8bb

Update dashboard and main files, add landing page

Browse files
Files changed (3) hide show
  1. dashboard.html +5 -0
  2. landingpage.html +426 -0
  3. main.py +16 -7
dashboard.html CHANGED
@@ -147,6 +147,10 @@
147
  </div>
148
  </div>
149
  </div>
 
 
 
 
150
  <button class="group relative flex-none flex cursor-pointer items-center justify-center overflow-hidden rounded-full h-9 lg:h-10 px-4 lg:px-6 bg-gradient-to-r from-amber-600 to-amber-800 hover:from-amber-500 hover:to-amber-700 border border-white/10 shadow-[0_0_15px_rgba(245,158,11,0.3)] transition-all" id="deployBtn">
151
  <div class="absolute inset-0 bg-white/10 opacity-0 group-hover:opacity-100 transition-opacity"></div>
152
  <span class="material-symbols-outlined lg:mr-2 text-lg relative z-10">rocket_launch</span>
@@ -390,3 +394,4 @@ copyBtn.addEventListener('click', () => {
390
  </script>
391
  </body>
392
  </html>
 
 
147
  </div>
148
  </div>
149
  </div>
150
+ <a class="hidden sm:inline-flex flex-none items-center justify-center rounded-full h-9 lg:h-10 px-4 lg:px-5 bg-white/5 hover:bg-white/10 border border-white/10 text-white text-xs lg:text-sm font-bold transition-all" href="/">
151
+ <span class="material-symbols-outlined text-lg lg:mr-2">arrow_back</span>
152
+ <span class="hidden lg:inline">Back to Home</span>
153
+ </a>
154
  <button class="group relative flex-none flex cursor-pointer items-center justify-center overflow-hidden rounded-full h-9 lg:h-10 px-4 lg:px-6 bg-gradient-to-r from-amber-600 to-amber-800 hover:from-amber-500 hover:to-amber-700 border border-white/10 shadow-[0_0_15px_rgba(245,158,11,0.3)] transition-all" id="deployBtn">
155
  <div class="absolute inset-0 bg-white/10 opacity-0 group-hover:opacity-100 transition-opacity"></div>
156
  <span class="material-symbols-outlined lg:mr-2 text-lg relative z-10">rocket_launch</span>
 
394
  </script>
395
  </body>
396
  </html>
397
+
landingpage.html ADDED
@@ -0,0 +1,426 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+
3
+ <html class="dark" lang="en"><head>
4
+ <meta charset="utf-8"/>
5
+ <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
6
+ <title>MerchFlow AI | Autonomous E-Commerce Catalog Intelligence</title>
7
+ <!-- BEGIN: External Resources -->
8
+ <script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
9
+ <link href="https://fonts.googleapis.com" rel="preconnect"/>
10
+ <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
11
+ <link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&amp;display=swap" rel="stylesheet"/>
12
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
13
+ <!-- END: External Resources -->
14
+ <!-- BEGIN: Tailwind Configuration -->
15
+ <script id="tailwind-config">
16
+ tailwind.config = {
17
+ darkMode: "class",
18
+ theme: {
19
+ extend: {
20
+ colors: {
21
+ "primary": "#fbbf24", // Amber-400
22
+ "primary-dark": "#d97706", // Amber-600
23
+ "charcoal": "#0a0a0a",
24
+ "glass-white": "rgba(255, 255, 255, 0.08)",
25
+ "glass-amber": "rgba(251, 191, 36, 0.05)",
26
+ },
27
+ fontFamily: {
28
+ "sans": ["Plus Jakarta Sans", "sans-serif"],
29
+ },
30
+ animation: {
31
+ 'pulse-slow': 'pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite',
32
+ 'shine': 'shine 2s infinite',
33
+ 'float': 'float 6s ease-in-out infinite',
34
+ },
35
+ keyframes: {
36
+ shine: {
37
+ '0%': { transform: 'translateX(-100%)' },
38
+ '100%': { transform: 'translateX(100%)' }
39
+ },
40
+ float: {
41
+ '0%, 100%': { transform: 'translateY(0)' },
42
+ '50%': { transform: 'translateY(-20px)' }
43
+ }
44
+ }
45
+ },
46
+ },
47
+ }
48
+ </script>
49
+ <!-- END: Tailwind Configuration -->
50
+ <!-- BEGIN: Custom Styles -->
51
+ <style data-purpose="layout-and-glassmorphism">
52
+ body {
53
+ background-color: #0a0a0a;
54
+ background-image:
55
+ radial-gradient(circle at 20% 30%, rgba(217, 119, 6, 0.08) 0%, transparent 40%),
56
+ radial-gradient(circle at 80% 70%, rgba(251, 191, 36, 0.05) 0%, transparent 40%);
57
+ }
58
+
59
+ .glass-panel {
60
+ background: rgba(255, 255, 255, 0.03);
61
+ backdrop-filter: blur(20px);
62
+ -webkit-backdrop-filter: blur(20px);
63
+ border: 1px solid rgba(255, 255, 255, 0.08);
64
+ }
65
+
66
+ .glass-card-hover:hover {
67
+ background: rgba(251, 191, 36, 0.05);
68
+ border-color: rgba(251, 191, 36, 0.3);
69
+ transform: translateY(-4px);
70
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
71
+ }
72
+
73
+ .text-glow {
74
+ text-shadow: 0 0 20px rgba(251, 191, 36, 0.3);
75
+ }
76
+
77
+ .custom-scrollbar::-webkit-scrollbar {
78
+ width: 6px;
79
+ }
80
+ .custom-scrollbar::-webkit-scrollbar-track {
81
+ background: transparent;
82
+ }
83
+ .custom-scrollbar::-webkit-scrollbar-thumb {
84
+ background: rgba(255, 255, 255, 0.1);
85
+ border-radius: 10px;
86
+ }
87
+
88
+ /* Scroll Reveal Animation Styles */
89
+ .reveal-card {
90
+ opacity: 0;
91
+ transform: translateY(30px);
92
+ transition: all 0.8s cubic-bezier(0.22, 1, 0.36, 1);
93
+ will-change: transform, opacity;
94
+ }
95
+
96
+ .reveal-card.is-visible {
97
+ opacity: 1;
98
+ transform: translateY(0);
99
+ }
100
+ </style>
101
+ <!-- END: Custom Styles -->
102
+ </head>
103
+ <body class="text-slate-200 antialiased font-sans">
104
+ <!-- BEGIN: NavHeader -->
105
+ <header class="fixed top-0 w-full z-50 px-6 py-4 flex items-center justify-between glass-panel border-t-0 border-x-0">
106
+ <div class="flex items-center gap-3">
107
+ <div class="flex items-center justify-center size-10 rounded-lg bg-gradient-to-br from-primary to-primary-dark text-charcoal">
108
+ <span class="material-symbols-outlined font-bold">all_inclusive</span>
109
+ </div>
110
+ <div>
111
+ <h1 class="text-white font-extrabold text-lg leading-none">MerchFlow AI</h1>
112
+ <p class="text-[10px] text-primary uppercase tracking-[0.2em] font-semibold">Enterprise Edition</p>
113
+ </div>
114
+ </div>
115
+ <nav class="hidden md:flex items-center gap-8">
116
+ <a class="text-sm font-medium hover:text-primary transition-colors" href="#features">Features</a>
117
+ <a class="text-sm font-medium hover:text-primary transition-colors" href="#architecture">Architecture</a>
118
+ <a class="text-sm font-medium hover:text-primary transition-colors" href="#tech-stack">Tech Stack</a>
119
+ <a class="text-sm font-medium hover:text-primary transition-colors" href="#legal">Legal</a>
120
+ </nav>
121
+ <div class="flex items-center gap-4">
122
+ <button class="px-5 py-2.5 rounded-full text-sm font-bold bg-white/5 hover:bg-white/10 border border-white/10 transition-all">
123
+ Sign In
124
+ </button>
125
+ </div>
126
+ </header>
127
+ <!-- END: NavHeader -->
128
+ <main class="pt-24">
129
+ <!-- BEGIN: Hero Section -->
130
+ <section class="relative min-h-[90vh] flex items-center px-6 lg:px-24 overflow-hidden" id="hero">
131
+ <div class="grid lg:grid-cols-2 gap-12 items-center w-full">
132
+ <div class="z-10">
133
+ <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-primary/10 border border-primary/20 text-primary text-xs font-bold uppercase tracking-widest mb-6">
134
+ <span class="relative flex h-2 w-2">
135
+ <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"></span>
136
+ <span class="relative inline-flex rounded-full h-2 w-2 bg-primary"></span>
137
+ </span>
138
+ Now in Private Beta
139
+ </span>
140
+ <h2 class="text-5xl lg:text-7xl font-extrabold text-white leading-[1.1] mb-6 tracking-tight">
141
+ Autonomous <br/>
142
+ <span class="text-transparent bg-clip-text bg-gradient-to-r from-primary to-primary-dark">E-Commerce</span> <br/>
143
+ Intelligence
144
+ </h2>
145
+ <p class="text-lg text-slate-400 mb-10 max-w-xl leading-relaxed">
146
+ A multi-agent AI pipeline that converts raw product imagery into enterprise-grade, SEO-optimized e-commerce catalogs in seconds.
147
+ </p>
148
+ <div class="flex flex-wrap gap-4">
149
+ <a class="flex items-center gap-3 px-8 py-4 bg-primary hover:bg-primary-dark text-charcoal rounded-xl font-bold transition-all transform hover:scale-105 shadow-[0_0_30px_rgba(251,191,36,0.2)]" href="/dashboard">
150
+ <span class="material-symbols-outlined">rocket_launch</span>
151
+ Enter Dashboard
152
+ </a>
153
+ <button class="flex items-center gap-3 px-8 py-4 bg-white/5 hover:bg-white/10 border border-white/10 rounded-xl font-bold transition-all">
154
+ Watch Demo
155
+ </button>
156
+ </div>
157
+ </div>
158
+ <!-- Visual: Floating Glassmorphic Product Conversion -->
159
+ <div class="relative flex justify-center items-center">
160
+ <div class="absolute w-[120%] h-[120%] bg-primary/5 rounded-full blur-[100px] -z-10"></div>
161
+ <div class="relative animate-float">
162
+ <!-- Glass Mockup for Conversion -->
163
+ <div class="w-72 h-96 glass-panel rounded-[2rem] p-6 shadow-2xl relative">
164
+ <div class="w-full h-48 rounded-2xl bg-white/5 border border-white/10 overflow-hidden mb-4 flex items-center justify-center">
165
+ <span class="material-symbols-outlined text-6xl text-white/20">image</span>
166
+ </div>
167
+ <div class="space-y-3">
168
+ <div class="h-4 w-3/4 bg-white/10 rounded"></div>
169
+ <div class="h-4 w-1/2 bg-white/10 rounded"></div>
170
+ <div class="pt-4 grid grid-cols-3 gap-2">
171
+ <div class="h-8 rounded bg-primary/20 border border-primary/30"></div>
172
+ <div class="h-8 rounded bg-white/5 border border-white/10"></div>
173
+ <div class="h-8 rounded bg-white/5 border border-white/10"></div>
174
+ </div>
175
+ </div>
176
+ <!-- JSON Output Popover -->
177
+ <div class="absolute -right-12 -bottom-10 w-64 glass-panel rounded-2xl p-4 border-primary/30 shadow-2xl scale-90 lg:scale-100">
178
+ <div class="flex items-center gap-2 mb-2">
179
+ <div class="size-2 rounded-full bg-green-500"></div>
180
+ <span class="text-[10px] font-mono text-slate-400">output.json</span>
181
+ </div>
182
+ <pre class="text-[10px] font-mono text-primary/80"><code>{
183
+ "sku": "MF-9902",
184
+ "name": "AeroShell X",
185
+ "tags": ["SEO", "Hiker"]
186
+ }</code></pre>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ </section>
193
+ <!-- END: Hero Section -->
194
+ <!-- BEGIN: Core Value Prop -->
195
+ <section class="py-24 px-6 lg:px-24" id="features">
196
+ <div class="max-w-4xl mx-auto text-center mb-16">
197
+ <h3 class="text-3xl lg:text-5xl font-bold text-white mb-6">Zero Manual Bottlenecks</h3>
198
+ <p class="text-slate-400 text-lg">Shift from human-in-the-loop to autonomous excellence. Our pipeline ensures your inventory is ready for global distribution instantly.</p>
199
+ </div>
200
+ <div class="grid md:grid-cols-3 gap-8">
201
+ <div class="p-8 rounded-3xl glass-panel glass-card-hover text-center">
202
+ <div class="size-14 mx-auto mb-6 rounded-2xl bg-primary/10 flex items-center justify-center">
203
+ <span class="material-symbols-outlined text-primary text-3xl">bolt</span>
204
+ </div>
205
+ <h4 class="text-xl font-bold text-white mb-3">Instant Delivery</h4>
206
+ <p class="text-slate-400 text-sm leading-relaxed">Go from product photo to live Shopify entry in under 15 seconds with zero latency agents.</p>
207
+ </div>
208
+ <div class="p-8 rounded-3xl glass-panel glass-card-hover text-center border-primary/20 bg-glass-amber">
209
+ <div class="size-14 mx-auto mb-6 rounded-2xl bg-primary flex items-center justify-center">
210
+ <span class="material-symbols-outlined text-charcoal text-3xl">verified</span>
211
+ </div>
212
+ <h4 class="text-xl font-bold text-white mb-3">0% Human Error</h4>
213
+ <p class="text-slate-400 text-sm leading-relaxed">Automated cross-referencing against technical specs ensures 100% attribute accuracy.</p>
214
+ </div>
215
+ <div class="p-8 rounded-3xl glass-panel glass-card-hover text-center">
216
+ <div class="size-14 mx-auto mb-6 rounded-2xl bg-primary/10 flex items-center justify-center">
217
+ <span class="material-symbols-outlined text-primary text-3xl">trending_up</span>
218
+ </div>
219
+ <h4 class="text-xl font-bold text-white mb-3">SEO Native</h4>
220
+ <p class="text-slate-400 text-sm leading-relaxed">Every description is engineered for search algorithms using real-time market sentiment data.</p>
221
+ </div>
222
+ </div>
223
+ </section>
224
+ <!-- END: Core Value Prop -->
225
+ <!-- BEGIN: Multi-Agent Pipeline -->
226
+ <section class="py-24 px-6 lg:px-24 bg-white/2" id="architecture">
227
+ <div class="flex flex-col lg:flex-row gap-16 items-start">
228
+ <div class="lg:w-1/3 sticky top-32">
229
+ <h3 class="text-4xl font-bold text-white mb-6">Multi-Agent <br/>Pipeline</h3>
230
+ <p class="text-slate-400 leading-relaxed mb-8">A sophisticated orchestration of specialized AI agents working in harmony to deliver high-fidelity catalog data.</p>
231
+ <div class="p-6 rounded-2xl border border-white/5 bg-white/2">
232
+ <div class="flex items-center gap-4 text-sm text-slate-300">
233
+ <span class="material-symbols-outlined text-green-500">memory</span>
234
+ Orchestration Layer: FastAPI + LangGraph
235
+ </div>
236
+ </div>
237
+ </div>
238
+ <div class="lg:w-2/3 grid gap-6">
239
+ <!-- Card 1 -->
240
+ <div class="reveal-card group p-8 rounded-3xl glass-panel flex gap-6 items-start hover:border-primary/40 transition-all">
241
+ <div class="size-16 rounded-2xl bg-indigo-500/20 flex-shrink-0 flex items-center justify-center">
242
+ <span class="material-symbols-outlined text-indigo-400 text-3xl">visibility</span>
243
+ </div>
244
+ <div>
245
+ <div class="flex items-center justify-between mb-2">
246
+ <h4 class="text-xl font-bold text-white">Visual Analyst</h4>
247
+ <span class="text-[10px] font-mono px-2 py-1 rounded bg-indigo-500/10 text-indigo-400 border border-indigo-500/20">GEMINI 2.5 FLASH</span>
248
+ </div>
249
+ <p class="text-slate-400 text-sm leading-relaxed">Performs deep pixel analysis to extract material textures, silhouettes, and hardware details directly from raw imagery.</p>
250
+ </div>
251
+ </div>
252
+ <!-- Card 2 -->
253
+ <div class="reveal-card group p-8 rounded-3xl glass-panel flex gap-6 items-start hover:border-primary/40 transition-all">
254
+ <div class="size-16 rounded-2xl bg-cyan-500/20 flex-shrink-0 flex items-center justify-center">
255
+ <span class="material-symbols-outlined text-cyan-400 text-3xl">database</span>
256
+ </div>
257
+ <div>
258
+ <div class="flex items-center justify-between mb-2">
259
+ <h4 class="text-xl font-bold text-white">Semantic Memory</h4>
260
+ <span class="text-[10px] font-mono px-2 py-1 rounded bg-cyan-500/10 text-cyan-400 border border-cyan-500/20">PINECONE RAG</span>
261
+ </div>
262
+ <p class="text-slate-400 text-sm leading-relaxed">Queries vector databases for historical product context, brand voice guidelines, and competitive SEO keywords.</p>
263
+ </div>
264
+ </div>
265
+ <!-- Card 3 -->
266
+ <div class="reveal-card group p-8 rounded-3xl glass-panel flex gap-6 items-start hover:border-primary/40 transition-all">
267
+ <div class="size-16 rounded-2xl bg-primary/20 flex-shrink-0 flex items-center justify-center">
268
+ <span class="material-symbols-outlined text-primary text-3xl">edit_note</span>
269
+ </div>
270
+ <div>
271
+ <div class="flex items-center justify-between mb-2">
272
+ <h4 class="text-xl font-bold text-white">Writer Agent</h4>
273
+ <span class="text-[10px] font-mono px-2 py-1 rounded bg-primary/10 text-primary border border-primary/20">LLAMA 3.3 70B (GROQ)</span>
274
+ </div>
275
+ <p class="text-slate-400 text-sm leading-relaxed">Synthesizes visual and semantic data into high-converting product descriptions, bullet points, and metadata.</p>
276
+ </div>
277
+ </div>
278
+ </div>
279
+ </div>
280
+ </section>
281
+ <!-- END: Multi-Agent Pipeline -->
282
+ <!-- BEGIN: Tech Stack Table -->
283
+ <section class="py-24 px-6 lg:px-24" id="tech-stack">
284
+ <div class="glass-panel rounded-3xl overflow-hidden border-white/5 shadow-2xl">
285
+ <div class="px-8 py-6 border-b border-white/5 bg-white/2 flex items-center justify-between">
286
+ <h3 class="text-xl font-bold text-white">Technical Infrastructure</h3>
287
+ <span class="text-xs text-slate-500 font-mono tracking-widest">SYSTEM_MANIFEST.V2</span>
288
+ </div>
289
+ <div class="overflow-x-auto">
290
+ <table class="w-full text-left">
291
+ <thead>
292
+ <tr class="bg-white/2 text-[10px] uppercase tracking-widest text-slate-500 border-b border-white/5">
293
+ <th class="px-8 py-4 font-bold">Component</th>
294
+ <th class="px-8 py-4 font-bold">Technology</th>
295
+ <th class="px-8 py-4 font-bold">Purpose</th>
296
+ <th class="px-8 py-4 font-bold">Status</th>
297
+ </tr>
298
+ </thead>
299
+ <tbody class="text-sm">
300
+ <tr class="border-b border-white/5 hover:bg-white/2 transition-colors">
301
+ <td class="px-8 py-6 font-bold text-white">Core Backend</td>
302
+ <td class="px-8 py-6 text-slate-400">Python 3.10+ / FastAPI</td>
303
+ <td class="px-8 py-6 text-slate-400">Asynchronous high-throughput processing</td>
304
+ <td class="px-8 py-6"><span class="px-2 py-1 rounded-full bg-green-500/10 text-green-500 text-[10px] font-bold">STABLE</span></td>
305
+ </tr>
306
+ <tr class="border-b border-white/5 hover:bg-white/2 transition-colors">
307
+ <td class="px-8 py-6 font-bold text-white">Agent Framework</td>
308
+ <td class="px-8 py-6 text-slate-400">Google GenAI / Groq SDK</td>
309
+ <td class="px-8 py-6 text-slate-400">Multi-LLM orchestration &amp; execution</td>
310
+ <td class="px-8 py-6"><span class="px-2 py-1 rounded-full bg-green-500/10 text-green-500 text-[10px] font-bold">STABLE</span></td>
311
+ </tr>
312
+ <tr class="border-b border-white/5 hover:bg-white/2 transition-colors">
313
+ <td class="px-8 py-6 font-bold text-white">Knowledge Base</td>
314
+ <td class="px-8 py-6 text-slate-400">Pinecone Vector DB</td>
315
+ <td class="px-8 py-6 text-slate-400">Retrieval Augmented Generation (RAG)</td>
316
+ <td class="px-8 py-6"><span class="px-2 py-1 rounded-full bg-green-500/10 text-green-500 text-[10px] font-bold">STABLE</span></td>
317
+ </tr>
318
+ <tr class="hover:bg-white/2 transition-colors">
319
+ <td class="px-8 py-6 font-bold text-white">Deployment</td>
320
+ <td class="px-8 py-6 text-slate-400">Docker / Kubernetes</td>
321
+ <td class="px-8 py-6 text-slate-400">Containerized auto-scaling architecture</td>
322
+ <td class="px-8 py-6"><span class="px-2 py-1 rounded-full bg-green-500/10 text-green-500 text-[10px] font-bold">STABLE</span></td>
323
+ </tr>
324
+ </tbody>
325
+ </table>
326
+ </div>
327
+ </div>
328
+ </section>
329
+ <!-- END: Tech Stack Table -->
330
+ <!-- BEGIN: Final CTA -->
331
+ <section class="py-24 px-6 text-center">
332
+ <div class="max-w-3xl mx-auto glass-panel p-12 lg:p-20 rounded-[3rem] border-primary/20 relative overflow-hidden">
333
+ <div class="absolute -top-24 -right-24 size-64 bg-primary/10 rounded-full blur-3xl"></div>
334
+ <h3 class="text-4xl lg:text-6xl font-extrabold text-white mb-8 tracking-tight">Scale Your Catalog To <br/>Infinite.</h3>
335
+ <p class="text-slate-400 text-lg mb-10 leading-relaxed">Join enterprise retail leaders who are automating their supply chain intelligence with MerchFlow AI.</p>
336
+ <div class="flex flex-col sm:flex-row items-center justify-center gap-4">
337
+ <input class="w-full sm:w-auto min-w-[300px] bg-charcoal border border-white/10 rounded-xl px-6 py-4 focus:ring-2 focus:ring-primary/50 outline-none transition-all text-white" placeholder="Enter corporate email" type="email"/>
338
+ <button class="w-full sm:w-auto px-8 py-4 bg-primary hover:bg-primary-dark text-charcoal rounded-xl font-bold transition-all transform hover:scale-105">
339
+ Request Access
340
+ </button>
341
+ </div>
342
+ </div>
343
+ </section>
344
+ <!-- END: Final CTA -->
345
+ </main>
346
+ <!-- BEGIN: Footer -->
347
+ <footer class="mt-12 border-t border-white/5 bg-charcoal py-12 px-6 lg:px-24" id="legal">
348
+ <div class="flex flex-col md:flex-row justify-between items-start gap-12 mb-12">
349
+ <div class="max-w-xs">
350
+ <div class="flex items-center gap-3 mb-6">
351
+ <div class="flex items-center justify-center size-8 rounded-lg bg-primary text-charcoal">
352
+ <span class="material-symbols-outlined text-sm font-bold">all_inclusive</span>
353
+ </div>
354
+ <span class="text-white font-bold tracking-tight">MerchFlow AI</span>
355
+ </div>
356
+ <p class="text-xs text-slate-500 leading-relaxed">
357
+ The exclusive proprietary property of Bhishaj Technologies. Designed and engineered for high-performance e-commerce logistics.
358
+ </p>
359
+ </div>
360
+ <div class="grid grid-cols-2 md:grid-cols-3 gap-12">
361
+ <div>
362
+ <h5 class="text-white text-xs font-bold uppercase tracking-widest mb-6">Platform</h5>
363
+ <ul class="space-y-4 text-xs text-slate-400">
364
+ <li><a class="hover:text-primary" href="#">Agent Dashboard</a></li>
365
+ <li><a class="hover:text-primary" href="#">API Documentation</a></li>
366
+ <li><a class="hover:text-primary" href="#">Pricing Plans</a></li>
367
+ </ul>
368
+ </div>
369
+ <div>
370
+ <h5 class="text-white text-xs font-bold uppercase tracking-widest mb-6">Company</h5>
371
+ <ul class="space-y-4 text-xs text-slate-400">
372
+ <li><a class="hover:text-primary" href="#">Bhishaj Tech</a></li>
373
+ <li><a class="hover:text-primary" href="#">Careers</a></li>
374
+ <li><a class="hover:text-primary" href="#">Contact</a></li>
375
+ </ul>
376
+ </div>
377
+ <div>
378
+ <h5 class="text-white text-xs font-bold uppercase tracking-widest mb-6">Security</h5>
379
+ <ul class="space-y-4 text-xs text-slate-400">
380
+ <li><a class="hover:text-primary" href="#">Privacy Policy</a></li>
381
+ <li><a class="hover:text-primary" href="#">Terms of Service</a></li>
382
+ <li><a class="hover:text-primary" href="#">SLA</a></li>
383
+ </ul>
384
+ </div>
385
+ </div>
386
+ </div>
387
+ <div class="pt-8 border-t border-white/5 flex flex-col md:flex-row justify-between items-center gap-4">
388
+ <p class="text-[10px] text-slate-600">
389
+ © 2026 Bhishaj Technologies — UDYAM-UP-02-0108589. All Rights Reserved.
390
+ </p>
391
+ <div class="flex gap-6">
392
+ <span class="material-symbols-outlined text-slate-600 hover:text-primary cursor-pointer">public</span>
393
+ <span class="material-symbols-outlined text-slate-600 hover:text-primary cursor-pointer">lock</span>
394
+ <span class="material-symbols-outlined text-slate-600 hover:text-primary cursor-pointer">hub</span>
395
+ </div>
396
+ </div>
397
+ </footer>
398
+ <!-- END: Footer -->
399
+ <!-- BEGIN: Animation Script -->
400
+ <script id="scroll-reveal-logic">
401
+ document.addEventListener('DOMContentLoaded', () => {
402
+ const observerOptions = {
403
+ root: null,
404
+ threshold: 0.15,
405
+ rootMargin: '0px 0px -50px 0px'
406
+ };
407
+
408
+ const observer = new IntersectionObserver((entries) => {
409
+ entries.forEach((entry, index) => {
410
+ if (entry.isIntersecting) {
411
+ // Stagger the animation of the cards
412
+ setTimeout(() => {
413
+ entry.target.classList.add('is-visible');
414
+ }, index * 100);
415
+ // Once visible, stop observing this specific element
416
+ observer.unobserve(entry.target);
417
+ }
418
+ });
419
+ }, observerOptions);
420
+
421
+ const revealCards = document.querySelectorAll('.reveal-card');
422
+ revealCards.forEach(card => observer.observe(card));
423
+ });
424
+ </script>
425
+ <!-- END: Animation Script -->
426
+ </body></html>
main.py CHANGED
@@ -2,8 +2,9 @@ import os
2
  import asyncio
3
  import json
4
  import traceback
 
5
  from fastapi import FastAPI, UploadFile, File, HTTPException
6
- from fastapi.responses import HTMLResponse, JSONResponse
7
  from dotenv import load_dotenv
8
 
9
  # Import Agents
@@ -14,6 +15,7 @@ from agents.writer_agent import WriterAgent
14
  load_dotenv()
15
 
16
  app = FastAPI()
 
17
 
18
  # Initialize Agents
19
  try:
@@ -32,13 +34,20 @@ except Exception as e:
32
  print(f"❌ Agent Startup Failed: {e}")
33
  # We continue, but endpoints might fail if agents aren't ready.
34
 
35
- @app.get("/", response_class=HTMLResponse)
36
  async def read_root():
37
- try:
38
- with open("dashboard.html", "r") as f:
39
- return f.read()
40
- except FileNotFoundError:
41
- return "<h1>Error: dashboard.html not found</h1>"
 
 
 
 
 
 
 
42
 
43
  @app.post("/generate-catalog")
44
  async def generate_catalog(file: UploadFile = File(...)):
 
2
  import asyncio
3
  import json
4
  import traceback
5
+ from pathlib import Path
6
  from fastapi import FastAPI, UploadFile, File, HTTPException
7
+ from fastapi.responses import FileResponse, JSONResponse
8
  from dotenv import load_dotenv
9
 
10
  # Import Agents
 
15
  load_dotenv()
16
 
17
  app = FastAPI()
18
+ BASE_DIR = Path(__file__).resolve().parent
19
 
20
  # Initialize Agents
21
  try:
 
34
  print(f"❌ Agent Startup Failed: {e}")
35
  # We continue, but endpoints might fail if agents aren't ready.
36
 
37
+ @app.get("/")
38
  async def read_root():
39
+ landing_page = BASE_DIR / "landingpage.html"
40
+ if not landing_page.exists():
41
+ raise HTTPException(status_code=404, detail="landingpage.html not found")
42
+ return FileResponse(landing_page)
43
+
44
+
45
+ @app.get("/dashboard")
46
+ async def read_dashboard():
47
+ dashboard_page = BASE_DIR / "dashboard.html"
48
+ if not dashboard_page.exists():
49
+ raise HTTPException(status_code=404, detail="dashboard.html not found")
50
+ return FileResponse(dashboard_page)
51
 
52
  @app.post("/generate-catalog")
53
  async def generate_catalog(file: UploadFile = File(...)):