{"id":17773449,"url":"https://github.com/imhotep/reveal-feedback","last_synced_at":"2025-04-01T15:22:34.593Z","repository":{"id":4481449,"uuid":"5620480","full_name":"imhotep/reveal-feedback","owner":"imhotep","description":"Reveal feedback","archived":false,"fork":false,"pushed_at":"2012-08-31T00:14:14.000Z","size":432,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-07T09:42:19.235Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imhotep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-08-30T20:29:38.000Z","updated_at":"2013-10-15T00:16:39.000Z","dependencies_parsed_at":"2022-08-22T11:01:23.044Z","dependency_job_id":null,"html_url":"https://github.com/imhotep/reveal-feedback","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imhotep%2Freveal-feedback","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imhotep%2Freveal-feedback/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imhotep%2Freveal-feedback/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imhotep%2Freveal-feedback/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imhotep","download_url":"https://codeload.github.com/imhotep/reveal-feedback/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246660324,"owners_count":20813387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-26T21:44:21.253Z","updated_at":"2025-04-01T15:22:34.575Z","avatar_url":"https://github.com/imhotep.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"reveal-feedback\n===============\n\nThis is a set of applications that allow you to get immediate feedback when doing a presentation with [reveal.js](https://github.com/hakimel/reveal.js). People in your audience can use the *reveal-feedback-app* to vote up/like your slides. The charted results will be displayed in *reveal-feedback-stats*.\n\nYou can package *reveal-feedback-app* as a mobile app with [PhoneGap](http://www.phonegap.com) by just copying the assets to your www folder.\n\nSetup\n=====\n\nIn order to use the feedback app you need to setup a few things\n\n1) A [couchdb](http://couchdb.apache.org) server (I use an [Amazon EC2](http://aws.amazon.com/ec2/) instance)\n\nCreate a new database, give it a name (such as *keynote*) and add this document:\n\n    {\n        id: \"current\",\n        slide_id: null\n    }\n\nThis document will be used to determine which slide is current so that people can vote it up.\n\ncreate a new design document and call it _\\_design/presentation_ . Create a new view and call it _all\\_docs_ and add this code to it\n\n    function(doc) {\n      if(doc._id != \"current\") {\n        emit(null, doc);\n      }\n    }\n\nThis view allows the stats app to generate its chart\n\ncreate another view and call it *docs\\_by\\_indices* and add this code to it:\n\n    function(doc) {\n      if(doc.indexh != undefined \u0026\u0026 doc.indexv != undefined) {\n        var key = doc.indexh + '-' + doc.indexv;\n        emit(key, doc);\n      }\n    }\n\nThis allows reveal.js to create a new slide document if it does not exist or update the current slide with the right ID if the slide exists. \n\nOnce you have all of that setup, you need to work on your presentation with [reveal.js](https://github.com/hakimel/reveal.js) :-) \nWhen you're done with with that, you need to include the reveal-feedback.js at the bottom of your [reveal.js](https://github.com/hakimel/reveal.js) presentation and scroll through your presentation (vertically and/or horizontally). That will update the couchdb database with all of your slides. Make sure to specify your host at the very top of the *reveal-feedback.js* file. You can keep adding slides but if you plan on deleting some slides it might be better to start with a clean database.\n\nreveal-feedback-app\n===================\n\nThis is a simple webapp that allows people to vote up a given slide while you're doing your presentation. The app fetches the current slide and whenever the user touches/clicks the `Like` button the couchdb database gets updated and the statistics get immediately updated too.\n\nMake sure to include your couchdb database path at the top of the reveal-feedback-app.js file\n\nreveal-feedback-stats\n=====================\n\nThis is another very simple webapp that displays a chart with the vote data from the couchdb database. When you're done with your presentation you can show the charted results to your users. You'll get a sense of the most popular slides. You can also keep them to yourself as a valuable feedback so that you can keep working on the slides that were less popular or remove them all together.\n\nHosting\n=======\n\nI like to host all these web applications on the same server because they're very light client-side apps. I use [nginx](http://nginx.org).\nYou could use **proxy_pass** if you don't want to deal with couchdb's default port (5984). A firewall rule might prevent you from using a port different than 80/443 OR you might not want to open that port on your server.\n\n    upstream couchdb {\n            server localhost:5984;\n    }\n\n    server {\n\n        location /keynote2 {\n                proxy_pass http://couchdb;\n        }\n\n    }\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimhotep%2Freveal-feedback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimhotep%2Freveal-feedback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimhotep%2Freveal-feedback/lists"}