Skip to content
This repository has been archived by the owner on Jul 19, 2020. It is now read-only.

pol-is/polis-deploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

NOTE: This separate project has been archived in favor of the monorepo & Docker setup at https://github.com/pol-is/polis.


polisDeployment

If you're interested in deploying Polis, or setting up a development environment, you've come to the right place.

Overview of system

First things first, it helps to understand a bit how the system is set up.

Component Name Tech Description
polisServer Node.js The main server. Handles client web requests (page loads, vote activity, etc.)
polisMath Clojure/JVM The math engine.
polisClientParticipation Javascript The client code for end-users.
polisClientAdmin Javascript The client code for administrators.

The code in the two client-side repos compile to static assets. We push these to s3 for CDN via deployPreprod and deploy_TO_PRODUCTION, but there is a config file for each of these projects which will allow you to configure the behavior of these scripts as described in the READMEs. Of note though, you can use a static file server, and deploy via these scripts over sshfs. Finally, for local development, these repos have hot-reload able servers you can run with the ./x command, but note that this is not the recommended approach for serving the client assets in production.

Environment variables and configuration

Each of these applications currently takes configuration from a set of environment variables. In the future we'll be moving away from this towards configuration files, but for now, the easiest way to configure the application is to have a shared set of environment variables that you keep in a file somewhere. You might do something like the following to set up a single secure file for these purposes:

mkdir ~/.polis
touch ~/.polis/envvars.sh
# set environment variables here with your text editor of choice (cough; vim)
nano ~/.polis/envvars.sh
# make sure only your user can read the directory and its contents can only be read by your user for security purposes
chmod -R og-rwx ~/.polis
# if you really want to get fancy you can encrypt the file as well...

Then you can run source ~/.polis/envvars.sh to prepare any of the servers for running.

Each of the repo READMEs should have notes on what environment variables are needed, as well as templates to start off from (please raise an issue if something is missing). And as noted, some scripts require that configuration is in a specific file somewhere, so please refer to individual repo READMEs for full details.

Of particular note, the polisServer runs on environment variables which tell it where to look for the client repositories (host & port), and affording you a lot of flexibility in how you deploy.

TODO Compile complete starter template somewhere in this repo...

Development environment

  1. Get the main server running using the Readme here: https://github.com/pol-is/polisServer
    • This includes instructions on setting up a local postgres database
  2. Get the math server running using the Readme here: https://github.com/pol-is/polisMath
  3. Build client repo assets using the instructions in the repsective Readmes:
  4. Each of the above repos also contains instructions for running a server with HMR; By default, the server should forward requests for these compiled assets to the HMR server.

Basic/Manual deployment

Go through all steps in the Development environment, but at step (4) take compiled assets and serve with a/several static webserver(s), making sure to configure ports as described in the main polisServer Readme.

Docker deployment

Ultimately, it would be great if all of this content was merged into this polis-deploy repo.

Contribution notes

Please help us out as you go in setting things up by improving the deployment code and documentation!

Releases

No releases published

Packages

No packages published