I need an iOS application (coded in Swift with well documented code by using commented lines) which should synchronize its database with an online server mongoDB dataset (if user has correct access key).
The application should work offline (no online access to server database). The app is quite simple: Main screen has just a single (typeahead) search element and by selecting an result item, its content should be shown.
- Application should work offline
- Data should be loaded / synchronized from online server ([url removed, login to view])
- If there is a newer version or no/wrong access key, database should be removed
- Main Screen of application is a single typeahead search element
- Selecting an item (of this typeahead searchbox) will display its content on a new screen
- data can be delivered as needed (e.g. JSON-string...)
- [url removed, login to view] application is already working online, so you can exactly see the frontend - which is very simple
**Extended description of specifications**
1. Data synchronization
The application should check for current version (string value given by server) and user access key (also string given by server).
This check and synchronization of the data should be done once a week (if there is an internet connection) - or manually.
The user has to take care that the application gets internet connection minimum every three months.
If there is a newer version or there hasn't be a check for user access key for more then three months (missing internet connection), a note should be displayed in the app: User has to give internet access to the app.
If there is a missing or wrong access key or after three more months with no check for this, the data should be removed from the app and no synchronization should be possible.
2. App content
Main display of this app is only a single text input field (search), which should work like twitter typeahead: [url removed, login to view]
With this the user should search and select for elements stored in the database. Selecting any item will open a new screen to show the content.