Shoparama

Date

September 2016

Category

Web/Mobile Application

Technology Used

Java (Android Studio), PHP, MYSQL

About this project

Shoparama is an application I developed to make it easier to have multiple shopping lists within a group. Once registered for an account, a user has the ability to create shopping lists, and add products to the list. The application also allows for multiple users modifying the shopping list. Once a list is created, a key and token is generated and when shared, the key/token allows other registered users to join a shopping list.

The application was created as a notification system to allow users to easily communicate that they might be out of a particular product. For example, if a registered user lives with family members and notices that they are running low on a particular product, the user can then through the app, put the product on the families shopping list. Once a product is added to the shopping list, notifications/or emails are sent out to all members of that list and hopefully someone is near a grocery store and can pick some up on the way home. Once the product is purchased, the purchaser has the option to remove the product from the active shopping list.

The application was on the Google PlayStore, but has since been retired. The application also had a website users could log into and see their shopping lists exactly as they would appear on the mobile app.

Each shopping list is managed by the list admin who is the creator of that list. The admin can remove members from the list at any point. Once a person is removed from a shopping list, a new key and token is generated.

The backend for the API serving this application is built using PHP. I built a custom authentication system that works in a similar way to OAUTH2. The application has a MySQL database and is using PDO to access the database.

To maximize code reuse, both the website and the android interface are using the same API to interact with the application. Separating the projects this way made it so much easier for me to make both the web and mobile interface at the same time.

To enable push notifications, I had to incorporate cloud messaging through Google Firebase into my project.

The only challenge that I had in setting up the application was SMTP on my virtual machine. For some reason (please correct me if I am wrong) it seems like Microsoft Azure blocked port 25 (for SMTP) on their virtual machines. I have set up SMTP servers before and have had no problems but this time, emails just could not send. I had to get a MailGun subscription which provided me with an API that allows me to send emails by just making a simple POST request. Configuring MailGun to send emails was a breeze.