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!