saad003 commited on
Commit
5a54577
·
verified ·
1 Parent(s): 124add0

Upload 3 files

Browse files
Files changed (3) hide show
  1. README.md +88 -8
  2. app.py +96 -0
  3. requirements.txt +1 -0
README.md CHANGED
@@ -1,14 +1,94 @@
 
1
  ---
2
- title: Portf01
3
- emoji: 🦀
4
- colorFrom: gray
5
- colorTo: gray
6
  sdk: gradio
7
- sdk_version: 5.49.1
8
  app_file: app.py
9
  pinned: false
10
- license: apache-2.0
11
- short_description: testing a portfolio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  ---
13
 
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
+
2
  ---
3
+ title: "Muhammad Saad — Portfolio"
4
+ emoji: "🚀"
5
+ colorFrom: "blue"
6
+ colorTo: "purple"
7
  sdk: gradio
 
8
  app_file: app.py
9
  pinned: false
10
+ license: mit
11
+ ---
12
+
13
+ # Muhammad Saad — Portfolio
14
+
15
+ **CS student @ North South University** • Tech enthusiast • I break things (on purpose) and fix them better.
16
+
17
+ This is my live portfolio hosted on **Hugging Face Spaces** using **Gradio**.
18
+ It shows my projects, skills, and a simple contact section.
19
+
20
+ > Live URL (after you make the Space public):
21
+ > `https://saad003-portf01.hf.space`
22
+
23
+ ---
24
+
25
+ ## ✨ Features
26
+ - Tabs for **About**, **Projects**, **Skills**, **Contact**
27
+ - “Funny-but-true” skills section (because debugging at 2 AM is a skill)
28
+ - Contact tab formats a message and provides a **mailto** button
29
+ - Easy to extend with more projects or embedded demos
30
+
31
+ ---
32
+
33
+ ## 🚀 Quick Start (on Hugging Face Spaces)
34
+ 1. Put these files at repo root:
35
+ - `app.py`
36
+ - `requirements.txt` (contains `gradio`)
37
+ - `README.md` (this file)
38
+ 2. Commit & push:
39
+ ```bash
40
+ git add app.py requirements.txt README.md
41
+ git commit -m "Initial portfolio"
42
+ git push
43
+ ```
44
+ 3. In the Space **Settings**, set **Visibility → Public**.
45
+ 4. Share the link: `https://saad003-portf01.hf.space`
46
+
47
+ ---
48
+
49
+ ## 🧪 Run Locally
50
+ ```bash
51
+ pip install -r requirements.txt
52
+ python app.py
53
+ ```
54
+ Then open the local URL printed in your terminal.
55
+
56
+ ---
57
+
58
+ ## 🧱 Repo Structure
59
+ ```
60
+ portf01/
61
+ ├─ app.py
62
+ ├─ requirements.txt
63
+ └─ README.md <-- you are here
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 🛠️ Customize
69
+ - In `app.py`, update:
70
+ - `NAME`, `TAGLINE`, and the **About** text
71
+ - Social links in `SOCIALS_MD`
72
+ - Your email in `mailto_link()` (replace `you@example.com`)
73
+ - Project list in `PROJECTS_MD`
74
+ - Add screenshots or thumbnails if you want (e.g., put images in `/assets` and reference them in Markdown).
75
+
76
+ ---
77
+
78
+ ## 🔗 Useful Links
79
+ - My Hugging Face profile: (add link)
80
+ - GitHub: (add link)
81
+ - LinkedIn: (add link)
82
+
83
+ ---
84
+
85
+ ## 📸 Screenshot (optional)
86
+ Add a preview image to your repo (e.g., `assets/screenshot.png`) and embed:
87
+ ```markdown
88
+ ![Portfolio preview](assets/screenshot.png)
89
+ ```
90
+
91
  ---
92
 
93
+ ## 📄 License
94
+ MIT — feel free to reuse and remix. Credit appreciated. 😊
app.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ from datetime import datetime
4
+
5
+ NAME = "Muhammad Saad"
6
+ TAGLINE = "CS @ North South University • Tech enthusiast • Builder of fun things"
7
+
8
+ ABOUT_MD = f"""
9
+ # 👋 Hey, I'm {NAME}
10
+ I'm a **Computer Science student at North South University** who loves shipping scrappy ideas,
11
+ breaking stuff (on purpose), and then fixing it better.
12
+
13
+ **What I'm into:** computer vision, MLOps, model deployment, and turning notebooks into real apps.
14
+ """
15
+
16
+ # ← add your real links here
17
+ SOCIALS_MD = """
18
+ **Find me:**
19
+ - 🌐 Website: <https://example.com>
20
+ - 🐙 GitHub: <https://github.com/yourhandle>
21
+ - 🧠 Hugging Face: <https://huggingface.co/yourhandle>
22
+ - 💼 LinkedIn: <https://linkedin.com/in/yourhandle>
23
+ """
24
+
25
+ PROJECTS_MD = """
26
+ ### Selected Projects
27
+ - **Image Similarity App** — FAISS + ResNet embeddings to retrieve near-duplicate medical images.
28
+ - **Radiology Captioning Playground** — demo of ViT+GPT2 captioner with retrieval-augmented context.
29
+ - **Tiny MLOps** — Dockerized inference + Space deploy in under 5 minutes.
30
+ """
31
+
32
+ # funny-but-true skills
33
+ SKILLS_MD = """
34
+ ### Skills (serious-ish)
35
+ - **Python**, **PyTorch**, **Gradio**, **Hugging Face**, **FAISS**, **Docker**
36
+ - **Data wrangling**, **Training pipelines**, **Model serving**, **Prompt tinkering**
37
+
38
+ ### Skills (funny but accurate)
39
+ - **Googling like a Pro**: 10/10 🔍
40
+ - **Debugging at 2 AM**: 11/10 🧯
41
+ - **“It worked yesterday” Whisperer**: 9/10 🧙
42
+ - **Version Control Therapist (merge conflicts)**: 8/10 🪄
43
+ - **Coffee-driven latency reduction**: -20ms ☕
44
+ """
45
+
46
+ CONTACT_HELP = """
47
+ I can't send email for you, but this will format a message you can copy-paste.
48
+ Or use the **mailto** button to open your email client.
49
+ """
50
+
51
+ def format_contact(name, email, message):
52
+ ts = datetime.now().strftime("%Y-%m-%d %H:%M")
53
+ return f"""### Thanks, {name or "friend"}!
54
+ **Time:** {ts}
55
+ **From:** {name} ({email})
56
+ **Message:**
57
+ > {message}
58
+ """
59
+
60
+ def mailto_link(name, email, message):
61
+ import urllib.parse as up
62
+ to = "you@example.com" # ← replace with your address
63
+ subject = up.quote(f"Portfolio message from {name or 'Visitor'}")
64
+ body = up.quote(f"From: {name} <{email}>\n\n{message}")
65
+ return f"mailto:{to}?subject={subject}&body={body}"
66
+
67
+ with gr.Blocks(title=f"{NAME} — Portfolio") as demo:
68
+ gr.Markdown(f"# {NAME}\n**{TAGLINE}**")
69
+
70
+ with gr.Tab("About"):
71
+ gr.Markdown(ABOUT_MD)
72
+ gr.Markdown(SOCIALS_MD)
73
+
74
+ with gr.Tab("Projects"):
75
+ gr.Markdown(PROJECTS_MD)
76
+ gr.Markdown("*(Want live demos here? Link your Spaces or add iframes.)*")
77
+
78
+ with gr.Tab("Skills"):
79
+ gr.Markdown(SKILLS_MD)
80
+
81
+ with gr.Tab("Contact"):
82
+ gr.Markdown(CONTACT_HELP)
83
+ with gr.Row():
84
+ name = gr.Textbox(label="Your name", placeholder="Ada Lovelace")
85
+ email = gr.Textbox(label="Your email", placeholder="ada@example.com")
86
+ message = gr.Textbox(label="Message", lines=6, placeholder="Write me something nice…")
87
+ with gr.Row():
88
+ out = gr.Markdown()
89
+ with gr.Row():
90
+ btn_send = gr.Button("Preview message")
91
+ btn_mail = gr.Button("Open email client (mailto)")
92
+ btn_send.click(format_contact, [name, email, message], out)
93
+ btn_mail.click(mailto_link, [name, email, message], out)
94
+
95
+ if __name__ == "__main__":
96
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio