marketflow / App.jsx
scsocial's picture
Upload 9 files
1ae4d65 verified
import React, { useState } from 'react'
export default function App(){
const [prompt, setPrompt] = useState('');
const [out, setOut] = useState('');
const [loading, setLoading] = useState(false);
const callServer = async () => {
setLoading(true); setOut('');
try{
const resp = await fetch('/api/ask', { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ prompt, model: 'gpt-4o-mini' }) });
const j = await resp.json();
if(j.ok) setOut(j.answer);
else setOut('Error: ' + (j.error||JSON.stringify(j)));
}catch(e){ setOut('Network error: ' + e.message) }
setLoading(false);
}
return (
<div style={{padding:24,fontFamily:'Inter,Arial',color:'#0b1220'}}>
<h1>Marketing Workflow — Demo Client</h1>
<p>Type a question for the marketing expert (server-side AI).</p>
<textarea value={prompt} onChange={e=>setPrompt(e.target.value)} style={{width:'100%',height:120}}/>
<div style={{marginTop:8,display:'flex',gap:8}}>
<button onClick={callServer} disabled={loading}>{loading ? 'Thinking...' : 'Ask AI'}</button>
<button onClick={()=>{ setPrompt('Create 3 messaging pillars for a handcrafted apparel DTC brand targeting women 28-45 in Tier 1 cities. Provide offers and ad formats.') }}>Sample prompt</button>
</div>
<h3>Answer</h3>
<pre style={{background:'#f2f4f7',padding:12,borderRadius:8}}>{out}</pre>
</div>
)
}