Skip to content

Instantly share code, notes, and snippets.

@ocwang
Last active June 27, 2017 05:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ocwang/97ee4ccc06fa08efd8c4bddd4d6dad05 to your computer and use it in GitHub Desktop.
Save ocwang/97ee4ccc06fa08efd8c4bddd4d6dad05 to your computer and use it in GitHub Desktop.
Makestagram Section Competencies
Students should be able to apply the knowledge and concepts put forth after each section.
Students will be able to ___.
0. Getting Started
- n/a
1. Setting Up Firebase
- understand what functionality Firebase provides
- identify whether an app will need to use Firebase
- set up a new Firebase project
2. Setting up the Xcode Project / CocoaPods
- create a new Xcode project
- understand what CocoaPods is used for
- use CocoaPods to install third-party libraries
- create a Podfile
- install a new CocoaPods
- use the .xcworkspace
3. Connecting to Firebase
- configure a Xcode project to work with Firebase
4. Basic App Architecture
- define architecture and it's benefits
- create a plan and wireframes for building an app
- organize the directory and project structure
- explain the difference between the directory and project structure
- explain Model View Controller (MVC) architecture
- define a service layer
- identify the architectural layer of code
5. Implementing Login Flow
- define authentication and it's importance
- break user flows into multiple storyboards
- explain the app delegate's use
- change the window's root view controller
- build UI components using IBBuilder
- use stack views
- apply constraints with Autolayout
- connect IBOutlets and IBActions
6. Adding Authentication
- import third-party libraries
- enable Firebase sign-in providers
- use FirebaseUI for authentication
- add basic error handling
- define UID and what it's used for
- explain namespace conflicts and ways to solve them
- use the FirebaseAuth.User class
- define a singleton and how it's used
7. Managing User Accounts
- identify limitations of FirebaseAuth
- use the Firebase database
- understand how data is stored
- read data from database
- create a data model
- create a failable initializer
- identify stringly-typed code and it's shortcomings
8. Handling New Users
- write data to the database
- define navigation controllers and their use
- create a segue between view controllers
- delete users from FirebaseAuth
- implement a service
- change the current window's root view controller
- create a singleton
9. Refactoring Stringly-Typed Code
- refactor strings with constants or enums
- create convenience initializers
10. App Structure
- explain what a UITabBarController is used for
- set a storyboard's initial view controller
- implement a tab bar controller
- add and reorder tabs
- configure tab icons
- add image assets
- set custom classes for storyboard objects
11. Keeping Users Logged In
- explain UserDefaults and it's use
- save custom objects to UserDefaults using NSKeyedArchiver
12. Taking Photos
- implement the UITabBarControllerDelegate
- subclass to create custom classes
- use tags to identify objects
- create and use closures
- create custom helper objects
- use UIAlertController
- use UIImagePickerController
13. Uploading Photos to Firebase
- upload images using Firebase Storage
- view media assets in the web browser
14. Improving the Upload Code and Adding a Post Class
- create computed properties
- structure data in the Firebase database
- generate new object child keys
15. Fetching Data from Firebase and Building the Timeline
- refactor a existing storyboard into separate storyboards
- set up a table view
- set the data source and delegate
- display data in a table view using service methods
16. Creating a Custom Post Table View Cell
- set custom heights for cells
- display images with Kingfisher
- create custom table view cells
17. Improving the UI
- use table view sections to create complex UI
18. Liking Posts
- define denormalization and it's use
- understand and use transaction operations
- build relationships between objects using Firebase
- explain and use dispatch groups
- explain and use the defer keyword
19. Setting Followers
- write data to multiple database locations
- delete data from multiple locations
- build queries to check for existing data
- use higher order functions like flatMap and filter
20. Building the Timeline
- construct a timeline using Firebase
- implement UIRefreshControl
21. Learning Recap
- n/a
22. Firebase Router
- define associated values
- use enums as a data structure
23. Handling Pagination
- use generics
- create generic data structures
- define pagination and it's benefits
- implement pagination
24. Social Login
- implement third-party logins
25. App Stylesheet
- create reusable stylesheets using extensions
- add custom fonts to a Xcode project
26. Collection Views
- use collection views
- create custom collection view cells
- implement collection view data source and delegate methods
- add a custom header
- log out of Firebase
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment