# Forum Logic This project is a Javascript prototype for the DGF system. It implements the core algorithm described in [Craig Calcaterra (May 24, 2018) On-Chain Governance of Decentralized Autonomous Organizations](http://dx.doi.org/10.2139/ssrn.3188374). This project is implemented as a static site, and so may be downloaded and browsed offline, or served via HTTP. The `main` branch is [served](https://dao-governance-framework.gitlab.io/forum-logic) via GitLab Pages. # Development For a more convenient local URL, Add `forum.dev` as an alias for `127.0.0.1` in your `/etc/hosts` file Install [mkcert](https://github.com/FiloSottile/mkcert/#installation) Install [nginx](https://nginx.org/en/docs/install.html) Add the root CA for self-signed certificates ```bash mkcert -install ``` Generate a certificate for `forum.dev` ```bash mkcert forum.dev ``` Move the certificate to nginx config directory ```bash sudo mkdir -p /etc/nginx/certs sudo cp forum.dev{,-key}.pem /etc/nginx/certs/ ``` Make your home directory readable to the webserver. One way to do this is to add the webserver daemon's user to your user group. The following command would work if your user's group has the same name as your user, and the webserver user is `www-data`: ```bash sudo groupmems --group $USER --add www-data ``` Configure `nginx` by adding a file `/etc/nginx/sites-available/forum_dev`, with content similar to the following: ```nginx server { listen 443 ssl; server_name forum.dev; ssl_certificate /etc/nginx/certs/forum.dev.pem; ssl_certificate_key /etc/nginx/certs/forum.dev-key.pem; root /home/ladd/dgf/forum-logic/src/; index index.html; location / { try_files $uri $uri/ =404; } } ``` Replace `/home/ladd/dgf/forum-logic` with the path to this repository on your filesystem Enable the site ```bash sudo ln -s /etc/nginx/sites-available/forum_dev /etc/nginx/sites-enabled/ ``` Now restart `nginx` and the site should be available at https://forum.dev. ```bash sudo systemctl restart nginx ``` Note that browsers may cache assets, so after modifying source code, you may need to refresh your browser while holding `Shift` to bypass the browser cache. # TODO - Move `actor.js` and `action.js` out of `display/`. To `supporting`?