The project is an enhancement of an existing application. We need to improve it with some minor functions.
The original project (and its specification) is located here:
[url removed, login to view] questId=1556713
Current application is fully functional and working. New enhancements must not break existing functions and keep all application working. Thus it should be tested and delivered as fully functional with new enhancements.
New specification is attached to this project as zip file in 'attachments' section.
**Limiko iPhone app modifications scope**
The scope of required modifications is described in accordance to the [url removed, login to view] file.
This view has 3 new entry types:
* Meal (presented as a meal icon together with the name, if the name is too long to fit on the tab, it is cut off and is followed by "?")
* Quantity of consumed proteins - the functionality of this entry is identical to the currently operative carbohydrates entry
* Quantity of consumed fats - the functionality of this entry is identical to the currently operative carbohydrates entry
Registered carbohydrates may be presented in 2 different units depending on the user's choice while entering data - the entry may be saved in bread units or grams (where 1 BU = 10 g of carbohydrates)
New and Today buttons have been revamped to suit the iPhone back/forward consistency.
The new entry choices have been extended by the Protein and Fat entry fields (they work in the same way as the current Carbohydrates entry field) and by the Meal entry field.
Tapping on "Carbohydrates" leads to the carbohydrate consumption entry screen. Up until now it was only possible to enter quantities in grams, after the change, it will also be possible to change the entry unit to Bread Units (BU)
Tapping on "Protein" leads to the protein consumption entry screen (entry is only possible in grams)
Tapping on "Fat" leads to the fat consumption entry screen (entry is only possible in grams)
All three entries may be plugged in by the user during one "New entry" session. Saving such an entry results in 3 separate database entries (one each for Carbohydrates, Protein and Fat) with the same entry time. Those entries are also transferred as separate entities into the web application database during application sync.
Tapping on "Meal" leads to the meal type choice screen - meal_types
Tapping the newly added "Daily Plan" button leads to the daily plan - mealplan
Meal types (Breakfast, Snack, Lunch, Dessert, Dinner) are identical to the appropriate meal types within the web application. Each meal type has meals assigned according to the meal settings set up in the web application. (one meal may be of multiple meal types). Choosing a meal type moves the user to the corresponding meal list (all meals carrying the given meal type are shown in alphabetical order) - the user is moved to the pickfood view.
Choosing the "Custom meal" entry option leads to the nutrient value entry screen - custommeal.
The meal choice screen consists of all meals (recipes) active within the web application. The list is synchronized together with the mobile app. Upon choosing a meal, the user is moved to the appropriate meal entry screen - addmeal view
After the meal choice, the only entry-required value is the weight of the consumed meal in grams. Nutrient values are fetched from the meal / recipe properties and do not change when the consumed weight is changed.
Tapping add leads to the new entry view which is updated by the plugged in Meal name and weight.
The custommeal view allows for the same actions as the Carbohydrades/Protein/Fat entry options at the new-entry stage. If the user submitted values to at least one of the nutrient entry fields, the custommeal screen already presents this value. Changing values on this screen results in appropriate changes to the new_entry screen values. (the sample value entry screen for Carbohydrates can be seen on the addcarbs tab in the pdf file).
The mealplan vie shows daily planned meals and sports activities according to the set-up diet plan. Entering the mealplan view always results in the current day shown on the screen. The day may be changed forwards (only to the Sunday of the following week) and backwards (only to the Monday of the preceding week).
The screen includes only planned meals sorted in chronological order for a given day together with the planned consumed quantity. Additionally sports activities are also listed (aggregated in a second group). If a given day does not have any planned meals or activities, the application displays a "You have no plan for today" message in the background.
The mealplan view also includes a "Shopping list" button which leads to the weekly shopping list - shoppinlist_weekly.
The weekly shopping list is synchronized with the web application. When the user enters the Shopping list view, it is always the current week that is displayed.
The list displays ingredients necessary to prepare the planned meals on the weekly diet plan. Each listing shows item name, quantity and unit of measurement together with the day, on which the ingredient shows up in the diet plan. Repeating ingredients within one weak are aggregated into a single line containing the sum of quantities of that particular item. Such items do not carry the day they're needed for.
If there are no ingredients needed for a given week (i.e. the user has not planned any meals for the given week or the meals contain no ingredients) the screen shows a "No shopping to do this week" label.
# Data exchange and application synchronization
The way data is exchanged between the app and the web application remains unchanged. The range of data is extended by the new entries and data types.
* Carbohydrate consumption - since a new unit was added, the entered unit needs to be transferred with the carbohydrate consumption (data exchanged to and from the mobile app)
* Protein consumption - (data exchanged to and from the mobile app)
* Fat consumption - (data exchanged to and from the mobile app)
* Meal consumption - (data exchanged to and from the mobile app) - meal name,
* Meals and their properties - (data in the mobile app synchronized to the web app - data is sent only to the phone) - meal name, meal type, nutrient values per 100g (Carbohydrates, Protein, Fat)
* Daily plan - (data in the mobile app synchronized to the web app - data is sent only to the phone) - meal order, meal names and quantities, physical activity names and order, activity time. All this information should be available for the preceding, current and upcoming week.
* Shopping list - (data in the mobile app synchronized to the web app - data is sent only to the phone) - ingredient quantity, unit of measurement, ingredient name and day the ingredient is required. Shopping lists are synchronized for the preceding, current and upcoming weeks.