We regularly drink coffee with friends and when paying the bill, one person swipes the card to pay and the rest will transfer to that friend. We wonder why it took so many steps just to share the bill, and that's why QR pay came in. Stellar seems to be the best fit in this case.
What it does
There are 3 main threads in our application:
- Bill creator will create a bill contains parameters of the amount to be paid, items. Then this bill will be assigned an ID, these parameters will be encoded by a QR code.
- Payers scan a QR code to pay, with each person scanning, server will coordinate to recalculate and divide the initial amount evenly among those who scanned the code generated by the billing creator.
- Finally, the bill creator will check the transactions built (not submitted), when have enough money, the bill creator will activate the built transaction by paying the fee and submit it to the Stellar network (use Fee Bump feature) .
- Fee Bump
How I built it
Our product includes 3 main parts:
- Server built with Golang with the goal of receiving and navigating events such as recalculating the amount of money to pay each person when more people scan the QR code.
- The UI part is built using Flutter and stores the user's private keys and user interactions.
- JS Wrapper: Functions built on Stellar's SDKs to interact with the blockchain network are wrapped up so they can run on the Flutter.
Challenges I ran into
By using JS with Flutter, we discovered not only some interesting stuffs but also many interesting issues. Some issues occurred very late and we are almost panicked.
Accomplishments that I'm proud of
We are proud of everyone working together to come up with the idea and implement it, and when we have a problem, sit down together and find ways to overcome it. Fortunately, everything is fine (for now).
What I learned
After building the product, we became more proficient with the Stellar SDK, as well as learned how to teamwork when WFH. We also learned a lot about the new features of protocols 13 and 14.
What's next for QR Pay
We will integrate more features to turn the application into a complete wallet, transfer money, donate social funds, and will improve the security of payment process.
If everything is alright, we will publish it to PlayStore/AppStore.