Inspiration
The worst part about paying in cash is handling the spare change afterwards. Given that roughly 40% of all financial transactions in the United States are in cash, it is safe to say that many people face this inconvenience in their every day lives. We wanted to build a solution that would make paying in cash even better - by removing the coins all together.
How does Change work?
Imagine you are buying a $7.55 burrito and you are carrying $8 in bills. With Change, the cashier will be able to send the 45 cents directly to your bank account so you don't have to worry about the loose coins. Similarly, if you wanted to add a soda to your order and the total came out to $8.30, you would be able to pay with your $8 in cash and automatically send the rest of the money online. Change is a hands free payment platform that augments physical cash transactions. In addition, users have the option to tip their cashiers directly or donate to a charity of their choice.
How we built it
Change has 3 major components: a Point-of-Sale device for stores, a mobile app for consumers, and a backend server that hosts all the transactional data generated by moving money around. The POS frontend was built in React.js, the mobile app was built in React-Native, and the backend server was built with Flask. The database is hosted on a GCP cluster and is managed using Cockroach.db.
Cockroach.db: what and why?
Cockroach.db was a sponsor at CalHacks 6.0. Their database offering distinguishes itself by being able to perform atomic transactions on highly distributed clusters. Cockroach.db was the perfect database service for Change to use because our financial transaction data is incredibly sensitive and we need a fault tolerant way to store it.
Because of the nature of Change's data, we knew we had to avoid bugs in our storage. For example, there are multiple queries that need to happen when a user pays a store on Change: it needs to log the payment, update the balance of the customer, and update the balance of the store. If our database query were to fail in a non atomic way, we could have crippling data desync bugs. We used Cockroach.db to make sure that didn't happen.
links
backend: http://github.com/churst12/change-backend mobile: http://github.com/VaughnFisher/Change_Mobile desktop POS: http://github.com/darrendawson/changePOS
Built With
- cockroach.db
- expo.io
- flask
- python
- react-native
- react.js
- sql
Log in or sign up for Devpost to join the conversation.