File size: 4,209 Bytes
1eb338d
174c3d3
b90747c
 
6b1467b
b90747c
8f23e34
b57f297
174c3d3
 
8f23e34
b90747c
b57f297
174c3d3
1eb338d
 
174c3d3
 
b57f297
174c3d3
8f23e34
 
 
1eb338d
8f23e34
 
 
c5fb833
 
 
 
 
 
 
 
 
 
b392fc5
c0f87f9
c075bcc
8f23e34
1eb338d
8f23e34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c5fb833
8f23e34
 
 
c075bcc
1eb338d
c075bcc
 
 
8f23e34
 
1eb338d
 
c075bcc
 
1eb338d
8f23e34
1eb338d
 
 
c075bcc
ab9a651
 
8f23e34
87fb172
7960667
1eb338d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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 = '''<div style="display: flex; justify-content: center; align-items: center; margin-top: 20px;">
  <iframe width="900" height="506" 
    src="https://www.youtube.com/embed/6M9dx-uHN1Q?si=X2s2vxkcVP2LVboF" 
    title="YouTube video player" frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>
  </iframe>
</div>
'''

with gr.Blocks(gr.themes.Origin()) as demo:
    gr.HTML("<h1 style='text-align:center;'>πŸ€– ARA: Auto README.md Agent πŸ“</h1>")
    gr.HTML('<p style="text-align:center; font-size:1.2em; color:#555;">Save your README.md writing time!</p>')
    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("# πŸ‘©β€πŸ« Description")
                    gr.Markdown(
                        "This service generates README.md files for GitHub repositories using AI agents.\n\n"
                        "**Notice:** This project still has many areas for improvement, so I plan to continue working on it even after the hackathon. "
                        "If you're interested, feel free to contact me on [LinkedIn](https://www.linkedin.com/in/po6eumkim/) or Discord(@bogeumkim)!"
                    )
                with gr.Column(scale=1):
                    gr.Markdown("# πŸ”› Current Features")
                    gr.Markdown(
                        "- Generate README.md draft from GitHub repository link\n"
                        "- Preview and edit generated README\n"
                        "- Demo video included"
                    )
                    gr.Markdown("# πŸ”œ Future Features")
                    gr.Markdown(
                        "- Support for multiple branches\n"
                        "- Support for local environment\n"
                        "- Enhanced code analysis\n"
                        "- And more..."
                    )

if __name__ == "__main__":
    demo.launch()