import json
import requests
import gradio as gr
MODAL_API_URL = "https://agents-mcp-hackathon--auto-readme-agent-fastapi-app.modal.run"
def generate_readme(repo_url):
try:
response = requests.post(
MODAL_API_URL,
json={"repo_url": repo_url},
timeout=120
)
if response.status_code == 200:
data = json.loads(response.text)
return data["readme"]
else:
return f"Error: {response.status_code}\n{response.text}"
except Exception as e:
return f"Exception: {str(e)}"
DEFAULT_VALUE = (
"## Hello, World!\n"
"Regardless of the result, it was **a truly informative and enjoyable hackathon.** \n"
"As someone who likes and is good at using Hugging Face, I hope there will be more opportunities like this! 🤗"
)
EMBED_HTML = '''
'''
with gr.Blocks(gr.themes.Origin()) as demo:
gr.HTML("
🤖 ARA: Auto README.md Agent 📝
")
with gr.Tabs():
with gr.TabItem("README.md Generator"):
repo_input = gr.Textbox(
label="GitHub Repository URL",
placeholder="Enter the GitHub repository URL (e.g. https://github.com/username/repo)"
)
generate_btn = gr.Button("Generate README.md")
with gr.Row():
with gr.Column(scale=1):
gr.Markdown("### 📝 Draft")
readme_preview = gr.Textbox(
lines=24,
label="Generated by agent",
interactive=True,
value=DEFAULT_VALUE
)
with gr.Column(scale=1):
gr.Markdown("### 🖼️ Preview")
readme_markdown = gr.Markdown(value=DEFAULT_VALUE, show_copy_button=True)
generate_btn.click(
generate_readme,
inputs=repo_input,
outputs=readme_preview
)
readme_preview.change(
lambda md: md,
inputs=readme_preview,
outputs=readme_markdown
)
with gr.TabItem("Demo Video"):
gr.Markdown("### Demo Video")
gr.HTML(EMBED_HTML)
with gr.TabItem("About"):
with gr.Row():
with gr.Column(scale=1):
gr.Markdown("# 👩🏫 Service Description")
gr.Markdown(
"This service generates README.md files for GitHub repositories using AI agents."
)
with gr.Column(scale=1):
gr.Markdown("# 🔛 Current Features")
gr.Markdown(
"- Generate README.md from GitHub repo\n"
"- Preview generated README\n"
"- Demo video included"
)
gr.Markdown("# 🔜 Future Features")
gr.Markdown(
"- Support for multiple branches\n"
"- Enhanced code analysis\n"
"- User authentication"
)
if __name__ == "__main__":
demo.launch()