7 Commits

Author SHA1 Message Date
a950dc2d90 Merge branch 'frontend' 2022-07-28 23:03:51 +02:00
9cdf8f83c8 Haproxy configuration 2022-07-28 23:00:31 +02:00
9aef21657c gitignore update 2022-07-28 22:58:12 +02:00
38cce0f3c2 Frontend 2022-07-28 21:02:38 +02:00
3982de3550 Backend 2022-07-28 20:59:43 +02:00
71f7129851 My Plan 2022-07-28 20:35:37 +02:00
a89c77e0eb Updated License 2022-07-28 20:35:13 +02:00
13 changed files with 145 additions and 43 deletions

5
.gitignore vendored
View File

@@ -21,4 +21,9 @@
# Go workspace file
go.work
# Ignore Private config
config/private
# Ignore templated config
haproxy/config/haproxy.cfg
haproxy/haproxy-compose.yaml

View File

@@ -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.
Copyright [yyyy] [name of copyright owner]
Copyright 2022 Janic Voser
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@@ -1,3 +1,36 @@
# 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
View File

@@ -0,0 +1,2 @@
# Backend
The backend is the API which serves every content under the web root /api

View File

@@ -9,6 +9,11 @@ DB_PORT="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
View 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
View File

@@ -0,0 +1,2 @@
# Frontend
The Frontend is the visual part of this project

View File

@@ -1,26 +0,0 @@
global
stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners
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 *:8404
stats enable
stats uri /
stats refresh 10s
frontend myfrontend
bind :80
default_backend webservers
backend webservers
server s1 web1:8080 check
server s2 web2:8080 check
server s3 web3:8080 check

View 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

View File

@@ -1,8 +0,0 @@
version: 3
services:
haproxy:
image: haproxy:alpine
ports:
- "80:80"
voluems:
- ./config/haproxy.cfg:/usr/local/etc/haproxy:ro

View 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

View File

@@ -3,12 +3,36 @@
# 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
echo $BACKEND_PORT
hostconfig
copytemplates
b2templating

View File

@@ -40,12 +40,12 @@ frontend-image-push:
# Haproxy - Only used for local
haproxy:
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