update README. master v0.0.1
authorjloup <jeanloup.jamet@gmail.com>
Wed, 14 Feb 2018 16:55:09 +0000 (17:55 +0100)
committerjloup <jeanloup.jamet@gmail.com>
Wed, 14 Feb 2018 16:55:09 +0000 (17:55 +0100)
README.md

index 84e6304949c115fffa5c8536db5ef7e5662ce541..4c389438874dbe0ad838bd9a06b3ea85efa769bf 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1 +1,120 @@
-# Crypto
+# Cryptoportfolio app
+
+Back and front end for cryptoportfolio project.
+
+Server binaries and webapp files are shipped to Github. No need to install dev dependencies to deploy it. All you need is [ansible](http://docs.ansible.com/ansible/latest/intro_installation.html#installing-the-control-machine)
+
+- [Deploy](#deploy) : deploy server binaries and webapp archive to a server with ansible
+- [Server](#server) : server written in golang
+- [Webapp](#webapp) : JS (React)
+- [Release](#release) : release server binaries and webapp archive to github with ansible.
+
+Dir tree
+```
+|- api/*.go   api endpoints
+|- db/*.go    database models
+|- cmd/
+|   |--- app/
+|         |-- Makefile
+|         |-- conf.toml   server configuration file (dev)
+|         |-- main.go     server entry point
+|   |--- ansible/
+|             |-- ansible.cfg
+|             |-- hosts
+|             |-- requirements.yml
+|             |-- conf.toml.j2            server configuration file (prod)
+|             |-- cryptoportfolio-app.j2  server systemd file
+|             |-- vars.yml                playbook variables (vault)
+|             |-- release.yml             release playbook
+|             |-- deploy.yml              deploy playbook
+|   |--- web/
+|         |-- env/     app environments
+|              |-- dev.env
+|              |-- prod.env
+|         |-- js/      js source code
+|         |-- static/  index.html and style.css
+```
+## Server
+#### Install
+##### Golang installation (if needed)
+1. Download right package at [https://golang.org/dl](https://golang.org/dl)
+2. Install it
+```
+tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
+
+export PATH=$PATH:/usr/local/go/bin
+```
+#### Fetch dependencies
+Simply run at the root of project :
+```
+  make install
+```
+#### Run locally
+You need postgres running on `localhost:5432` and  the following setup:
+```
+CREATE USER cryptoportfolio;
+ALTER USER cryptoportfolio WITH ENCRYPTED PASSWORD 'cryptoporfolio-dev';
+ALTER ROLE cryptoportfolio WITH CREATEDB ;
+CREATE DATABASE cryptoportfolio OWNER cryptoportfolio;
+```
+Then run the app in cmd/app:
+```
+  cd cmd/app
+  make run
+```
+## Webapp
+#### Install
+You will need `npm`, `node` and `yarn`, then:
+```
+ cd cmd/web
+ make install
+```
+
+#### Build local webapp
+```
+  make static ENV=dev
+```
+Files are now ready to be served by server.
+
+## Ansible install requirements
+```
+cd cmd/ansible
+
+ansible-galaxy install -r requirements.yml
+```
+## Releasing
+To release, you need to have all dev environments setup for server and webapp. The token used to push to Github is in cmd/ansible/vars.yml. You need a password to decrypt this file. Ask me. You need to store this password in a file such as `~/.vault_cryptoportfolio_pass.txt`
+
+You can then run the release.yml playbook, don't forget to provide a the release version :
+```
+  cd cmd/ansible
+
+  ansible-playbook release.yml --extra-vars "version=X.X.X" --vault-password-file=~/.vault_cryptoportfolio_pass.txt
+```
+## Deploy
+change `hosts` file :
+```
+[jloup-home]
+jlj.am
+
+[jloup-home:vars]
+  ansible_port=21
+  ansible_user=ansible-deploy # This user will be used to carry out operation on remote machine
+                              # To make it work, this user should not be prompted for password when sudo
+                              # else you need to pass --ask-sudo-pass when running playbook
+
+  app_user=jloup    # user that will run the app service
+  app_domain=jlj.am
+
+  postgres_database=cryptoportfolio
+  postgres_user=cryptoportfolio
+  postgres_password=cryptoportfolio-dev
+
+  linux_arch=386 # your machine arch. should be one if [386, amd64]
+```
+
+```
+  cd cmd/ansible
+
+  ansible-playbook deploy.yml --extra-vars "version=X.X.X" --vault-password-file=~/.vault_cryptoportfolio_pass.txt
+```