Hi fellow nerds,
A few months ago I started to look into different ways to create a professional portfolio. I’ve been using Streamlit for over a year, and I decided to use it to display my work experience and programming skills. Once I finished it, I decided I’d create a template to share it with all of you. This is my portfolio app and this is the template. It looks like this ![]()
When it came to the front end of the application, I found a bottleneck trying to implement URL links into images, like logos or YouTube videos. Methods like st.markdown weren’t hitting the mark – all I ended up with were titles and links under the image or video, not the look I had in mind. So, I tried different methods - and they worked!
GitHub Image Loading
I uploaded images to GitHub and used raw file links with st.image for a direct image embed. I used this to load my profile photo - to do that I used ‘st.columns’ to align the images/logos.
Here’s a snippet of the code:
# Adding columns
col1, col2, col3, col4 = st.columns(4)
# Profile photo section
with col1:
profile_pic = "https://raw.githubusercontent.com/youngpada1/portfolio-app/9fcb7438c028c7517786155b5be9cd1fc517447e/portfolio-app/portfolio_app/images/menu/profile%20icon.png"
st.image(profile_pic, width=100)
HTML-Embedded Image Links:
I played around with st.markdown and HTML to attach images to hyperlinks.
with col3:
github = 'https://raw.githubusercontent.com/youngpada1/portfolio-app/efa44604e838ff5218db9a9229b8fff256df5ae6/portfolio-app/portfolio_app/images/menu/github.png'
st.markdown(f'''
<a href='https://github.com'>
<img src='{github}' width='25px'/>
</a>''',
unsafe_allow_html=True
)
On the ‘Experience’ Page I streamlined the data-loading process by using a YAML file. I followed this approach to avoid having to individually hard-code details on each company I’ve worked with.
I added photos of some products I’ve delivered to the market and this is how it looks:
Company Name:
images:
- name: Product Name
url: https://raw.githubusercontent.com/youngpada1/portfolio-app/efa44604e838ff5218db9a9229b8fff256df5ae6/portfolio-app/portfolio_app/images/menu/streamlit.png
width: 94%
- name: Product Name
url: https://raw.githubusercontent.com/youngpada1/portfolio-app/efa44604e838ff5218db9a9229b8fff256df5ae6/portfolio-app/portfolio_app/images/menu/streamlit.png
width: 94%
- name: Product Name
url: https://raw.githubusercontent.com/youngpada1/portfolio-app/efa44604e838ff5218db9a9229b8fff256df5ae6/portfolio-app/portfolio_app/images/menu/streamlit.png
width: 94%
- name: Product Name
url: https://raw.githubusercontent.com/youngpada1/portfolio-app/efa44604e838ff5218db9a9229b8fff256df5ae6/portfolio-app/portfolio_app/images/menu/streamlit.png
width: 94%
Creating this app was a journey of trial and error, and I wanted to share these solutions with the community. I’m sure there are other ways to do this, so please feel free to share them. And if you’re looking for a template to create your portfolio, feel free to check out the app, use i,t and let me know what you think! ![]()


