Skip to content

mxd1760/InventoryTrackingApp

Repository files navigation

Inventory App

Build instructions

  1. Download Android Studio

  2. clone repo (https://github.com/mxd1760/InventoryTrackingApp)

    a. On the startup page select clone repository then use this page for the repository url

    b. If you're already in a project when you open up android studio you can get to the same menu by selecting file->new->project from version control

  3. Make sure you setup an emulator on your machine (by following this guide) or connect an android device with developer mode enabled to run the project.

Views

Login page Items page New item page

CS360 Journal Questions

Briefly summarize the requirements and goals of the app you developed. What user needs was this app designed to address?

The original requirements included

  • login screen
  • database for inventory items and user tracking
  • notifications

The app is intended to help users keep track of large quantities of items for storage in a warehouse or smaller scale inventories for individual households or shops.

What screens and features were necessary to support user needs and produce a user-centered UI for the app? How did your UI designs keep users in mind? Why were your designs successful?

The project submission required 3 Activities along with a few dialogs.

  • Login Activity
  • Main Activity (List of items)
  • New Item Activity

I think that these three screens address the required needs with login helping users keep their data secure at least in theory, the main activity does the best in displaying a large quantity of information while giving a lot of room for interacting either with the search bar or the dialog for editing items. The new item activity probably does the least but this is a trade off for it focusing on just making a new element which helps with any expansion to the screen that needs to be done in the future.

At the same time as these screens address some user concerns, I believe it is also true that the project requirements cause some hurdles too. the required login screen is good on a first time or after some long period but having to go through it every time you access the app is likely inconvenient especially when all the data is being stored on the device anyway. having this be moved to a settings page of some kind for use only when interfacing with a server would likely be my preference. along similar lines, the recycler view items would be more convenient to interact with if the risk of clicking the delete button wasn’t conflicting with the interactivity on the items themselves. moving this functionality to an edit page and further redesigning how users can interact with this UI element to minimize friction is something I believe to be prudent in future versions.

How did you approach the process of coding your app? What techniques or strategies did you use? How could those techniques or strategies be applied in the future?

I would say that the approach most apparent in my design for this app would be the separation of concerns. keeping the data separate from the screens as well as having each screen focus on just it's task with only basic interfacing to other screens with the app intents helped with letting me solve one problem at a time.

One strategy i have yet to use on this project but plan to going forward is tracking issues on GitHub and incorporating various tests to help with minimizing the amount of manual review that needs to be done to identify issues like bugs or pain points of the app. tracking issues makes it easy to just take a second to log a thought as it comes up without becoming super disruptive. having automated tests in addition to the git repository will make it easier to justify more radical changes to the codebase by having good metrics as to the functionality of the app as well as other metrics like it's efficiency. this upfronting of analysis helps more effort go into actually improving things instead of manually needing to find and report such things.

How did you test to ensure your code was functional? Why is this process important, and what did it reveal?

For the project prototype I focused mostly on manual tests of each feature one at a time. This strategy was only possible because of how removed many of the features were from one another. As more features start interacting more cohesively across many systems, tracking the effects of changes will only be feasible with good test automation strategies. Having such automation also help identify subtler metrics like memory being used or what steps are the slowest to execute can help with preventing performance problems before they grow big enough to be a real issue.

Consider the full app design and development process from initial planning to finalization. Where did you have to innovate to overcome a challenge?

I'm not sure that I feel as though I had to be particularly innovative to produce this project. I do think that there were many problems in most of the stages of development; however, the solutions to many of these problems were easy to solve with just a little time spent weighing possibilities or spending time researching new ones. Even now, having several Identified options for improving the software, the biggest hurdle is just putting in the work to implement and refine the solution.

In what specific component of your mobile app were you particularly successful in demonstrating your knowledge, skills, and experience?

I enjoyed this project because it provided many opportunities to look at new topics that I may not have previously been familiar with even under the umbrella of android development. Recycler views, push notifications, SQLite databases, and background workers were all concepts I needed to learn more about to complete this project up to now. I think going forward with this project I will also need to learn more about a few things. While I find it frustrating that Google's documentation for android's Api’s feels quite unhelpful more often than I’d like; it's also true that the more I practice, I both am able to find more useful resources from a variety of sources and am less in need of referencing those resources. Having a clear vision for how I want to grow as a developer and the drive to push through the initial hurtles of starting on a project or new topic to learn helps with making a bulk of work that needs to get done feel easier because of the inertia.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages