The objective of this project is to create an enhanced video conferencing environment for remote participatory design. The video conferencing environment should be able to interface with different devices in the user's vicinity (e.g. printers, projectors). Please refer to our CSCW20 Poster for more information.
- Installed node js latest version from nodejs.org
- Install postgres SQL from postgresql.org. If using Homebrew on macOS, simply run
brew install postresql
to install and thenbrew services start postgresql
to get it up and running. Make sure you can connect to the postgres server by using thepsql
command in cmd, powershell, or terminal. If not, make sure the path to the postgres binaries is in your system PATH environment variable. - [Not required for the current webrtc-based calls] For creating video calls, we use a Zoom account along with the Zoom WebSDK. Create an account with Zoom. In the Zoom marketplace follow these instructions to create a JWT type app. Copy the API secret and key.
- Clone this repository on your local machine. Inside the ParticipateInRemoteDesign folder create a file named '.env'. I've created an example file named '.env.example' as a template. Do not change this file. Copy its contents into the '.env' file that you've created. In the '.env' file, fill in the API_KEY and API_SECRET values from your own Zoom account.
- Create a separate user and database for the app on psql. In the database, type
\i models/initialize_db.sql
to run the ParticipateInRemoteDesign/models/initialize_db.sql file. It will create a table called meetings and insert some example records in the table. Copy the psql user name, db name, password, and db_port. Default values for these variables can be found here. Fill these values into your '.env' file. DB_URL and HOST are just localhost since you're hosting the database on your local machine.
- Open a terminal/cmd/powershell window. Change directory to the ParticipateInRemoteDesign folder.
- First use the
npm install
command to install the required modules. - To start the app use the
nodemon server
command. Nodemon will immediately restart the app when you make any changes to the code. - Open a browser window and go to localhost:5000 to view the app (default address).
- Build your first local server and web app with Node.js by @carstens.christoph on hackernoon. This will go through installing Node JS on your computer and create a simple webapp. At the end of this you'll know how to get an app running on your computer that shows an index page, very basic.
- Integrate Zoom Web SDK into NodeJS apps
- Basic working NodeJS app with an index page. Got the gitignore file from https://github.com/github/gitignore/blob/master/Node.gitignore
- Webpack's Getting Started Docs. Zoom's sample code used webpack as the bundler. Going through the getting started docs will give you an idea of what a bundler does and why that's useful. Its almost another tutorial for how to build an app using NodeJS and webpack.
- Connecting to a database with NodeJS: I'm using postgres (referring this tutorial) instead of a NoSQL db like mongodb. I'm familiar with both. Chose postgres randomly.
- Creating rooms for users using socket.io: I'm using this to allow a user trigger events on another user's browser.
- Hanuma Teja Maddali, Emma Dixon, Alisha Pradhan, and Amanda Lazar. 2020. Supporting Remote Participation when Designing with People with Dementia. In Conference Companion Publication of the 2020 on Computer Supported Cooperative Work and Social Computing (CSCW '20 Companion). Association for Computing Machinery, New York, NY, USA, 335–340. DOI:https://doi.org/10.1145/3406865.3418316