Inspiration
When it comes to learning, there are a few ways of encouraging good habit-forming. Duolingo's constant nagging through its notifications seems quite successful in bugging users to practice a language every day- and it was this daily practice that we based our app idea off of. The idea of daily practice, even if it's only one question a day, removes the overwhelming, tedious aspect to learning while building a strong commitment to knowledge. Even the name of our app - The Grind - means something similar to "routine tasks or activities" and is a call to grinding/studying new information.
Functionality
To encourage frequent, stress-free practice, The Grind gives you a daily question on whatever subjects you choose. It times you from when you first view the question to when you submit the correct answer, and that time places you on a leaderboard with other players attempting the same daily question (leaderboard is work in progress). You only get one try at the question for a leaderboard spot, but learning from mistakes is just as important- if the first answer is incorrect, you are encouraged to try again until you get it right.
How it's built
We used Android Studio to create the app (via the Java language), made prototypes and other layouts in Proto, and created all designs using Canva and Lunapic. Sound effects were borrowed from Mixkit and online app templates were used as inspiration.
Challenges we ran into
In Android Studio, data can be stored so that it won't reset even when the app is closed and then reopened in a feature called SharedPreferences. However, SharedPreferences can only store data like Strings, ints, and Sets (and other basic data types but no lists/arrays). It was a challenge figuring out how to store the completion status and other data of each of the questions while leaving room for more subjects to be added in, since lists/arrays can't be stored. We first tried Sets, but realized we needed an ordered list to store the data properly. Eventually, parsing everything into a String to store and then back to a list to use worked best. Because one of us focused on the prototyping and the other on implementing functionalities, we decided that it was best to split the work accordingly. Though not knowing how to improve the app design-wise without an updated copy on hand was difficult, eventually, we figured we could send video demos to be able to better gauge what the app looked like without going through the tedious process of taking many screenshots.
Accomplishments we're proud of
Although we did have a few "major" breakthroughs that allowed us to overcome challenges behind the scenes which we certainly are proud of, i.e. the SharedPreferences, a big part it was also the many smaller accomplishments along the way that really pushed the app building along. Things like watching a bland page of purple boxes turn into a colorful array of customized subject buttons or even little details like rounding some corners were exciting and motivating. This is to say that we're proud of our use of SharedPreferences and the button visuals.
What we learned
Though there were many technical things that we've learned from, one of our biggest points for growth was learning to become better collaborators and team players. As friends, being able to maintain a professional working attitude without getting distracted by each other was new at first, but we were able to figure out a good work dynamic. We learned to communicate with each other as much as possible, updating each other on our work and asking for input on any changes we were planning to make. It's surprising how often teammates will think of an aspect during implementation that would have never crossed your mind. Learning how to communicate more effectively was what really upped our collaboration game as a team.
What's next for The Grind
Though the three days allowed for this hackathon may be enough for some projects, we're creating something that we hope will grow into something bigger. We believe these three days have been spent well on implementing the basic functionalities and main ideas of the app, though we have many other features we would like to make possible.
- We plan to fully implement the leaderboards globally (both overall and subject specific).
- We'd like to use a server to push out new questions each day, allow users to create accounts to store their progress, and push out notifications to check out the daily questions. (At the moment it's a local list of questions + name entry because servers cost money.) These features will continue our goal to better motivate users to become eager learners.
- There are currently only 4 subjects that are available. We would like to implement subjects of all types- whether it's geometry or classical literature, you're bound to find something that piques your interest.
- We hope to incorporate a point system based on answer streaks to rank players, which requires users to sign up for an account. Answer streaks serve as a count of how many days questions were answered in a row, which builds a habit.
- Creating a feature allowing users to view and practice previously incorrect questions for extra rewards will encourage a refresh of previously missed information that is important for knowledge-building.
- Making our app available to all learners is important to us, so we plan to work on accessibility options such as an automatic text-to-speech feature to make sure that no one is left out from the fun.
And the list goes on...
Built With
- android-studio
- canva
- java
- lunapic
- mixkit
- proto.io
Log in or sign up for Devpost to join the conversation.