Intermine gene search iOS
The InterMine app allows you to search through integrated genomics data-sets at a variety of model-organism databases. Use structured search templates to find relationships between different data sets, inspect your lists of genes of interest and use them in further data analysis and find items of interest from a range of searches on your iPhone.
How to run the project?
- Download Xcode
- Clone the project from Github:
git clone https://github.com/joystate/intermine-ios.git
- Build and run project in Xcode
Architecture
The application is build following MVVM pattern. The following logical parts are present in the application:
- Models. There are two types of models - CoreData models (representing mine, mine model and saved search objects) and view models (providing UI elements for search results, lists and templates)
- Views. The main storyboard contains all view controllers and major UI elements. Navigation between view controllers is written in code with animated transitions when appropriate.
- Controllers. The main controller is tab bar controller. Navigation controllers are used to achieve the navigation inside the tabs.
- Networking module is build using Alamofire library. IntermineAPIClient performs network requests.
How to contribute?
To contribute to Intermine iOS app, one can do the following:
- Write tests. All modules of the app need tests, including all application models and layers. Writing tests is the best place to start for a new contributor, as it allows to get familiar with the codebase.
- Refactoring. Chasing perfection leads to better understanding of the codebase and makes the code more maintainable and clean.
- Github issues. Issues are written by developers of the application for the developers working on the application. Most likely, a new contributor will have trouble understanding the problem described in any particular issue. Try to get familiar with the codebase and contact one of the developers for more details.
Dependencies
(All dependencies are already installed in the project repo)