One of our group members has a dad who works in finance. So, we called him up and asked what he felt like the world needed. He said that if clients would really monitor their spendings, savings, earnings, and donations, they'd be a lot closer to reaching their financial goals. Since this was something that someone already in the industry described as a need, we decided to run with it, to hack it up, and to make it our own.
What it does
CENTSense has a few goals, all rolled into one site. Firstly, to help people keep track of their money. But also, to help them see how they can make smart financial choices like saving and investing, while still keeping room in their budget to help others. Users can set monthly, yearly and five-yearly goals for their saving, and charitable donations (as well as set a spending limit goal and input their earnings to make their other goals possible). As they spend, save, earn, and donate their money, we keep track. At the end of the month we send the users a text to remind them to review their account before we transfer some money into their savings account and send the rest to a well-deserving charity.
How we built it
We created a Python wrapper for the CapitalOne API, Nessie, to make and maintain all the users and accounts. The wrapper allows us to simulate all the spending, saving, income, and donations of the users. All the user and account info is saved in a SQL database on AWS EC2, and all the financial transactions in Nessie. Our web server is running on FLASK stored on AWS EC2, which allows for MySQL and our Nessie Python scripting. Our site is in HTML/CSS with charts created by chart.js which gave for a simplistic visualization of the user's financial trends. We also implanted Twilio so that at the end of the month, each user gets an automated text, prompting them to review their CENTSense account.
Challenges we ran into
- AWS EC2 is the worst. When trying to connect to a MySQL port, editing the inbound and outbound security groups still did not allow for connection to non-local MySQL servers. We ended up having to run it locally on our EC2 instance.
- A majority of our group did not know PHP, so we struggled with our initial goal of running the web app as an Apache server. We instead opted to use FLASK (which we also didn't know) and re-writing the login page server processing.
- Once we were using FLASK, we couldn't use the HTML/CSS website that had already been created due to dependency issues. So we ended up having to entirely re-write the website to not use local dependencies.
Accomplishments that we're proud of
The team really learned a lot! Each of us had tasks with stuff weren't familiar with. The two of us who had never done HTML/CSS originally created the websites and visuals. Another group member tackled AWS EC2 and FLASK, which was very new to him. Our other group member, who had never touched FLASK before, did the bulk of our FLASK. We are really proud of what we were able to accomplish in less than 24 hours!
What we learned
We, as a group, learned FLASK, AWS EC2, HTML/CSS. We also got some solid teamwork and white boarding experience. We had a first time hackathon-er fresh out da classroom. So all around, a great weekend of knowledge.
What's next for CENTSense
We would love to improve how our SQL database and website interact. Right now, it's honestly a little shaky. We'd also like to expand our Nessie functionality. We just feel like we could do so much more with the API with more time. Our website could also use a little bit of love and care: It definitely works, but due to our re-write for Flask compatibility, it's a little bit of a shadow of what it once was. We also would like to get to a point where we can enable user account creation and profile editing.
In terms of expanding the idea, we think it would be fun to actually include investments and their returns. And to really flesh out how we would how we would support donations to charity from our platform. I think ideally users would be able to select a charity from a list of nonprofits that we would collaborate with.