Compare commits
14 Commits
a5558aa494
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| a950dc2d90 | |||
| 9cdf8f83c8 | |||
| 9aef21657c | |||
| cd46b3eb52 | |||
| 01c5241d8f | |||
| bdd97be8dd | |||
| f2b383ee19 | |||
| 93c3dcbb6d | |||
| ada5c6b876 | |||
| 18222d510a | |||
| 38cce0f3c2 | |||
| 3982de3550 | |||
| 71f7129851 | |||
| a89c77e0eb |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -21,3 +21,9 @@
|
|||||||
# Go workspace file
|
# Go workspace file
|
||||||
go.work
|
go.work
|
||||||
|
|
||||||
|
# Ignore Private config
|
||||||
|
config/private
|
||||||
|
|
||||||
|
# Ignore templated config
|
||||||
|
haproxy/config/haproxy.cfg
|
||||||
|
haproxy/haproxy-compose.yaml
|
||||||
2
LICENSE
2
LICENSE
@@ -58,7 +58,7 @@ APPENDIX: How to apply the Apache License to your work.
|
|||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
Copyright 2022 Janic Voser
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
35
README.md
35
README.md
@@ -1,3 +1,36 @@
|
|||||||
# GoHome
|
# GoHome
|
||||||
|
|
||||||
A repository to make a workhour report, which remids you of going home. Keep your Work Life balance
|
A repository to make a workhour report, which remids you of going home. Keep your Work/Life Balance __<-- Do you see the Ironie?__
|
||||||
|
|
||||||
|
|
||||||
|
# Repository Structure
|
||||||
|
coming soon
|
||||||
|
|
||||||
|
# Versions
|
||||||
|
See more in the [versions.md](./docs/versions.md)
|
||||||
|
| Wich Version | When released |
|
||||||
|
| --- | --- |
|
||||||
|
| alpha | tbd |
|
||||||
|
| beta | tbd |
|
||||||
|
| 1.0 | tbd |
|
||||||
|
# Technologies
|
||||||
|
All the greate technologies used for this project
|
||||||
|
## Automated Builds & Tests
|
||||||
|
All builds and tests are done with [drone](https://www.drone.io/)
|
||||||
|
For the automated deployment I user [argocd](https://argoproj.github.io/cd/)
|
||||||
|
|
||||||
|
## Database
|
||||||
|
For a database I use [mariadb](https://mariadb.org/)
|
||||||
|
|
||||||
|
## Containers
|
||||||
|
As an container registry I use [VMWare Harbor](https://goharbor.io/) and [Docker Hub](https://hub.docker.com/)
|
||||||
|
|
||||||
|
## Languages
|
||||||
|
+ GoLang --> for Backend
|
||||||
|
+ HTML --> Layouting
|
||||||
|
+ SASS --> Make it beautiful (well at least I try)
|
||||||
|
+ TypeScript --> Cause I have to
|
||||||
|
|
||||||
|
## Frameworks
|
||||||
|
+ Ionic for front-end
|
||||||
|
+ Gin for back-end
|
||||||
2
backend/BACKEND.md
Normal file
2
backend/BACKEND.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Backend
|
||||||
|
The backend is the API which serves every content under the web root /api
|
||||||
0
config/private
Normal file
0
config/private
Normal file
@@ -6,4 +6,14 @@ DB_USER="dbuser"
|
|||||||
## Database Port
|
## Database Port
|
||||||
DB_PORT="testdb"
|
DB_PORT="testdb"
|
||||||
## Database name
|
## Database name
|
||||||
DB_NAME="testdb"
|
DB_NAME="testdb"
|
||||||
|
|
||||||
|
# Port Mapping
|
||||||
|
## Frontend Port will be used by frontend container to expose itself
|
||||||
|
FRONTEND_PORT="30381"
|
||||||
|
## Backend Port will be used by bachend container to expose itself
|
||||||
|
BACKEND_PORT="30382"
|
||||||
|
## Haproxy Port will be used by haproxy container to expose webserver & backends based on uri
|
||||||
|
HAPROXY_PORT="80"
|
||||||
|
## Haproxy Stats Port will display haproxy stats interface
|
||||||
|
HAPROXY_STATS_PORT="81"
|
||||||
24
docs/versions.md
Normal file
24
docs/versions.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Versions
|
||||||
|
| Version | Describtion | Release Date |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Alpha | Base functionallity | tbd |
|
||||||
|
| Beta | Bug fix & improvments from Alpha | tbd |
|
||||||
|
| 1.0 | First Version | tbd |
|
||||||
|
| 1.1 | Bug fix & improvments to Version 1.0 | tbd |
|
||||||
|
|
||||||
|
# Features ✅ / ❌
|
||||||
|
| ID | Version | Name | Description | Author | Requested by | Working |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| 0 | alpha | Login Site | Working Login Site | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 1 | alpha | Add User | Add Site User | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 2 | tbd | Add Groups | Add Groups | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 3 | tbd | Organizations | Manage Organizations | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 4 | alpha | Starttime | Set beginning of work | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 5 | alpha | Endtime | Set end of work | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 6 | alpha | Pause | Substract Pausetime | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 7 | beta | Multi Pause | Substract multiple Pausetimes | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 8 | alpha | Expected work time | Time to work daily | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 9 | beta | Time Credit | Positiv & negativ Time credits | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 10 | tbd | Nice Graphs | Display nice Graphs of the work time | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 11 | beta | Backup | Backup Database & Assets | Janic Voser | Janic Voser | ❌ |
|
||||||
|
| 12 | beta | Profile Picture | Upload Profile Picture for Users | Janic Voser | Janic Voser | ❌ |
|
||||||
2
frontend/FRONTEND.md
Normal file
2
frontend/FRONTEND.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Frontend
|
||||||
|
The Frontend is the visual part of this project
|
||||||
5
haproxy/HAPROXY.md
Normal file
5
haproxy/HAPROXY.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# HAPROXY
|
||||||
|
The Haproxy is used to route the requests to the diffrent backends & location
|
||||||
|
--> Only for local deployment
|
||||||
|
--> On kubernetes you can use an ingress for this
|
||||||
|
|
||||||
29
haproxy/config/haproxy.cfg.b2
Normal file
29
haproxy/config/haproxy.cfg.b2
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
global
|
||||||
|
log stdout format raw local0 info
|
||||||
|
|
||||||
|
defaults
|
||||||
|
mode http
|
||||||
|
timeout client 10s
|
||||||
|
timeout connect 5s
|
||||||
|
timeout server 10s
|
||||||
|
timeout http-request 10s
|
||||||
|
log global
|
||||||
|
|
||||||
|
frontend stats
|
||||||
|
bind *:HAPROXY_STATS_PORT
|
||||||
|
stats enable
|
||||||
|
stats uri /
|
||||||
|
stats refresh 10s
|
||||||
|
|
||||||
|
frontend web
|
||||||
|
bind :HAPROXY_PORT
|
||||||
|
default_backend webui
|
||||||
|
|
||||||
|
acl uri_api path_beg /api
|
||||||
|
use_backend api if uri_api
|
||||||
|
|
||||||
|
backend webui
|
||||||
|
server webui H_LOCAL_IP:FRONTEND_PORT check
|
||||||
|
|
||||||
|
backend api
|
||||||
|
server api H_LOCAL_IP:BACKEND_PORT check
|
||||||
12
haproxy/haproxy-compose.yaml.b2
Normal file
12
haproxy/haproxy-compose.yaml.b2
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
haproxy:
|
||||||
|
image: haproxy:alpine
|
||||||
|
ports:
|
||||||
|
- "HAPROXY_PORT:HAPROXY_PORT"
|
||||||
|
- "HAPROXY_STATS_PORT:HAPROXY_STATS_PORT"
|
||||||
|
volumes:
|
||||||
|
- ./config/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
38
haproxy/reconfigure-haproxy.sh
Executable file
38
haproxy/reconfigure-haproxy.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
|
||||||
|
# Funcitons
|
||||||
|
## Load config from file
|
||||||
|
function loadconfig {
|
||||||
|
source config/public
|
||||||
|
source config/private
|
||||||
|
}
|
||||||
|
## Load variables from host
|
||||||
|
function hostconfig {
|
||||||
|
H_LOCAL_IP=$(hostname -i | cut -d ' ' -f 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
function copytemplates {
|
||||||
|
cp ./haproxy/config/haproxy.cfg.b2 ./haproxy/config/haproxy.cfg
|
||||||
|
cp ./haproxy/haproxy-compose.yaml.b2 ./haproxy/haproxy-compose.yaml
|
||||||
|
}
|
||||||
|
|
||||||
|
## Bajia Tempalting (Bash & Jinja)
|
||||||
|
function b2templating {
|
||||||
|
### HAPROXY config
|
||||||
|
sed -i "s/H_LOCAL_IP/$H_LOCAL_IP/g" ./haproxy/config/haproxy.cfg
|
||||||
|
sed -i "s/FRONTEND_PORT/$FRONTEND_PORT/g" ./haproxy/config/haproxy.cfg
|
||||||
|
sed -i "s/BACKEND_PORT/$BACKEND_PORT/g" ./haproxy/config/haproxy.cfg
|
||||||
|
sed -i "s/HAPROXY_STATS_PORT/$HAPROXY_STATS_PORT/g" ./haproxy/config/haproxy.cfg
|
||||||
|
sed -i "s/HAPROXY_PORT/$HAPROXY_PORT/g" ./haproxy/config/haproxy.cfg
|
||||||
|
### Docker Compose
|
||||||
|
sed -i "s/HAPROXY_PORT/$HAPROXY_PORT/g" ./haproxy/haproxy-compose.yaml
|
||||||
|
sed -i "s/HAPROXY_STATS_PORT/$HAPROXY_STATS_PORT/g" ./haproxy/haproxy-compose.yaml
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main Script
|
||||||
|
loadconfig
|
||||||
|
hostconfig
|
||||||
|
copytemplates
|
||||||
|
b2templating
|
||||||
62
makefile
Normal file
62
makefile
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
all: database backend frontend
|
||||||
|
|
||||||
|
# Database
|
||||||
|
database: database-stop database-clean databgase-start database-init
|
||||||
|
|
||||||
|
database-stop:
|
||||||
|
|
||||||
|
database-start:
|
||||||
|
|
||||||
|
database-restart: database-stop database-start
|
||||||
|
|
||||||
|
database-clean:
|
||||||
|
|
||||||
|
database-init:
|
||||||
|
|
||||||
|
# Backend
|
||||||
|
backend:
|
||||||
|
|
||||||
|
backend-restart:
|
||||||
|
|
||||||
|
backend-rebuild:
|
||||||
|
|
||||||
|
backend-image-push:
|
||||||
|
|
||||||
|
# Frontend
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
|
||||||
|
frontend-stop:
|
||||||
|
|
||||||
|
frontend-start:
|
||||||
|
|
||||||
|
frontend-restart: frontend-stop frontend-start
|
||||||
|
|
||||||
|
frontend-clean:
|
||||||
|
|
||||||
|
frontend-rebuild:
|
||||||
|
|
||||||
|
frontend-image-push:
|
||||||
|
|
||||||
|
# Haproxy - Only used for local
|
||||||
|
|
||||||
|
haproxy: reconfigure-haproxy haproxy-restart
|
||||||
|
|
||||||
|
haproxy-stop:
|
||||||
|
docker-compose -f haproxy/haproxy-compose.yaml down
|
||||||
|
haproxy-start:
|
||||||
|
docker-compose -f haproxy/haproxy-compose.yaml up -d
|
||||||
|
haproxy-restart: haproxy-stop haproxy-start
|
||||||
|
|
||||||
|
# Config Templating - Only used for local
|
||||||
|
|
||||||
|
reconfigure: reconfigure-database reconfigure-backend reconfigure-frontend
|
||||||
|
|
||||||
|
reconfigure-database:
|
||||||
|
|
||||||
|
reconfigure-backend:
|
||||||
|
|
||||||
|
reconfigure-frontend:
|
||||||
|
|
||||||
|
reconfigure-haproxy:
|
||||||
|
./haproxy/reconfigure-haproxy.sh
|
||||||
Reference in New Issue
Block a user