# File: app.py import streamlit as st import json import zipfile import io import time from agents import TopicAgent, ContentAgent, SlideAgent, CodeAgent # Initialize agents topic_agent = TopicAgent() content_agent = ContentAgent() slide_agent = SlideAgent() code_agent = CodeAgent() # Streamlit UI st.set_page_config(page_title="Workshop in a Box", layout="wide") st.image("https://i.imgur.com/3fXQ0DB.png", width=200) st.title("🤖 Workshop in a Box") st.caption("Generate corporate AI training workshops in minutes") # Sidebar configuration with st.sidebar: st.header("Configuration") workshop_topic = st.text_input("Workshop Topic", "Advanced Prompt Engineering") duration = st.slider("Duration (hours)", 1.0, 8.0, 2.0) difficulty = st.selectbox("Difficulty", ["Beginner", "Intermediate", "Advanced"]) include_code = st.checkbox("Include Code Labs", True) include_voiceover = st.checkbox("Include Voiceovers", False) if st.button("✨ Generate Workshop", type="primary"): with st.spinner("Creating your workshop materials..."): # Agent pipeline start_time = time.time() outline = topic_agent.generate_outline(workshop_topic, duration, difficulty) content = content_agent.generate_content(outline) slides = slide_agent.generate_slides(content) code_labs = code_agent.generate_code(content) if include_code else {} # Prepare download package zip_buffer = io.BytesIO() with zipfile.ZipFile(zip_buffer, "a") as zip_file: zip_file.writestr("outline.json", json.dumps(outline, indent=2)) zip_file.writestr("content.json", json.dumps(content, indent=2)) zip_file.writestr("slides.md", slides) if code_labs: zip_file.writestr("code_labs.ipynb", code_labs) st.session_state.outline = outline st.session_state.content = content st.session_state.slides = slides st.session_state.code_labs = code_labs st.session_state.zip_buffer = zip_buffer st.session_state.gen_time = round(time.time() - start_time, 2) # Results display if "outline" in st.session_state: st.success(f"Generated workshop materials in {st.session_state.gen_time} seconds!") # Download button st.download_button( label="📥 Download Workshop Package", data=st.session_state.zip_buffer.getvalue(), file_name=f"{workshop_topic.replace(' ', '_')}_workshop.zip", mime="application/zip" ) # Preview sections with st.expander("Workshop Outline"): st.json(st.session_state.outline) with st.expander("Content Script"): st.write(st.session_state.content) with st.expander("Slide Deck Preview"): st.markdown(st.session_state.slides) if st.session_state.code_labs: with st.expander("Code Labs"): st.code(st.session_state.code_labs) # Sales CTA st.divider() st.subheader("Ready to deliver this workshop?") st.write("**$10K per corporate engagement | $1K refundable pilot deposit**") st.link_button("🚀 Book Pilot Workshop", "https://calendly.com/your-link")