Main activity: profile page. You can set your profile image here, see the points / "approves" you've earned, and see content your content.
Main activity: course list.
Course activity (accessed from course list): course member list. Users can subscribe to other users here.
Course Activity: content feed. Users can see and approve content from other users here.
I'm a huge fan of Memrise, a vocabulary memorization app that awards users points for doing memorization exercises. It's a hugely successful model and based off that, I thought that a points-based model could have other applications. Therefore, for the Pearson Student Coding Contest, I decided that I would use such a system to make a study motivation app.
What it does:
The aim of the app is to motivate students to take notes and go to class, the main target audience being students with poor study habits. This app is integrated with Pearson Learning Studio (a learning management system), allowing the app to find out what courses users are enrolled in at a university, as well as who their class mates are (given their campus uses LearningStudio). HandUp will award points to users for taking pictures of lecture notes or content for a particular course and submitting it to the app - other users in that course can then "approve" it, giving the user points.
Using a FireBase database, additional data is stored and kept track of, such as the profile of a user, the content they upload, the content they have "approved" (upvoted), etc.
How I built it
HandUp is an Android application written in Java. The backend of the app consists of a test instance of Pearson Learning Studio, a learning management system and FireBase, a NoSQL database.
Challenges I ran into
The most challenging part of making the app was managing the memory for it, due to the amount of images being downloaded by it. The most interesting issue I encountered was the appearance of memory leaks caused by Firebase event listeners in lists not being destroyed when an activity exited. This caused an activity with lists that pulled content from Firebase to stay in memory, which would eventually lead the app running out of memory! After learning a bit more about the debugging tools offered for Android, I was able to identify the problem and solve it.
Aside from specific technical aspects, this was the first Android app I've made outside of school and the first time I worked using a RESTful API, which lead to a learning curve at first. I spent a great deal of time making sense of the Android environment as well as making and parsing queries to / from Pearson's service. Making user data accessible via an online database also presented issues, such as facing bandwidth issues when downloading data.
Accomplishments that I'm proud of
This is the first Android app I've made outside of school, and I'm happy to say I'm finished with it. I ironed out all the major performance issues, which is important considering it's reliance off sending / receiving a fair amount of image data. Also, though the UI is a little simple, a great deal of energy was put into it's appearance - I feel that I managed to make it visually appealing.
What I learned
The most important thing I learned throughout the process of developing the app was how to manage memory in an environment where it's limited. Making this app gave me a good overview of the Android developer environment - if I ever need to get content or a service out to a lot of people on mobile, I know how to now.
Used Material by Others