Programing Language: Java, C#, PostgreSQL
Repository: https://github.com/TiagoJoseMagalhaes/CMOVProject1
This project was developed as a part of an introductory mobile development class, and its objective was to create a system that somewhat emulated how the Amazon Go shops work. This system was made up of 3 individual pieces of software; a client application for android, a store checkout application for android, and a store server. The client application was where the user could register products via QR codes and view his cart, as well as generate a QR code that would be used for checkout, the client application also had an authentication system, where it would receive a private key from the server which served as its sign key for any data sent henceforth between it and either the server of the checkout application. The store checkout application would display a catalog of all available products and would execute product checkout by reading the QR generated by the client application, this data would then be sent to the server. Our server was built on ASP.net and had a PostgreSQL database that contained user data and product data, and was responsible for checkout processing and user registration.
Checkout data is signed by the client application so that the server could verify the authenticity of its author, the bouncycastle library was used both on android and on the C# server to facilitate the cryptographic operations used in this process. The android applications also made use of google zxing library to read and generate QR codes. We had also been given the option of using NFC to communicate between device, unfortunately, neither of our devices supported that feature and as such, we were unable to implement it.