An open API service indexing awesome lists of open source software.

https://github.com/zorn/flick

Flick is a simple Elixir / Phoenix LiveView app that helps capture ranked votes.
https://github.com/zorn/flick

elixir elixir-lang phoenix-framework phoenix-liveview ranked-voting

Last synced: 3 days ago
JSON representation

Flick is a simple Elixir / Phoenix LiveView app that helps capture ranked votes.

Awesome Lists containing this project

README

          

# Flick

![Still frame from the movie Election, the character Tracy Flick is holding up a cupcake with the lettering "Pick Flick" across the icing.](docs/pick-flick.png)

Flick is a simple Elixir / Phoenix LiveView app that helps capture ranked votes. You can see this project in action at .

This project was built to help the [Elixir Book Club](https://elixirbookclub.github.io/website/) pick books, but it is open to all.

## Highlights

- No accounts are needed to create ballots or cast votes.
- Votes are ranked votes that help find a better overall consensus.
- Individual voters can be weighted.
- A ballot can be closed, stopping future votes from being cast.

## Notable Future Enhancements

- The project is very trusting and has no aggressive security against people voting more than once. Flick is intended for honest polling.
- The ballot creation form asks users to enter comma-delimited options, and I'd like to revert this to dynamic inputs to allow more user-friendly entry of long option names.
- See [Issues](https://github.com/zorn/flick/issues) for more.

## Project Demo

YouTube:

## Screenshots

![Home page](docs/screenshots/home-page.png)

![Create Ballot page](docs/screenshots/create-ballot-page.png)

![Capture Vote page](docs/screenshots/capture-vote-page.png)

![Ballot Admin page](docs/screenshots/admin-page.png)

## Running in Local Development

### Install Elixir via `asdf`

This project is built using Elixir and Erlang, and as such we define specific version targets using `.tool-versions` a file format of the [asdf project](https://asdf-vm.com/). Please refer to it for [various installation options](https://asdf-vm.com/guide/getting-started.html). Once installed, run the following from the project root to make sure you have the required versions.

```bash
$ asdf install
```

### Start Postgres

This project requires a Postgres database for storage and a Docker Compose file to run a containerized version is provided via `compose.yml`. You are not required to run Postgres via a container, and a standard on metal installation should work fine too.

Before attempting to run the Phoenix app, be sure to start the Docker container with:

```bash
$ docker compose up -d
```

To shutdown you can run:

```bash
$ docker compose down -d
```

### Start Phoenix

To start your Phoenix server:

* Run `mix setup` to install and setup dependencies
* Start Phoenix endpoint with `mix phx.server` or inside IEx with `iex -S mix phx.server`

Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.

Ready to run in production? Please [check our deployment guides](https://hexdocs.pm/phoenix/deployment.html).

## Learn more

* Official website: https://www.phoenixframework.org/
* Guides: https://hexdocs.pm/phoenix/overview.html
* Docs: https://hexdocs.pm/phoenix
* Forum: https://elixirforum.com/c/phoenix-forum
* Source: https://github.com/phoenixframework/phoenix