Last active
June 27, 2017 05:06
-
-
Save ocwang/97ee4ccc06fa08efd8c4bddd4d6dad05 to your computer and use it in GitHub Desktop.
Makestagram Section Competencies
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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