⚡Inspiration⚡
Have you ever split a bill with friends, only to forget who owes what? Chasing down payments can be awkward, and keeping track of shared expenses can quickly become needlessly frustrating and stressful.
As 4 university students juggling schoolwork, job applications, and sleepiness, we realized how often small debts pile up and get forgotten. Whether it's splitting groceries, concert tickets, or a Raspberry Pi, the stress of managing shared expenses adds up. We wanted to create a tool that not only simplifies these interactions but also makes the process fun and engaging.
Enter UoMe: an app that helps you keep tabs on shared expenses, tracks transaction statistics, and even gets a bit pushy when debts get a little too high. We wanted to take the hassle out of managing group expenses and turn it into a seamless, intuitive experience that saves both your time and your friendships!
📈 What it does 📈
UoMe is an app that helps you gain debt—no, not really—but it helps you keep track. Every transaction is entered either manually or by scanning a receipt, allowing you and your friends to split a check 100 ways with ease. After a user surpasses a threshold for maximum debt accrued, they will begin to receive AI generated reminders in the mail.
Our app allow users to easily create accounts, sign in, manage their friend groups, and even see monthly transaction analytics.
💻 How we built it 💻
Backend: UoMe's backend was created with Flask and Python, managing accounts, transactions, and debt. We organized the endpoints with blueprints and used CORS for seamless communication with the frontend.
Frontend: Our dynamic and aesthetically pleasing frontend was crafted using React-native, expo, typescript, HTML, and CSS. The features include intuitive registration and log-in pages, creative dashboard interface, and handy in-app receipt scanner.
Database Management: SQLAlchemy is a Python toolkit that bridges the gap between Python objects and SQL databases, which allowed us to work with Python classes and objects rather than SQL queries. SQLAlchemy handles all the database operations behind the scenes, leading to maintainable, secure, and flexible code. We used SQLite as our database system for UoMe, storing transactions, user information, and statistics.
🚩 Challenges we ran into 🚩
Our main struggle was making sure that all our components were going to work together seamlessly. We needed to make sure that our backend was able to properly update the SQLite database (with the help of SQLAlchemy), utilize Gumloop flows and its API as intended, and perfectly match the front end.
Another hurdle was learning how to use SQLAlchemy. The tool was extremely valuable to us, as it gave us a lot of flexibility in the SQL database we would select (eg. SQLite for local hosting, MySQL for deployment with Railway). However, the syntax was completely different from using SQL queries, so there was a bit of a learning curve.
🎉 Accomplishments that we're proud of 🎉
- Creating a frontend that easily allows users to manage their account and transactions with clean UI/UX design
- Integrating a robust backend for database management
- Using Veryfi API to scan receipts and automatically log transactions
- Generating an intuitive graph using ChartJS to view the transactions of all users
- Using Gumloop API to send threatening reminders for debt repay
📝 What we learned 📝
All our team members had vastly different skillsets and interests, but we were able to put it all together for UoMe. Additionally, through our intense collaboration, all of us were able to work outside of our comfort zone and progress immensely. We also tried some of the APIs we used, for the first time; namely Gumloop's for automated message generation and delivery.
McHacks has been an invaluable experience for us to refine our technical skills and bond as a team. Not only did we build a pretty cool project, we built a better version of ourselves.
🎰 What's next for UoMe 🎰
Our next move for UoMe would definitely be making our app more accessible and flexible (eg. browser compatible, more screen responsive) and making new features. Since we all share a love for gambling (Pokémon card packs) and being employed, the top two additions on our list are a betting tab and a "job centre" where tasks can be raised for others to compete for a price.
Log in or sign up for Devpost to join the conversation.