Skip to content
Permalink
Browse files

feat: add more Postgre Web GUIs to docker compose

  • Loading branch information...
evereq committed Sep 18, 2019
1 parent b590e7e commit 92541a5c8f6fc887d6f725b8c28a304c4cbb5e28
Showing with 232 additions and 159 deletions.
  1. +25 −23 .vscode/settings.json
  2. +43 −33 README.md
  3. +3 −0 dc.cmd
  4. +161 −103 docker-compose.yml
@@ -1,24 +1,26 @@
{
"cSpell.words": [
"AGPL",
"Cloudinary",
"adminer",
"compodoc",
"cqrs",
"envalid",
"fastify",
"healthcheck",
"microservices",
"nestjs",
"nestjsx",
"nrwl",
"ormconfig",
"pgsql",
"postgres",
"prebuild",
"toastr",
"typeorm",
"websockets"
],
"vsicons.presets.angular": true
}
"cSpell.words": [
"AGPL",
"Cloudinary",
"Fargate",
"adminer",
"compodoc",
"cqrs",
"envalid",
"fastify",
"healthcheck",
"microservices",
"nestjs",
"nestjsx",
"nrwl",
"ormconfig",
"pgsql",
"postgres",
"prebuild",
"pulumi",
"toastr",
"typeorm",
"websockets"
],
"vsicons.presets.angular": true
}
@@ -4,67 +4,77 @@

Gauzy™ - Fair Profits Sharing Open-Source Platform

- **Open-Source Software** solving **fair sharing of technology**.
- **Stock Options** solving **fair sharing of profits _in the future_**.
- **Gauzy** solving **fair sharing of profits _today_**.
- **Open-Source Software** solving **fair sharing of technology**.
- **Stock Options** solving **fair sharing of profits _in the future_**.
- **Gauzy** solving **fair sharing of profits _today_**.

## Why project named "Gauzy"?
## Why project named "Gauzy"

> Because we believe in full transparency ("Gauzy" - "Transparent") and for our growing IT company we need to invent some process, which will make profits sharing simple and fair!
Ruslan, 20 May 2019

## Who (will) use Gauzy and Why?
## Who (will) use Gauzy and Why

Gauzy created for IT Service companies (agencies), where the engineering department employee receives monthly bonuses based on company profits generated from employee work for company clients. We believe it's a better way to distribute profits fairly with employees compared to other solutions and it should dramatically increase employees' motivation and decrease turnover!

Alternatives analysis:
* In most cases, revenue (income) sharing does not target software developers (but target sales people instead) or provide benefits only on some event (e.g. “shares” used only when company sold, employee leaves or after some vesting period). In all such cases, employee got "delayed" benefits, sometimes for years! Instead, we want some solution which works on a monthly basis!
* Some solutions such as _yearly_ bonuses are good and simple, but they value usually related very little to employee performance (who is doing such evaluation and how?), which is very hard to evaluate fairly over a year of work period. More so, it's common to pay some fixed bonuses (e.g. a monthly salary value paid once a year). More so, in modern engineering it is possible to gain significant skills growth over shorter periods than one year and having monthly recalculated bonuses will provide employees with faster income increase... That should motivate employees to learn new (or upgrade existed) skills as quickly as possible to be able to get bigger bonuses next month, not year! (e.g. “if I learn new skill/tool/platform/framework now, I will be able to get $X more per hour from our company clients and so my bonus will be bigger next month!”). So, there is going to be a direct correlation between employee skills changes and bonus value paid on montly basis!

#### We believe Gauzy Platform will make our own agency more transparent & fair to our own employees (and customers too). For now, we consider Gauzy as an our internal *experiment*, which we hope other companies will join if it proves itself to be at least some sort of success! ;) So, running IT Agency? Join "Gauzy" revolution now!
- In most cases, revenue (income) sharing does not target software developers (but target sales people instead) or provide benefits only on some event (e.g. “shares” used only when company sold, employee leaves or after some vesting period). In all such cases, employee got "delayed" benefits, sometimes for years! Instead, we want some solution which works on a monthly basis!

## How to use Gauzy?
- Some solutions such as _yearly_ bonuses are good and simple, but they value usually related very little to employee performance (who is doing such evaluation and how?), which is very hard to evaluate fairly over a year of work period. More so, it's common to pay some fixed bonuses (e.g. a monthly salary value paid once a year). More so, in modern engineering it is possible to gain significant skills growth over shorter periods than one year and having monthly recalculated bonuses will provide employees with faster income increase... That should motivate employees to learn new (or upgrade existed) skills as quickly as possible to be able to get bigger bonuses next month, not year! (e.g. “if I learn new skill/tool/platform/framework now, I will be able to get \$X more per hour from our company clients and so my bonus will be bigger next month!”). So, there is going to be a direct correlation between employee skills changes and bonus value paid on montly basis!

#### We believe Gauzy Platform will make our own agency more transparent & fair to our own employees (and customers too). For now, we consider Gauzy as an our internal _experiment_, which we hope other companies will join if it proves itself to be at least some sort of success! ;) So, running IT Agency? Join "Gauzy" revolution now!

## How to use Gauzy

- Enter % of income you want to share as a bonus with employees next month (e.g. 60% to employee, 40% to company).
- Enter Income for the past month, generated by each employee from work done for company clients.
- Enter Expenses (optionally) for specific employee, e.g. cost of Visual Studio per month used by employee, cost of Antivirus for one employee, cost of office space, etc. Note: such expenses could be different for different employees (e.g. one employee can use free VS Code, while another employee can use paid VS Professional)
- Enter some fixed Monthly Expenses for each employee, such as monthly salary value, taxes to be paid from salary, etc.
- See bonus value automatically calculated and displayed in Dashboard using simple formulas:

* Enter % of income you want to share as a bonus with employees next month (e.g. 60% to employee, 40% to company).
* Enter Income for the past month, generated by each employee from work done for company clients.
* Enter Expenses (optionally) for specific employee, e.g. cost of Visual Studio per month used by employee, cost of Antivirus for one employee, cost of office space, etc. Note: such expenses could be different for different employees (e.g. one employee can use free VS Code, while another employee can use paid VS Professional)
* Enter some fixed Monthly Expenses for each employee, such as monthly salary value, taxes to be paid from salary, etc.
* See bonus value automatically calculated and displayed in Dashboard using simple formulas:
```
Net Income = Income - Expenses - Fixed Monthly Expenses (Salary, Taxes, etc)
Net Income = Income - Expenses - Fixed Monthly Expenses (Salary, Taxes, etc)
Total Bonus = % from Net Income (e.g. equal to Net Income * 0.6 for 60% bonus to employee)
```

## Quick Start

### With Docker Compose

- Clone repo
- Make sure you have Docker Compose [installed locally](https://docs.docker.com/compose/install)
- Run `docker-compose up`
- :coffee: time...
- Open http://localhost:8080 in your browser
- Login with email `admin@ever.co` and password: `admin`
- Enjoy
- Clone repo
- Make sure you have Docker Compose [installed locally](https://docs.docker.com/compose/install)
- Run `docker-compose up`
- :coffee: time...
- Open <http://localhost:8080> in your browser
- Login with email `admin@ever.co` and password: `admin`
- Enjoy

Note: together with Gauzy, Docker Compose will run following:

- Cross-platform client for PostgreSQL DBs [pgweb](https://github.com/sosedoff/pgweb), on <http://localhost:8081>
- [Franchise](https://github.com/HVF/franchise), lightweight but powerful SQL tool with a notebook interface, on <http://localhost:8082>
- [OmniDb](https://github.com/OmniDB/OmniDB), on <http://localhost:8083> and using default credentials (admin:admin) configure connection string `postgres://postgres:root@db:5432/postgres?sslmode=disable`.
- [Adminer](https://www.adminer.org) Database management in a single PHP file, on <http://localhost:8084>

### Manually

- Install and run latest [PostgreSQL](https://www.postgresql.org) (optionally, other DB can be configured manually).
- Install [Yarn](https://github.com/yarnpkg/yarn) (if you don't have it) with `npm i -g yarn`
- Install NPM packages with `yarn install`
- Run API with `yarn start:api` (by default runs on http://localhost:3000/api)
- Run Gauzy front-end with `yarn start`
- Open http://localhost:4200 in your browser
- Login with email `admin@ever.co` and password: `admin`
- Enjoy
- Install and run latest [PostgreSQL](https://www.postgresql.org) (optionally, other DB can be configured manually).
- Install [Yarn](https://github.com/yarnpkg/yarn) (if you don't have it) with `npm i -g yarn`
- Install NPM packages with `yarn install`
- Run API with `yarn start:api` (by default runs on <http://localhost:3000/api>)
- Run Gauzy front-end with `yarn start`
- Open <http://localhost:4200> in your browser
- Login with email `admin@ever.co` and password: `admin`
- Enjoy

Note: during the first API start, DB will be automatically seed with initial data if no users found.
Note: during the first API start, DB will be automatically seed with initial data if no users found.
You can run seed any moment manually (e.g. if you changed entities schemas) with `yarn run seed` command to re-initialize DB (warning: unsafe for production!).

### Production

- Check [Gauzy Pulumi](https://github.com/ever-co/gauzy-pulumi) project, it will make Clouds deployments possible with a single command (`pulumi up`)
- Check [Gauzy Pulumi](https://github.com/ever-co/gauzy-pulumi) project, it will make Clouds deployments possible with a single command (`pulumi up`)

Note: it's WIP, currently supports AWS Fargate Clusters (for web app and backend api), Application Load Balancers and Serverless PostgreSQL DB deployments.

@@ -80,7 +90,7 @@ Note: it's WIP, currently supports AWS Fargate Clusters (for web app and backend
- [Ngx-admin](https://github.com/akveo/ngx-admin)
- [PostgreSQL](https://www.postgresql.org)

Note: thanks to TypeORM, Gauzy will support lots of DBs: MySql, MariaDb, PostgreSQL, CockroachDb, sqlite, MS SQL, Oracle, MongoDb and others, with minimal changes.
Note: thanks to TypeORM, Gauzy will support lots of DBs: MySql, MariaDb, PostgreSQL, CockroachDb, sqlite, MS SQL, Oracle, MongoDb and others, with minimal changes.

#### See also README.md and CREDITS.md files in relevant folders for lists of libraries and software included in the Platform, information about licenses and other details.

3 dc.cmd
@@ -0,0 +1,3 @@
docker-compose down -v
docker-compose build
docker-compose up

0 comments on commit 92541a5

Please sign in to comment.
You can’t perform that action at this time.