What was the motivation behind it?
In my junior year of engineering I wanted to make a scalable product that people would love to use. I also had a secondary motive of obtaining some side cash from it (This kind of idea had provided me side cash in high school by creating software tutorials on YouTube). Knowing myself, it didn’t surprise me when I choose to build a software application, specifically an Android Application. The Aim of the project was three fold:
- I wanted an application that satisfied my unique specifications in functionality as well as design
- Visualising is the first step of expressing your ideas. By knowing how to make an android application I would be quickly able to present my ideas in comprehendible manner to a general public
- Around that time I had deviated from C++ to Java and wanted something concrete (even if it is basic) to get deeper into Java
So little did I know that this skill was also going to help me in first internship.
The app and what’s so special about it?
The application that I created was a Notes app. Its cardinal function was simply scribbling down notes. Its other features included:
- Notes were sortable and viewable according to oldest, recent and favourites.
- Provided extra accident delete protection by providing bin where deleted notes go and can be restored.
- Added search functionality for easy search of notes by title
- Backed up by google drive where you can upload the notes database and later restore when needed
- The colour of each note can be chosen, to indicate the urgency or theme of the task
- In each note one can add images or take photos, record, and save audio clip and other utilitarian extras
- Ability to share each note on variety of platforms which includes WhatsApp, Mail, messages etc
- Had different grid layouts to view the notes in a bird’s view form or a detailed form
The main deal:The main features that I personally wanted in my notes app was feature number 4. A notepad for me is a place to scribble personal notes and epiphanies as well as an organized way for getting things done and increase productivity. This required me to have seperate work notebook (containing projects and internship notes), a college notebook (containing university pertaning notes), and a personal notebook, all of which should be universally accessed by single account and easy switching between them should be possible.
The solution: Google login and Drive API was the backbone of making this possible. The notes app creates multiple sqlite databases depending upon your required divisions, for example: work notebook, personal notebook. These databases are maintained in the users drive storage, by his permission. Then the user can switch between his notebook by simply loading the other databases from his drive. Saving of information, preventing accidental overwritting and other nitty-gritty details are managed by the notes app itself.
The design philosophy that the app followed was Model-View-Controller. It took me solid 3 months to taking it from idea to a fully functional developable application.
The developing and learning experience:
It provided me experience in designing an application based on Model-View-Controlled pattern. Apart from learning Java intricacies and android development, got deep into the nitty-gritty details of SQLite, drive-API for making the separate databases work seamlessly. Faced numerous problems while optimising the app to display images from each notes, audio saving and contention problems, to restoring to bitmaps.
Some images of the application: