Build an Instagram-like app for posting images with comments.
The app comprises three view controllers: a feed, an upload page and a login page. The designs to follow will illustrate and specify the design and relationship of these view controllers. The backend will be powered by Firebase.
Users are required to log in before they can access the rest of the app.
Each post in the feed has two elements: a picture and a comment. The picture is a fixed square the width of the device and the text is variable height below it, resulting in non-uniform cell heights. Therefore use Auto Layout to drive automatic cell heights.
![Main Feed Flow](readme_assets/Main Feed/feed_flow_full.png)
Use Email/Password authentication to you can register and log users in.
The simple schema is illustrated by this diagram. This will probably make the most sense for your app.
The file structure of the storage is illustrated here:
Note the relationship between image names and objects in the database. You can use the same UID for both.
Be sure to render your images into compressed JPEG format as we did in the review.
Here's a line of code that takes a UIImage
and generates a Data
object
with JPEG data.
let image: UIImage = ...obtain uiimage somehow...
let data = UIImageJPEGRepresentation(image, 0.5)
Criteria | Points |
---|---|
App uses AutoLayout correctly for all iPhones in portrait | 8 Points |
Variable Naming and Readability | 4 Points |
App uses MVC Design Patterns | 4 Points |
Login screen works as expected | 4 Points |
App uses Firebase's Auth appropriately | 4 Points |
Users can create a post and upload it to Firebase | 4 Points |
App uses Firebase's Storage appropriately | 4 Points |
Users can see well-formatted posts in their feed | 4 Points |
App uses Firebase's Database appropriately | 4 Points |
A total of 40 points
Login Success | Login Failure |
Main Feed Extended | Main Feed Extended Scaling |
Showing Roll: Beginning Modal | Showing Roll: Mid Model | Showing Roll: Finished Modal, Album View |
Uploads Selected | Uploads Success |
Main Feed - After Upload | Uploads Failure |