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("""
MiniCPM-V-4.6
Modal Serverless
Local-First Cache
Vector Retrieval
""")
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("""
⚙️ How it Works
""")
# Step Columns
with gr.Row():
with gr.Column(elem_classes="about-card", scale=1):
gr.HTML('📥
')
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('🔍
')
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('📁
')
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("""
🏆
Hugging Face "Build Small" Hackathon
ShutterSearch was designed to fulfill constraints on building lightweight, local-first applications using edge AI concepts.
""")
return page