# Poll.horse ### Simple polling service for public polls With strawpoll being somewhat very broken I decided to implement my own. Let's go! ## What is this If you have never used strawpoll, in short this is a website to easily make small polls without a fuss. A live version is available [here](https://poll.horse/). This version is always based on the current `master` branch and release tags.
You want more cutting edge? Under [dev.poll.horse](https://dev.poll.horse/) you can find the most recent builds based on the current commit of the `dev` branch. New features can be tested here but the integrity of the database is not guaranteed and may be occasionally wiped. ## API This service offers an API to create and get the status of polls. The API Docs can be found [here](API.md). ## Running your own instance of Poll.Horse ### Standalone 1. Make sure you have [Node](https://www.nodejs.org/) installed. 2. Download the latest release source code from [the releases page](https://github.com/Wolvan/poll.horse/releases/); 3. Extract the zip file anywhere 4. Open a shell in in the directory you just extracted to and run `npm i` 5. Run `npm run build` to build the project 6. Start the server with `npm start` 7. List all available options with `npm start -- --help` or use shell options with `npm start -- ` ### Docker 1. Install [Docker](https://www.docker.com/get-started) 2. Download/clone the contents of this repository 3. Open a shell in the directory and run `docker build -t poll.horse` 4. Use `docker run poll.horse` 5. Optionally mount config file at `/usr/src/app/config.json` 6. Optionally mount persistent directory to `/data` ## Contributing The core is written in TypeScript, a typed superset to Javascript and executed with NodeJS. Pull Requests welcome. Before cloning this repository, make sure you have [Node](https://www.nodejs.org/) installed. Then clone this repository, open a terminal/command prompt and type `npm i` to install the required dependencies. `ts-node` is recommended to test during development manually, install it with `npm i -g ts-node typescript`. ## Directory Structure - `./dist` - The finalized and compiled files that can be used with node - `./src` - The source files of the project - `./test` - Files required for unit testing, aka test setup/teardown and test spec files - `./utils` - Various utility scripts not part of the main source code ## Scripts Execute the scripts with `npm run