Clicker is one of the latest apps by Cornell AppDev, a project team at Cornell University. Clicker seeks to extend the functionality of iClickers on a web and mobile platform.
We use CocoaPods for our dependency manager. This should be installed before continuing.
Clone the project with git clone https://github.com/cuappdev/clicker-ios.git
After cloning the project, cd into the new directory and install dependencies with pod install.
Open the Clicker Xcode workspace, Clicker.xcworkspace, and enjoy!
Create a /Secrets/Keys.plist plist file in the project directory with the following template:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>api-url</key>
<string>http://example.server.com</string>
<key>api-dev-url</key>
<string>http://localhost:3000</string>
<key>fabric-api-key</key>
<string>FABRIC_API_KEY</string>
<key>fabric-build-secret</key>
<string>FABRIC_BUILD_SECRET</string>
</dict>
</plist>Replace http://example.server.com under api-url with the host of your backend server (clone ours here!) and fill in Fabric-related strings for Fabric analytics integration.
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| netID | String | Unique, university-generated identifier for each user. |
| name | String | User name (full name). |
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| name | String | Course name. |
| term | String | Course term. |
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| dateTime | String | Start date and time of the lecture. |
| questions | [Question] | Questions asked / to be asked during a lecture. |
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| text | String | Question asked / to be asked. |
| type | String | Type of questions (FREE_RESPONSE, MULTIPLE_CHOICE, MULTIPLE_ANSWER) |
| options | [Option] | Choices presented / to be presented to answer a question. |
| answer | String | Correct answer to the question. |
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| description | String | Choice presented / to be presented to a user. |
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| question | String | Question id. |
| answerer | String | User id. |
| type | String | Type of answer (SINGLE_RESPONSE, MULTIPLE_RESPONSE) |
| multipleResponse | [String] | Choices submitted by a user. |
| singleResponse | String | Choice submitted by a user. |
| Name | Type | Description |
|---|---|---|
| id | String | Unique identifier. |
| name | String | Organization name. |
- LiveSessionTableViewCell: Used in the HomeViewController to display active lectures.
- PastSessionTableViewCell: Used in the HomeViewController to display past lectures.
- EmptyLiveSessionTableViewCell: Used in the HomeViewController as empty state for live sessions.
- EmptyPastSessionTableViewCell: Used in the HomeViewController as empty state for past sessions.
- LiveSessionHeader: Used in the HomeViewController as the section header for active lectures.
- PastSessionHeader: Used in the HomeViewController as the section header for past lectures.
- HomeViewController: Used to display all active lectures and past lectures.
- LiveSessionViewController: Used to answer questions in class. Includes question, answers, timer, submit, etc.
- LoginViewController: Used to allow users (students and professors) to login.
- TabBarController: Used to implement a tab bar navigation flow.
We use Quarks for all of our protocol-oriented networking tasks. Neutron is an awesome framework that we use to streamline all networking tasks.
- ClickerQuark
- CourseQuark
- LectureQuark
- OrganizationQuark
- QuestionsQuark
- UserQuark
Session
| Name | Type | Description |
|---|---|---|
| id | Int | Unique identifier. |
| delegate | SessionDelegate | This session's delegate. |
SessionDelegate: Protocol specifying session functionality (sessionConnected & sessionDisconnected).
- AlamoFire: Used for HTTP networking.
- Fabric: Used to track every move of our users.
- Google Sign In: Used to seamlessly sign in users.
- Neutron: Used for protocol-oriented networking.
- Socket.io: Used to manage sockets.
- SnapKit: Used for some AutoLayout magic.
- SwiftyJSON: Used for improved JSON parsing.
Check out Issues to see what we are working on!