About my foundations portfolio project

My portfolio project
It’s fascinating how the most impactful ideas often stem from everyday encounters. My journey building Vitrine began with an unexpected conversation at an ATM stand, a reminder that inspiration truly can strike anywhere.
The Spark
Standing in line at the ATM, I overheard a woman’s frustration about online business presence. “Facebook Business Suite is just too complex,” she sighed, explaining how she’d lost potential clients simply because she couldn’t effectively showcase her work online. As a developer, this caught my attention. Here was a real problem affecting real people, small business owners who just wanted a simple way to display their work and connect with clients.
Understanding the Problem
After that encounter, I started talking to more small business owners and entrepreneurs. A pattern emerged:
- Existing platforms were overwhelming with features they didn’t need
- Verification processes were cumbersome
- They just wanted something simple to showcase their business and recent work
The Solution: Keeping it Simple
This led to the birth of Vitrine, French for “showcase.” The name perfectly encapsulated what I wanted to create: a simple, elegant way for brands to showcase themselves online, just like a store window displays its best items to passersby.
Building with Purpose
Using Python and Flask for the backend, and keeping the frontend clean with Bootstrap, I focused on essential features:
- A clean brand page for business information
- Simple project showcase section
- Straightforward contact functionality
- Integration with common social media platforms
One of my favorite implementations was the works feature:
@app_views.route("/brands/<handle>/works", methods=["POST"])
@auth.login_required
def create_work(handle):
"""Add a work to a brand"""
brand = storage.get_brand(handle)
if not brand:
abort(404)
if len(brand.works) == 6:
abort(400, "Works limit of 6 reached!")
# Simple validation and creation
payload = request.get_json()
if not payload:
abort(400, "Not a JSON")
if "title" not in payload:
abort(400, "Missing title")
if "image_url" not in payload:
abort(400, "Missing image_url")
work = Work(**payload)
work.brand_id = brand.id
work.save()
return jsonify(work.to_dict()), 201I deliberately limited each brand to six works, just enough to showcase recent projects without overwhelming visitors.
The Development Process
Organization was key. I used a Kanban board on Trello to break down the project into manageable tasks. This helped me:
- Stay focused on core functionality
- Track progress effectively
- Maintain momentum through small wins
- Avoid feature creep
Lessons Learned
1. Listen First, Code Later: The ATM conversation taught me that the best solutions come from really understanding user problems, not from assuming what people need.
2. Simplicity is Feature: Every time I was tempted to add “just one more feature,” I remembered the woman at the ATM. Would this make things easier or more complicated for her?
3. Planning Matters: Using a Kanban board wasn’t just about organizing tasks, it helped me tell a better story about the project’s evolution.
Looking Forward
While Vitrine meets its core goals, there’s always room for growth. Possible improvements include:
- Gallery pop-ups for work showcases
- Blog functionality for brands
- Social features for inter-brand networking
- Enhanced notification systems
Final Thoughts
Sometimes the best projects don’t come from trying to change the world, they come from solving one person’s problem really well. Vitrine started with a chance encounter at an ATM, but it grew into something that could help countless small business owners showcase their brands online.
The code is open source and available on GitHub, and I welcome contributions from anyone who shares the vision of making online presence simpler for small businesses.
Remember: The best solutions often come from real conversations and genuine understanding of people’s needs. Keep your ears open, your next project might be just a conversation away.
This project was built with Python, Flask, and lots of coffee😂 Check out the GitHub repository for more details or to contribute.

