Inspiration
The idea for ShareCircle came from noticing how much waste happens in local communities while so many people lack basic resources. We wanted to build a platform that makes mutual aid effortless. Instead of buying new things, why not match a neighbor's "need" with another neighbor's "offer"? We were inspired by the potential of local communities to solve their own problems through sharing, reducing waste, and building real human connections.
How we built it
We built ShareCircle as a full-stack web application using Python and Flask.
- Backend: We structured the app using Flask Blueprints to keep our routes clean (auth, main, API, judge). We handled database interactions using raw SQL (with a schema.sql file and migrations) to keep things lightweight and fast.
- Frontend: The UI is built with Jinja2 templates, custom CSS, and vanilla JavaScript. We integrated a dynamic dashboard, a nearby map view, and a leaderboard to track community impact.
- Core Logic: The heart of the app is our matching algorithm in
matching.py, which pairs needs with relevant offers based on category, location, and urgency. - Tooling: We used Git for version control and set up a testing suite with
pytestto ensure our matching logic and database operations were reliable.
Challenges we ran into
- Database Design: Structuring the schema to handle both needs and offers while keeping the matching logic efficient was tough. We had to refactor our SQL migrations to support the "gig flow" (from posting to receiving) without breaking existing data.
- Authentication & Security: Implementing secure user authentication from scratch in Flask and ensuring that users could only edit their own needs/offers required careful blueprint routing.
- The Matching Algorithm: Balancing the matching criteria. If we were too strict, no matches were found; too loose, and the results were irrelevant. We had to fine-tune the weighting of categories and proximity.
- Time Management: Balancing the backend logic with building a polished, responsive frontend during a hackathon timeline was a massive sprint.
What we learned
- We leveled up our Flask skills, specifically learning how to structure a larger application using Blueprints instead of one giant
app.pyfile. - We learned the importance of planning database schemas before writing backend logic (and how painful it is to migrate them later!).
- We gained experience integrating complex frontend JavaScript (like our map and dynamic forms) with server-side rendered Jinja templates.
- Most importantly, we learned how to quickly scope a project, prioritize the MVP, and work as a team under a tight deadline.
What's next for ShareCircle
We plan to implement real-time chat between matched users, add an AI-powered recommendation engine for matches, and build a mobile app so neighbors can quickly post needs and offers on the go.
Log in or sign up for Devpost to join the conversation.