{"id":15583776,"url":"https://github.com/harshavardhana/qed","last_synced_at":"2025-04-24T03:46:03.898Z","repository":{"id":20543618,"uuid":"23823127","full_name":"harshavardhana/qed","owner":"harshavardhana","description":"QED is a multi-screen projector system written in Javascript.","archived":false,"fork":false,"pushed_at":"2024-06-17T19:43:59.000Z","size":3109,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-24T03:45:57.739Z","etag":null,"topics":["beamer","javascript","pdf","pdf-viewer","projector","qed","websocket"],"latest_commit_sha":null,"homepage":"https://qed.y4m4.dev/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harshavardhana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-09-09T07:08:17.000Z","updated_at":"2024-06-17T19:44:01.000Z","dependencies_parsed_at":"2025-03-07T06:41:29.051Z","dependency_job_id":null,"html_url":"https://github.com/harshavardhana/qed","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/harshavardhana%2Fqed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshavardhana%2Fqed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshavardhana%2Fqed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshavardhana%2Fqed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harshavardhana","download_url":"https://codeload.github.com/harshavardhana/qed/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250559998,"owners_count":21450168,"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":["beamer","javascript","pdf","pdf-viewer","projector","qed","websocket"],"created_at":"2024-10-02T20:21:10.161Z","updated_at":"2025-04-24T03:46:03.879Z","avatar_url":"https://github.com/harshavardhana.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What is QED?\n\nQED is a multi-screen projector system written in Javascript. Source is available as free software/open source under[Apache license 2.0](./LICENSE).\n\n## Description\n\nQED was inspired by a latin phrase `quod erat demonstrandum` meaning `which is what had to be proven`. Traditionally used in mathematics, since this software was primarily written for [MSRI](http://www.msri.org/web/msri) it seemed appropriate.\n\nQED is a simple and cost-effective way for beamer or powerpoint presentations to use 3 screens to show three consecutive slide, with automatic updating, and without requiring anything special of the presenter.  The system currently requires a \"server\" to which one uploads an ordinary beamer file and 3 projectors each connected to a commodity PC on the same network.\n\n## Basic Architecture\n\n\u003cpicture\u003e\n  \u003csource src=https://github.com/harshavardhana/qed/raw/master/QED.png type=image/png \u003e\n  \u003cimg src=\"https://github.com/harshavardhana/qed/raw/master/QED.png\" alt=\"QED Overview\"\u003e\n\u003c/picture\u003e\n\n## How to install QED ?\n\nQED has some server side dependencies which needs to be installed first.\n\n### Installing NodeJS using NVM on (Ubuntu 15.10)\n\nAn alternative to installing Node.js through ``apt`` is to use a specially designed tool called nvm, which stands for \"Node.js version manager\".\n\nUsing nvm, you can install multiple, self-contained versions of Node.js which will allow you to control your environment easier. It will give you on-demand access to the newest versions of Node.js, but will also allow you to target previous releases that your app may depend on.\n\nTo start off, we'll need to get the software packages from our Ubuntu repositories that will allow us to build source packages. The nvm script will leverage these tools to build the necessary components:\n\n```\n$ sudo apt-get update\n$ sudo apt-get install build-essential libssl-dev\n```\n\nOnce the prerequisite packages are installed, you can pull down the nvm installation script from the project's GitHub page. The version number may be different, but in general, you can download and install it with the following syntax:\n\n```\n$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash\n$ nvm ls-remote\n...\nv6.8.0\nv6.8.1\nv6.9.0   (LTS: Boron)\nv6.9.1   (LTS: Boron)\nv6.9.2   (LTS: Boron)\nv6.9.3   (LTS: Boron)\nv6.9.4   (LTS: Boron)\nv6.9.5   (LTS: Boron)\nv6.10.0   (Latest LTS: Boron)\n```\n\nThe newest version at the time of this writing is `6.10.0`. You can install that by typing:\n\n```\n$ nvm install 6.10.0\n```\n\nUsually, nvm will switch to use the most recently installed version. You can explicitly tell nvm to use the version we just downloaded by typing\n\n```\n$ nvm use v6.10.0\n```\n\nWhen you install Node.js using nvm, the executable is called node. You can see the version currently being used by the shell by typing:\n\n```\n$ node -v\nv6.10.0\n```\n\n### Installing QED\n\nPrerequisite please install 'git' version control system.\n\n```\n$ sudo apt-get install git\n$ git clone https://github.com/harshavardhana/qed.git\n$ cd qed\n```\n\nAfter you have cloned the repository, please use npm to install all the `QED` dependencies (all dependencies will be automatically installed)\n\n```\n$ npm install\n```\n\n### Configuring QED\n\nNow that we have successfully installed QED, we are ready to make configuration changes i.e ``config.json``\n\n```js\n$ cat config.json\n{\n    \"server\": {\n        \"port\": 80,\n        \"root\": \"web\",\n        \"host\": \"0.0.0.0\"\n    },\n    \"socket\": {\n        \"port\": 4002,\n        \"root\": \"web\",\n        \"host\": \"0.0.0.0\"\n    },\n    \"projectors\": {\n        \"projector1\": \"10.0.0.25\",\n        \"projector2\": \"10.0.0.5\",\n        \"projector3\": \"10.0.0.53\"\n    }\n}\n```\n\nConfiguration 'server' and 'socket' by default listen on all the IPs at ports `4001` and `4002` respectively.  You can configure them to use a different port of your choice depending on your local infrastructure. `projectors` are the commodify PC's which are connected to your projectors they need to have a static IP.\n\nNOTE: Make sure that the projector association is in accordance with the project installation at your site, to allow for proper slides to be displayed on relevant screens.\n\n### Starting QED\n\nNow simply start `./start-services.js`\n\n```\n$ ./start-services.js\n### Starting local server\n\nWeb server running at:\nhttp://127.0.0.1:4001\nhttp://10.237.205.192:4001\n\nSocker server running at:\nws://127.0.0.1:4002\nws://10.237.205.192:4002\n\nUploaded files will be saved to web/uploaded\nRemember to clean this directory from time to time, if you end up uploading lots of files.\n```\n\nQED is now running at port `4001` , now open the link in your browser [http://localhost:4001](http://localhost:4001) to start using QED.\n\n### How to Enable QED to start automatically after system restart?\n\nQED provides a convenient shell script to enable QED upon system restart.\n\n```\n$ ./enable-rc-local qeduser\n```\n\nThis script will automatically add following line into your `/etc/rc.local`\n\n```\n$ cat /etc/rc.local\n(sudo -u qeduser bash -c \\\"cd /home/qeduser/qed \u0026\u0026 ./start-services.js\\\")\u0026\n```\n\nNOTE: Following automation will only work on Linux operating systems.\n\n## How to update QED ?\n\nCurrently the update mechanism is based on pulling sources directly into your local repository.\n\nFetch new changes\n```\n$ cd qed\n$ git pull --rebase\n```\n\nKillall any running services and restart QED.\n```\n$ sudo killall node\n$ sudo /etc/rc.local\n```\n\n## User Feedback\n\nIf you have any problems with or questions, please contact us through a GitHub issue.\n\n## Contributing\nYou are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.\n\nBefore you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshavardhana%2Fqed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharshavardhana%2Fqed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshavardhana%2Fqed/lists"}