About it

View it on Google Play Store - or - View sample code on GitHub

This is an Android app designed to help retail owners to control purchasing orders.

I developed this app after I finished the Android Basics Nanodegree course from Udacity and I wanted to implement a real project from end-to-end so I could practice and test my programming skills.


Some background

I chose this theme because in my "previous life", I founded and managed a retail business. In retail, one key aspect is inventory management. You need to have the right products with the appropriate inventory level. Buying more than you need will make you waste money. Buying less will make you lose sales opportunities. Getting the right balance of inventory is crucial to any retail store.

In my case, the business was based on low price, high mix of products and high volume sales, which means a lot of purchasing from suppliers. Products include clothes for women, men and kids and house utensils. I had over 50 suppliers and trucks delivering every day. To control those orders, I used a spreadsheet but it was not the best solution. Suppliers deliver late, sometimes with diverging quantities. That means payment had to be rescheduled and checked against quantity delivered.

This app was designed to support this kind of business. Functionality includes adding orders, managing delivery and payment dates and status. Also, a monthly budget can be included so a comparison between planned and real can be done.


System Design

The system was designed with a standard Order - Order Lines relationship. A simplified version of the Entity Relationship Diagram (ERD):

erd

The Monthly Budget table holds the total planned budget for each month, and the actual real value comes from the sum of the orders from the Orders table.


Implementation

  • I did the whole implementation including the database design, Java code, user interface, advertisement with AdMob, payment to remove advertisement, publishing to the Google Play store, spam email marketing.

  • Android apps are developed with Java and Android Studio.

  • The app uses a SQLite database.

  • It has 44,000 lines of code. For my first full app, it gave me some long hours of work. I posted the Java code for the order editor in my GitHub as an example of the implementation. Take a look if you are curious to see it.

number of lines


Screenshots

Some screenshots of the app:

screen shot screen shot

screen shot screen shot


Cool things about it

  • I like the Reports, especially the Budget report. You can plan the monthly budget by category and the app will calculate the total already order and the balance for each category.

  • The Orders summary allow viewing if an order's delivery or payment is late by using colors. A red color indicates a late item (view screenshot for example).

  • There are several features like adding a product image; creating a PDF of the order and sending it by email; exporting all orders to a CSV file; importing contacts.


What to improve

  • The User Interface is the worse could be improved. I'm not the best with graphical assets, but I did try to follow the Google Material Design guidelines. The app icon also could be better (at least it was free).

  • User Experience: there are no instructions or help to guide the user. A tutorial or hints on what the user is expected to do would improve the user experience.

  • The app uses a SQLite database, which is a local file. A better system would be with an online database that could be accessed with a web version of the app.


Results

  • As of the date of this post, the app has over 3,000 downloads and has been growing with around 40 daily downloads. It is not much but it is nice to know that it has been helping some people to manage their businesses.

  • Developing this app was a great experience of creating a full product. It also helped me to improve my coding, debugging and troubleshooting skills.

  • One lesson learned is that as a developer, we might think that a certain feature would be highly desirable and we might spend a lot of time developing that feature. For instance, I developed a Report section with several different options of reports. If I were a user, I would certainly use those reports. But the stats show that users are not using them that much. Maybe the user experience is not good or maybe they just simply don't need them.


Comments

comments powered by Disqus