<commit_before>vote
====

Voting System
Initially built at HackNashville 4 to serve as the method by which the winner of the hackathon was chosen, this build is more geared towards the needs of Barcamp Nashville 2013. Barcamp is held November 2, 2013.

##Conference Logistics
* ~200 attendees
* 24 sessions total capacity
* Speakers are available for morning, afternoon, or both session times
* iBeacon - pop schedule with room, track number of people
##Session
  session title
  speaker
  description
  categories x 2
##categories: 2 each session; 15 total
  * all
  * code
  * content
  * creative enterprise
  * design
  * gear
  * infrastructure
  * life hacks
  * marketing
  * mobile
  * social
  * social enterprise
  * start up
  * ux/ia
  * other

##5 votes total
  1 per session
  ranking/positioning
  chose all 5, submit at once
  cart?
  real time graphs
  revoke a vote
##rooms??
  large
  medium
  2 small
##group members
  <NAME>
  <NAME>
  <NAME>
  <NAME>
  <NAME>
  <NAME>
  <NAME>
  <NAME>
  <NAME>
##event
  create event, add sessions
  same instance = multiple events
##start with a config file
  name
  number of votes
  list of sessions: title speaker description
##path to logo
  filter
##components
  interface
  backend
  programming
##interface
  organize screens
  presentation
##backend
  store votes
  rest api
  hook in drupal site
##programming
  integrate interface - angularJS
  frontend framework
  CSV file export - sessions
  hosting - c panel, unix
##realtime display of votes as they appear
##display schedule in application??
  add room/time
##rooms are assigned manually
  size
  number of votes
  time
input size of rooms
  no. of rooms
##wrap iOS app around web app
node, python, php
mock Json for session data
graph-d3 over sockets


## Run voting app

node app.js


## Start front end for development

cd public/

python -m SimpleHTTPServer 3001 (any http server will work)

Go to http://locahost:3001

## REST API

### Post New Item: ./api/items/new
```
curl -X POST -H "Content-Type: application/json" -d '{
  "id": "vsa",
  "title": "Voting System App",
  "people": ["<NAME>", "<NAME>", "Hakan", "Thomas", "Beat", "Paul"],
  "description": "Sometimes Colors Dance in Realtime"
  }' http://localhost:9000/api/items/new
```

### Get Item list: ./api/items
```
curl -X GET http://localhost:9000/api/items
```

### Get Results: ./api/results<commit_msg>Update of README.md for BarCamp 2014<commit_after>vote
====

A voting system initially built at HackNashville 4 to collect audience input by which the winner of the hackathon was chosen. This build is more geared towards the needs of [BarCamp Nashville](http://www.barcampnashville.org/) 2013. BarCamp '13 was held November 2, 2013. BarCamp '14 is set for October 18, 2014.

2014 Conference Logistics
=========================

An anticipated 200+ attendees will arrive between 8:00am and 9:00am the day of the event. At some point that morning the polls will be open for participants to cast their votes among the forty-eight (48) sessions total capacity. Speakers are available for morning, afternoon, or both session times. There are two (2) voting periods. Twenty-four (24) sessions will be chosen during the morning sessions. Twenty-four (24) more sessions will be chosen for the afternoon sessions. Those sessions that did not get selected for the morning will be reentered into the options for the afternoon should the speaker be available. Chosen morning sessions will not be eligible for the afternoon round of voting.

During the polling period, tabulation is viewable live. Once polling has ended, the room assignment is performed by BarCamp staff. During voting, attendees will get to place 4 votes, one for each time slot.

##Model - [Firebase](https://barcamp.firebaseio.com/)
###Sessions
A collection of sessions. Individual objects the details on a Speaker's presentation as well as their availability and vote tabulation.
 * Availability (Morning || Afternoon || Both)
 * Body - Description of the session
 * E-mail - email address of the speaker
 * First Name
 * Last Name
 * Room - The room assignment (unused at BCN '13)
 * Session Category - An array of size 2 categories
 * Signup Counts - Favorites from BarCamp website
 * Time - The time assignment (unused at BCN '13)
 * Title - Title of the session
 * Twitter Hashtag - session hashtag
 * Username - BarCamp website username
 * id - Firebase id
 * total_votes - Number of votes tabulated for the session
 
###Categories: 2 each session; 15 total
 * all
 * code
 * content
 * creative enterprise
 * design
 * gear
 * infrastructure
 * life hacks
 * marketing
 * mobile
 * social
 * social enterprise
 * start up
 * ux/ia
 * other

##Users
A user is represented in firebase as a unique code to enter for voting purposes, an array of their votes, and the validity of the account. Currently there is no way within the app to disable a user or identify them by name. That association does not exist in the model or in the unique code assignment process.

##Views
###Login
The first view a user is greeted with. It contains logos for BarCamp and Firebase (in return we received free tier 1 service for BarCamp '13). The user is prompted to enter their unique voting code.

###Voting
The default view upon successful authentication (valid user code). Here a user has the ability to view a listing of the sessions. They can vote on and revoke their votes for sessions. They also have the ability to filter by category.

###Results
This view reveals a table listing of sessions in a realtime link to Firebase. The columns are sortable and should probably default to show the highest scoring sessions by vote count in descending order. It also contains the toggle to enable/disable voting which *must* be put behind something more secure. Seriously, this isn't secure or even obfuscated well.

###Schedule
The plan currently is to include the schedule as updated on the [BarCamp website](http://www.barcampnashville.org/bcn13/sessions) in the application via an iframe. This page is updated manually once votes are tallied and is set up to reveal the time slots and room assignments. It also has the ability to show the user a list of their custom sessions composed of favorites they've marked ahead of time.

## Run the Voting App
Install with:

`npm install`

`grunt`

Run with:
`node web.js`

## Original HackNashville Group
<NAME>, <NAME>, <NAME>, <NAME>, <NAME>, <NAME>, <NAME>, <NAME>, <NAME>, <NAME>
{'fraction_non_alphanumeric': 0.07528211470088113, 'fraction_numerical': 0.015149172978822074, 'mean_word_length': 3.9502677888293802, 'pattern_counts': {'":': 4, '<': 24, '<?xml version=': 0, '>': 24, 'https://': 1, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6213776', 'n_tokens_mistral': 1832, 'n_tokens_neox': 1714, 'n_words': 921}