Skip to content

vadonym/you-choose

Repository files navigation

YouChoose

Anonymous voting system

Table of Contents

Getting Started

Prerequisites

Create your secret files:

mkdir secrets
echo my_super_db             > secrets/database_db
echo my_super_user           > secrets/database_user
echo my_super_password       > secrets/database_password
echo my_super_email          > secrets/email_address
echo my_super_email_password > secrets/email_password
echo my_super_auth_jwt_key   > auth_jwt_key

You can also run secrets.sh script to generate those files:

./secrets.sh

In order to run this project, you must have installed docker-compose.

Run

To run the project on a local environment, use:

# run
docker-compose up

# run in detached mode (background)
docker-compose up -d

# rebuild images
docker-compose up --build

Stop

To run the the docker stack, use:

# stop
docker-compose down

# stop and remove created volumes
docker-compose down -v

Deployment

Create swarm

# create 3 docker machines
docker-machine create machine-1
docker-machine create machine-2
docker-machine create machine-3
# init swarm
docker-machine ssh machine-1
docker swarm init --advertise-addr <192.168.XXX.XXX>
exit
# join swarm
docker-machine ssh machine-2
docker swarm join --token <TOKEN> <192.168.XXX.XXX>:2377
exit
docker-machine ssh machine-3
docker swarm join --token <TOKEN> <192.168.XXX.XXX>:2377
exit

Copy application

docker-machine scp docker-compose-stack.yml machine-1:.
docker-machine scp -r secrets machine-1:.
docker-machine scp -r kong machine-1:.

Deploy app

docker-machine ssh machine-1
docker stack deploy -c docker-compose-stack.yml you-choose

Check status

docker-machine ssh machine-1
docker stack ps you-choose

Remove app

docker-machine ssh machine-1
docker stack rm you-choose
exit
docker-machine rm machine-1
docker-machine rm machine-2
docker-machine rm machine-3

Built With

Python with Flask for backend

React for frontend

PostgreSQL for database

Kong for Api Gateway

Docker for container orchestration

Architecture

Frontend

WIP

Api Gateway

WIP

Auth

WIP

Core

WIP

IO

WIP

Database

WIP

Email

WIP

Adminer

WIP

Screenshots

Authors

Marian-Vlăduț Jorăscu

Gabriel David Roșu

Andrei-Liviu Samoilă