import os import streamlit as st from landing import show_landing_content from agent_manager import AgentManager from dashboard.logs import show_logs from stripe_checkout import create_stripe_session from shopify_client import create_shopify_product # ──────────────────────────────────────────────────────────────────────────────── # 1. GLOBAL CONFIGURATION # ──────────────────────────────────────────────────────────────────────────────── st.set_page_config( page_title="AutoExec AI", page_icon="🚀", layout="wide", initial_sidebar_state="expanded", ) # ──────────────────────────────────────────────────────────────────────────────── # 2. NAVIGATION SETUP # ──────────────────────────────────────────────────────────────────────────────── PAGES = { "Home": "🏠 Home", "Launch": "🚀 Launch", "Logs": "📊 Logs", "Settings": "⚙️ Settings" } if "current_page" not in st.session_state: st.session_state.current_page = "Home" def render_sidebar() -> str: st.sidebar.title("AutoExec AI") choice = st.sidebar.radio( "Navigate to:", options=list(PAGES.values()), index=list(PAGES.values()).index(PAGES[st.session_state.current_page]), key="nav_radio" ) # reverse‐lookup internal key return next(k for k, v in PAGES.items() if v == choice) st.session_state.current_page = render_sidebar() # ──────────────────────────────────────────────────────────────────────────────── # 3. PAGE DISPATCHER # ──────────────────────────────────────────────────────────────────────────────── def main(): page = st.session_state.current_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(): st.markdown( """

🚀 AutoExec AI

Launch, manage, and optimize AI‑powered businesses with a single click.

""", unsafe_allow_html=True, ) show_landing_content() def render_launch(): st.markdown("## 🚀 Launch a New AI Business") with st.form("launch_form"): niche = st.text_input( "🎯 Niche", placeholder="e.g., fitness wear", help="Define the market or audience for your business.", ) business_type = st.selectbox( "📦 Business Type", options=["Dropshipping", "Print-on-Demand", "Newsletter", "Course"], help="Select the type of business model to generate.", ) submit = st.form_submit_button("Generate & Deploy") if submit: if not niche.strip(): st.warning("Please enter a valid niche.") return # 1) Run the 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 st.markdown("### 🛍️ Publishing Product to Shopify") product_title = f"{business_type} in {niche}" product_desc = results.get("copy", "") price_str = "49.00" # default price image_url = None try: shopify_url = create_shopify_product( title=product_title, description=product_desc, price=price_str, image_url=image_url ) st.success("🎉 Product published to Shopify!") st.markdown(f"[View your live product →]({shopify_url})") except Exception as e: st.error(f"❌ Shopify publish failed: {e}") def render_logs(): st.markdown("## 📊 Agent Memory Log Dashboard") show_logs() def render_settings(): st.markdown("## ⚙️ Settings & Billing") st.markdown( """ **Ensure the following secrets are set** under Settings → Secrets: - `API_KEY` - `OPENAI_API_KEY` - `GEMINI_API_KEY` - `STRIPE_API_KEY` """ ) if st.button("💳 Create Stripe Checkout Session"): session_url = create_stripe_session() st.markdown(f"[Proceed to Payment]({session_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, ) # ──────────────────────────────────────────────────────────────────────────────── # ENTRY POINT # ──────────────────────────────────────────────────────────────────────────────── if __name__ == "__main__": main() render_footer()