CardSwipr helps you take attendance at meetings and events. Attendees swipe in with this easy interface, the application looks them up in the Yale Phonebook, and collects their information in a list. When the event's over you can even download a spreadsheet (
.csv) output of the attendees' information.
CardSwipr can quickly tell you about a person after they swipe their card. It can both take you to a person's Yale Phonebook entry and open a Service Now Incident with their name already filled out. This feature is used in some Walk-In Computing Support centers around campus.
More input than you'll need
In the same box, users can input any of the following "unique identifying information".
- USB Magstrip Reader (registers as keyboard input)
- USB Barcode Scanner (registers as keyboard input)
- Yale Email
More output than you'll use
You'll get the most useful information about your attendees from the Yale Phonebook, including:
- First Name, Nickname, Last Name
- Yale Email Address
- College Name, College Abbreviation
- Class Year
- On-Campus Telephone (often inaccurate)
- On-Campus Mailing Address (often inaccurate)
How It Works
For most input we just lookup the information in LDAP (the protocol powering the Yale Phonebook). This includes
yale email, and
upi. We use the open source YaleLDAP gem to make this easy. You could use this gem in your applications too!
Yale ID Card Databases
barcode lookups we connect to a Yale database on the backend. This is more difficult for others to get access to, but we're working on an API that may become available to certain individuals who register with us.
Make your own
secret_token by following the file
rake secret to generate your own secret key, and keep this private.
To set this up, you must install the ruby-oci8 gem by following the instructions here: https://github.com/kubo/ruby-oci8/blob/master/docs/install-instant-client.md
Troubleshooting install: Make sure to change all the commands for the OS you're using and your version numbers e.g. .so -> .dylib, the 11_number _ things Also you may need to do ruby -e "require 'oci8'"
Database Connection Information
A sample database.yml is available in Yale's private git repository (but it is private). This application is not configured to run without a username/password to the right Yale database. We're working on replacing this with a web API for the same information through Layer 7.
Standard Rails Application Setup
bundle install rake db:create rake db:schema:load rails server
Each of the models have a comment above them explaining what the purpose of the model is.
Pre-Pull-Request Code Quality Checks
Before submitting a pull request, please check on the following:
- Does the testing suite pass? Run
guard, and press enter once to run the whole testing suite. Guard automatically runs tests on files you've changed, see
Guardfilefor its rules.
- Have you added tests for any new features?
- Have you corrected as many of pronto's suggestions as make sense? Run pronto with
bundle exec pronto run. Pronto runs many code analyzers such as rubocop, brakeman, flay, and rails_best_practices - only on the code you've modified.
- Does your pull request contain only relevant code changes?
Authors and Contributors
Lovingly created for the Yale Community by Casey Watts (@caseywatts), based on work by Adam Bray (@adambray).
Support or Contact
If you have trouble or questions about this application, email the managers of the Student Developer & Mentorship Program at