Bloom helps users with their coffee journey - whether that is perfecting your cup, locating new roasters or cafes to try, or even simply to keep an inventory of your beans. This app offers the following components:
Brew
- Provides a plethora of brew methods, including a variety of Immersion and Percolation techniques
- Guides users with their preferred setup in the "standard1" brew
- At the current time, only AeroPress is available for proof of concept
Discover
- Discover roasters and cafes nears your location
- Get users current location
- User can set their search radius to find the closest cafe near them
Inventory
- Maintain your list of coffee beans
- Know when your beans are good for a standard shelf life
- Note: Recommended shelf life is two weeks
- Your app is written in Swift or Objective-C. (Javascript or any other programming languages are not
- Your app uses native iOS frameworks. Third-party libraries/frameworks are not allowed.
- App currently uses the following frameworks:
- UIKit
- AudioToolbox
- CoreLocation
- App currently uses the following frameworks:
- Your app does not use web views (not directly nor indirectly).
- Your app makes an API request with URLSession.
- URLSession is located in
DiscoverNewViewController.swift
- Starts at line 58:
MARK: - URLSession Variables
and line 452:MARK: - URLSession Extension
- URLSession is located in
- Your app has a custom class that implements the Delegation pattern.
- Delegation pattern is located in
InventoryViewController.swift
- line 11 - Custom Delegate:
EditCoffeeDetailTableViewControllerDelegate
- Delegation pattern is located in
- Your app has a custom class that implements the Singleton pattern (thread-safe).
- Singleton pattern is located in
PeristencyHelper.swift
- Singleton is used in
InventoryViewController.swift
- line 46
- Singleton pattern is located in
- Your app emits a sound or vibrates the device on an event.
- Vibration on device is located in
Aeropress > PressViewController.swift
- line 60 - Vibration happens when user finishes brewing a coffee
- Tested on an iPhone and it works
- Vibration on device is located in
- Your app utilizes a class that extends or subclasses at least one native class.
- Extension is located in
DiscoverNewViewController.swift
- line 483 - Extension is located in
Animation.swift
- line 12
- Extension is located in
- Your app has at least three main views (UIViewControllers).
- Your app has at least one animation.
- Animation is located in
Animation.swift
and utilized inBrewViewController.swift
- line 37 - At
viewDidLoad()
, labels of each brew method fades out to 25% opacity (oralpha
in Swift terms)
- Animation is located in
- Your app views are built with Auto Layout.
- Auto Layout located throughout
Main.storyboard
- There were too many AutoLayout constraints to have done but I implemented enough to get the idea across
- For example, in the images, simulating on an iPhone 8 and iPhone 11 fits the
BrewViewController
correctly without resizing the circular buttons - See image
- Auto Layout located throughout
- Your app uses UserDefaults to save settings.
- UserDefaults is located in
DiscoverNewViewController.swift
- line 22 - Current UserDefaults sets the the search radius of user's location so next time user opens the app, the distance (in meters) is set
- UserDefaults is located in
- Your app uses at least one of the following: ScrollView, TableView, and CollectionView
- ScrollView is used in
BrewViewController
- see imagesbrewVC1.png
andbrewVC2.png
in "Screenshots" directory
- ScrollView is used in