Minrva is an Android, iOS, and web application targeted towards mobile device users and centered around library content. The name also implicitly refers to the web services ("Minrva Services") created to supply data feeds to the mobile devices. Minrva 1.0 for Android was developed in 2012 and further extended upon through user testing and feedback until version 3.0 (for iOS and Android) in Fall of 2016.
More broadly, however, Minrva has become the representative name of the mobile development research that takes place in Hahn Lab at the Undergraduate Library of UIUC. Part of the research includes Android way finding prototypes using Wi-Fi networks and iPod Touch applications from as far back as 2010. In addition, new experimental applications are currently being built with the intent of integrating them into the Minrva application. Although many of these experimental applications could be stand alone applications, we choose to design them as "modules" in hopes of fostering collaboration and reusability.
Minrva modules are analogous to content management system modules/plug-ins. Each module was built to provide a very specific piece of functionality centered around a library item. In fact, the only way modules can communicate between one another is with a library item's unique identification number. The identification number is enough information to perform useful tasks because most of the computational tasks in a library revolve around library media. Again, this is analogous to how content management systems are built around web pages and how their modules communicate between each other by using web page identifiers. An illustration of how some hypothetical modules can communicate through an "Item" (item's unique identification number) can be seen below:
The main advantage of designing a modular application is that developers can work completely independent of one another while still contributing useful functionality to the mobile application. The reason this is possible is because, by making the program modular, we have "decoupled" the dependencies between modules. Thus, a developer is able to create and/or change a Minrva module without worrying about breaking Minrva by accidently breaking a dependency. In other words, modular design allows for quick, collaborative prototyping -- a perfect situation for an organization with a high turn over rate (e.g. students developers at a college).
Websites can be designed for humans or can be designed for machines. Websites designed for humans typically contain stylized data for visual appeal. On the other hand, websites designed for machines are typically minimalistic in order to reduce download time and the time needed to process data. Depending on the type of functionality provided, machine-readable websites are often either called data feeds or web services. Due to the dynamic nature of the data Minrva uses, the Minrva modules all depend on web services. These custom-built web services are called Minrva Services and are implemented RESTfully.
Minrva Services are built very specifically for corresponding Minrva modules. Each Minrva module will visit a specific set of Minrva Services (websites) and expect to find data in a specific format and with specific labels. If the modules do not find what they are expecting to find, they will be unable to read the data from the website and will not work properly. In order to find out more about the formats and schemas of the web services required by each individual Minrva module please refer to the documentation.