- Brainstorm ideas, set up project with empty screens and research food expiration
- Created initial empty screens + viewcontrollers
- Created tableview
- Found data source for food expiration calculation
- Challenges faced: Implementing navigation and tab controllers, then trying to rename view controller
- Scrape food expiration data from web and implement Food models
- Created form to compose new food
- Added tableview logic
- Scraped expiration data from web
- Implemented Food and Food Type models
- Implemented search bar in food type selection screen
- Implemented expired status feature and dynamic section headers
- Implemented deleting items
- Challenges faced: Passing data between view controllers using delegates was new and I didn't understand it at first. I also had to change up the models a couple times to get what I wanted. The logic was quite confusing.
- Add filtering by storage and calendar view
- Added calendar view which updates decorations based on expiration
- Added local push notifications (no dev signing capabilities yet though)
- Added about page
- Added app icon and launch screen
- Implemented filtering by storage and search bar
- Bugfixes and clean up UI
- Added support for dark mode
- Challenges faced: UICalendarView crashes whenever the dates needed to update are outside the year visible, however this was not in the documentation. It was very finnicky to figure out and I spent a lot of time debugging. I also had trouble getting the color of the buttons the way I wanted them to be.
This app allows you to keep track of food you buy so that nothing gets wasted. Add items to your virtual pantry and the app will track their freshness, notifying you if something is about to expire.
- Categories: Lifestyle, Health & Fitness
- Mobile: This app is one users will need to check consistently as food is constantly being consumed and goes bad within weeks or days. Having push notifications when an item is about to expire is a useful feature that a website cannot provide. Potentially you may want a feature to take a picture of a food item instead of entering the item manually.
- Story: The value of the app is immediately obvious since most people in America have had the experience of having to throw out food since they didn't keep it properly. Furthermore, there is an angle of sustainability in reducing food waste.
- Market: The existing apps with this functionality are outdated and poorly-received. However, the app is useful for everyone. It does not have a niche market; instead it could be potentially adopted by every person in the country.
- Habit: The app concept is not addicting since it is more for record-keeping than gaining new information. However the user could end up using it multiple times per week if not every day from the nature of checking food.
- Scope: The basic version of this app is relatively simple, only requiring basic conditional logic and storing tableviews. Therefore it is reasonable to build with a basic understanding of Swift.
Required Must-have Stories
- User can see a list of foods
- User can add a food to their list
- User can see the expiration date(s) of their foods
- User can see when a food has expired
- User can remove a food from their list
- User can specify if food is stored in fridge, freezer or pantry, with expiration updating
- User can edit a food in their list
- User can sort their list by expiration, date added, and name
Optional Nice-to-have Stories
- User can create an account
- User can log in
- User can see a calendar of food expirations
- User is notified when food will expire soon via push
- User can take a picture of a food to add it to their list
- User can search for a food in their list
Stream
- User can see a list of foods
- User can see the expiration date(s) of their foods
- User can see when a food has expired
- User can sort their list by expiration, date added, and name
- User can remove a food from their list
- User can search for a food in their list
Creation
- User can add a food to their list
- User can specify if food is stored in fridge, freezer or pantry, with expiration updating
Detail
- User can edit a food
- User can see the expiration date(s) of their foods
- User can see when a food has expired
Tab Navigation (Tab to Screen)
- Home Feed
- Calendar
Flow Navigation (Screen to Screen)
- Stream Screen
- => Detail Screen when food is tapped
- => New Food Screen when + button tapped
- Creation Screen
- => Home when back/cancel button pressed
- Detail Screen
- => Home when back button pressed
- Calendar
- => None
