Spaces:
Runtime error
Runtime error
File size: 3,122 Bytes
4a02afe | 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 | import gradio as gr
def render_about():
with gr.Column(visible=False, elem_classes="page-container") as page:
# Hero Banner with Tech Badges
with gr.Column(elem_classes="about-hero"):
gr.HTML("""
<div style="margin-bottom: 10px;">
<span class="tech-badge">MiniCPM-V-4.6</span>
<span class="tech-badge">Modal Serverless</span>
<span class="tech-badge">Local-First Cache</span>
<span class="tech-badge">Vector Retrieval</span>
</div>
""")
gr.Markdown("""
# ShutterSearch
### An intelligent, local-first photo archive designed to analyze and search photograph semantics.
""")
# Corrected: Replaced inline-styled gr.Markdown with styled gr.HTML
gr.HTML("""
<h2 style="margin-top: 25px; margin-bottom: 15px; font-size: 1.5rem; font-weight: 700; color: #f8fafc;">
βοΈ How it Works
</h2>
""")
# Step Columns
with gr.Row():
with gr.Column(elem_classes="about-card", scale=1):
gr.HTML('<div class="about-card-icon">π₯</div>')
gr.Markdown("""
### 1. Ingest & Analyze
Select your folders. The archive safely processes visual metadata using a serverless Vision Language Model (VLM) running on high-end GPUs.
""")
with gr.Column(elem_classes="about-card", scale=1):
gr.HTML('<div class="about-card-icon">π</div>')
gr.Markdown("""
### 2. Semantic Search
Skip manual tags. Search your directory using natural descriptive phrases (such as *"cinematic lighting on trees"* or *"overcast street portrait"*).
""")
with gr.Column(elem_classes="about-card", scale=1):
gr.HTML('<div class="about-card-icon">π</div>')
gr.Markdown("""
### 3. Bulk Export
Organize images within local collections. Select what you need directly from search results to export them in high-fidelity ZIP archives.
""")
# Footer hackathon card block
with gr.Row(elem_classes="hackathon-footer"):
gr.HTML("""
<div style="display: flex; align-items: center; gap: 15px;">
<div style="font-size: 1.8rem; line-height: 1;">π</div>
<div>
<h4 style="margin: 0 0 3px 0; color: #f8fafc; font-size: 0.95rem; font-weight: 600;">Hugging Face "Build Small" Hackathon</h4>
<p style="margin: 0; color: #94a3b8; font-size: 0.85rem; line-height: 1.4;">
ShutterSearch was designed to fulfill constraints on building lightweight, local-first applications using edge AI concepts.
</p>
</div>
</div>
""")
return page |