import os import streamlit as st from datetime import datetime from agent_manager import AgentManager from shopify_client import create_shopify_product from dashboard.logs import show_logs from stripe_checkout import create_stripe_session # ──────────────────────────────────────────────────────────────────────────────── # 1. GLOBAL PAGE CONFIGURATION # ──────────────────────────────────────────────────────────────────────────────── st.set_page_config( page_title="AutoExec AI", page_icon="🚀", layout="wide", initial_sidebar_state="expanded", ) # ──────────────────────────────────────────────────────────────────────────────── # 2. SIDEBAR NAVIGATION SETUP # ──────────────────────────────────────────────────────────────────────────────── PAGES = { "Home": "🏠 Home", "Launch": "🚀 Launch", "Logs": "📊 Logs", "Settings": "⚙️ Settings" } if "page" not in st.session_state: st.session_state.page = "Home" st.sidebar.title("AutoExec AI") selection = st.sidebar.radio( "Navigate:", list(PAGES.values()), index=list(PAGES.values()).index(PAGES[st.session_state.page]), key="nav_radio" ) # Map the selection back to its key st.session_state.page = next(key for key, label in PAGES.items() if label == selection) # ──────────────────────────────────────────────────────────────────────────────── # 3. PAGE DISPATCHER # ──────────────────────────────────────────────────────────────────────────────── def main(): page = st.session_state.page if page == "Home": render_home() elif page == "Launch": render_launch() elif page == "Logs": render_logs() elif page == "Settings": render_settings() else: st.error("Page not found") # ──────────────────────────────────────────────────────────────────────────────── # 4. PAGE RENDERERS # ──────────────────────────────────────────────────────────────────────────────── def render_home(): """Render the Home page with hero and feature highlights.""" st.markdown( """

🚀 AutoExec AI

Generate, deploy, and optimize AI‑powered businesses in one click.

""", unsafe_allow_html=True ) cols = st.columns(3) features = [ ("🤖 LLM‑Powered", "Gemini Pro + GPT‑4 fallback"), ("🔄 LoopAgent", "Daily autonomous optimizations"), ("📊 Dashboard", "Real‑time logs & analytics") ] for col, (title, desc) in zip(cols, features): col.subheader(title) col.write(desc) st.markdown("---") def go_to_launch(): st.session_state.page = "Launch" st.button("👉 Try the Demo", on_click=go_to_launch) def render_launch(): """Render the Launch page with a form to run the AI agents & publish product.""" st.markdown("## 🚀 Launch a New AI Business") with st.form("launch_form"): niche = st.text_input("🎯 Niche", placeholder="e.g., fitness wear") business_type = st.selectbox( "📦 Business Type", ["Dropshipping", "Print‑on‑Demand", "Newsletter", "Course"] ) submit = st.form_submit_button("Generate & Deploy") if submit: if not niche.strip(): st.warning("Please enter a niche to continue.") return # 1) Run AI Agents with st.spinner("🤖 Running AI agents…"): manager = AgentManager(niche.strip(), business_type) results = manager.run_all() st.success("✅ Business Launched Successfully!") st.json(results) # 2) Publish to Shopify try: title = f"{business_type} in {niche}" description = results["copy"] price = "49.00" storefront_url = create_shopify_product( title=title, description=description, price=price, image_url=None ) st.markdown( f"**🛍️ Product Live on Shopify:** " f"[View Product]({storefront_url})", unsafe_allow_html=True ) except Exception as e: st.error(f"❌ Shopify publishing failed: {e}") def render_logs(): """Render the Logs dashboard page.""" st.markdown("## 📊 Agent Memory Log Dashboard") show_logs() def render_settings(): """Render the Settings & Billing page.""" st.markdown("## ⚙️ Settings & Billing") st.markdown( """ **Configure these secrets:** - `API_KEY` - `OPENAI_API_KEY` - `GEMINI_API_KEY` - `STRIPE_API_KEY` """ ) if st.button("💳 Subscribe via Stripe"): url = create_stripe_session() st.markdown(f"[Proceed to Payment →]({url})", unsafe_allow_html=True) # ──────────────────────────────────────────────────────────────────────────────── # 5. FOOTER # ──────────────────────────────────────────────────────────────────────────────── def render_footer(): st.markdown("---") st.markdown( """
Powered by Streamlit • FastAPI • Celery • Redis • Hugging Face Spaces
""", unsafe_allow_html=True ) # ──────────────────────────────────────────────────────────────────────────────── # 6. ENTRY POINT # ──────────────────────────────────────────────────────────────────────────────── if __name__ == "__main__": main() render_footer()