Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brianhicks/listenup
https://github.com/brianhicks/listenup
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/brianhicks/listenup
- Owner: BrianHicks
- Created: 2010-09-22T20:25:35.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2012-07-10T03:18:41.000Z (over 12 years ago)
- Last Synced: 2024-12-09T19:53:38.206Z (14 days ago)
- Language: Ruby
- Homepage:
- Size: 1020 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ListenUP
ListenUP is a SaaS web application to create and manage surveys. It was created
for the psychology students at John Brown University to use during a senior
seminar class on data collection.## Design Challenges
The old system for sending surveys would have students crafting an email with
questions to send to their intended recipient. These had very low response
rates, as the non-psych students on campus would be deluged with these emails
at the end of every semester, along with the subsequent begging for responses.
These were solved by letting students write an introduction to their survey,
and then send it up to three times.## The Good Parts
Here are some of the best portions of the codebase:
- "app/controllers/surveys_controller.rb": Especially `#export`, which
downloads a report as a CSV that identifies itself as an excel spreadsheet
(a requirement of the department.)
- "app/helpers/surveys_helper.rb": Transforms database records into answerable
survey fields.## Changes I'd make
Here's a list of some changes I'd make, knowing what I know now.
### MongoDB
The current state of the Survey model (and associated Question, Answer,
Recipient, and Response models) is a bit messy. I'd reimplement this to use
MongoDB, as it would be a pretty perfect way to store irregularly shaped
documents. For instance, a Response could look something like this:{
"_id": ObjectID(...),
"survey": ObjectID(...),
"recipient": {"email": "[email protected]", "id": ObjectID(...)},
"questions": {
"How many pencils do you own?": 5
}
}### Smaller changes
- I'd use cancan or something similar to implement permissions - the existing
code checks in multiple places and isn't very DRY.
- Email should be sent asynchronously, especially bulkier mailings like these.
- Better market research - looking back, it would have been easy to market
this as a product to undergraduate psycology programs. They don't have a lot
of good options when it comes to software (as of two years ago.)
- Use a good JS library like Knockout or Ember to create a better
user-experience when creating surveys.