About the app
The ACIMS app was developed after experiencing the frustration of forgetting the ACIMS list at home and trying to download the spreadsheet onto my phone. Spreadsheets in general aren’t awesome experiences on mobile and can be quite cumbersome. This was definitely the case with the massive ACIMS list and so I wanted to make it better. I also have always been interested in learning to code for a long time but hadn’t had the motivation to seriously learn. With a project in mind I started to look into what I actually needed to learn to get there.
Free Code Camp
I had outlined prior to starting the general features I wanted to be involved in the app. the ability to query the entire ACIMS list by common or scientific name and to see the current ACIMS rank. As well I thought it would be handy if some synonyms could be queried as well, as that tends to be handy. Once I knew the features I drew out on paper the various ‘pages’ of the app and how I wanted them to look. These were very basic views but I found them help me focus on what I was doing and gave me a better mental map of the final product.
As I was developing the apps ‘pages’ I started to work on the logic component of the app. This essentially was to take a users input in the search and return the species that related to it. To do this efficiently and make sure later updates to the ACIMS list could be incorporated simply (ie. not recreating individual species pages) I wanted to use an object to hold the ACIMS data (I used a JSON) and then created a service within the app that would access it. In this way, updating the ACIMS app means I just need to update that JSON file and the rest of the app will update with it. Once this was done I then needed to focus on how to display that data. Initially this was simple, display the entire list and just filter it as a user provided input. This worked great on my computer, however as soon as I tested it on a phone it was clearly not a very efficient way to do this. What I needed to do was reduce the number of species cards the phone had to render at one time. Which eventually I figured out, though it took me a few tries and I released the app originally with the main page just limited to 25 results. This worked if you knew that’s what it was doing, but was very confusing to users that didn’t.
If you want to see what all of this looks like you can see the full codebase on github.