Compare commits

..

9 Commits

Author SHA1 Message Date
Florian Walther
c9296beb5f footer und AppVersion eingebaut
All checks were successful
Docker Release Build / push_to_registry (push) Successful in 1m2s
2026-02-07 16:45:02 +01:00
Florian Walther
dd8eab7975 fixed URL 2026-02-07 00:34:05 +01:00
Florian Walther
3e2f4cf104 fixed spelling error 2026-02-07 00:32:20 +01:00
Florian Walther
9d4c816642 fixed spelling error 2026-02-07 00:31:40 +01:00
Florian Walther
2a8d343ff4 fixed spelling error 2026-02-07 00:29:41 +01:00
Florian Walther
c990d8a335 mention Dark- and Light-Mode in README 2026-02-06 13:08:16 +01:00
Florian Walther
e99bf45be9 favicon geändert
All checks were successful
/ push_to_registry (push) Successful in 53s
2026-02-06 13:04:52 +01:00
Florian Walther
3c324d355d favicon added 2026-02-06 12:43:48 +01:00
Florian Walther
149cdf2e63 new screenshot added 2026-02-06 12:40:50 +01:00
11 changed files with 61 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
iname: Docker Release Build
name: Docker Release Build
on:
push:
tags:
@@ -25,6 +25,8 @@ jobs:
push: true
# Hier wird die Git-Referenz automatisch als Docker-Tag genutzt
#tags: gitea.scu.si/florianwalther/password-generator:${{ gitea.ref_name }}
build-args: |
APP_VERSION=${{ gitea.ref_name }}
tags: |
gitea.scu.si/florian.walther/password-generator:${{ gitea.ref_name }}
gitea.scu.si/florian.walther/password-generator:latest

View File

@@ -8,7 +8,8 @@ WORKDIR /app
COPY . .
# Baue die Anwendung
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/password-generator
ARG APP_VERSION=dev
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w -X 'main.AppVersion=${APP_VERSION}'" -o /app/password-generator
# Verwende ein minimales Image für die finale Stage
FROM scratch

View File

@@ -9,6 +9,7 @@ _a web based password generator, with an API endpoint_
* generates long and random, secure passwords (read about the [security considerations](SECURITY.md))
* copy to clipboard
* very small docker container, that only contains the application and has minimum attack surface
* supports DarkMode and LightMode, you can toggle
## Demo
@@ -28,7 +29,7 @@ docker compose up -d
## Docker image
The latest official docker image is at [https://gitea.scu.si/FlorianWalther/-/packages/container/password-generator/latest](https://gitea.scu.si/FlorianWalther/-/packages/container/password-generator/latest)
The latest official docker image is at [https://gitea.scu.si/Florian.Walther/-/packages/container/password-generator/latest](https://gitea.scu.si/Florian.Walther/-/packages/container/password-generator/latest)
You can pull it like this:
```

2
go.mod
View File

@@ -1,3 +1,3 @@
module gitea.scu.si/FlorianWalther/Web-Password
module gitea.scu.si/Florian.Walther/Web-Password
go 1.24.1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 29 KiB

23
main.go
View File

@@ -12,12 +12,29 @@ const (
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
)
//var tmpl *template.Template
var templates = make(map[string]*template.Template)
var AppVersion = "development"
func loadTemplates() {
templates["index.html"] = template.Must(template.ParseFiles("templates/base.html", "templates/index.html"))
templates["help.html"] = template.Must(template.ParseFiles("templates/base.html", "templates/help.html"))
// 1. FuncMap definieren
funcMap := template.FuncMap{
"getAppVersion": func() string {
return AppVersion
},
}
// 2. Templates mit FuncMap laden
// Wir nutzen New("base.html"), da base.html meist das Haupt-Layout definiert
templates["index.html"] = template.Must(template.New("base.html").Funcs(funcMap).ParseFiles(
"templates/base.html",
"templates/index.html",
))
templates["help.html"] = template.Must(template.New("base.html").Funcs(funcMap).ParseFiles(
"templates/base.html",
"templates/help.html",
))
log.Printf("Alle Templates erfolgreich geladen")
}

View File

@@ -1,6 +1,6 @@
services:
password-generator:
image: gitea.scu.si/florianwalther/password-generator:latest
image: gitea.scu.si/florian.walther/password-generator:latest
container_name: password-generator
restart: always
expose:

View File

@@ -1,6 +1,6 @@
services:
password-generator:
image: gitea.scu.si/florianwalther/password-generator:latest
image: gitea.scu.si/florian.walther/password-generator:latest
container_name: password-generator
restart: always
ports:

BIN
static/key.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

View File

@@ -47,6 +47,33 @@ body {
position: relative;
}
footer {
/* Fixierung am unteren Rand */
position: fixed;
bottom: 0;
left: 0;
/* Ausdehnung */
width: 100%;
/* Design & Abstände */
background: var(--password-bg);
border-top: 1px solid #e0e0e0;
padding: 8px 16px;
/* Text-Ausrichtung */
text-align: left;
font-family: monospace; /* Monospace sieht für Versionen oft "technischer" aus */
font-size: 12px;
color: var(--text-color);
/* Sicherstellen, dass nichts drüber liegt */
z-index: 9999;
/* Padding in die Breite einrechnen */
box-sizing: border-box;
}
#password {
font-family: 'Courier New', Courier, monospace;
font-size: 1.2rem;

View File

@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ block "title" . }}Passwort-Generator{{ end }}</title>
<link rel="icon" href="/static/key.png" type="image/png">
<link rel="stylesheet" href="/static/style.css">
<script>
document.addEventListener('DOMContentLoaded', function() {
@@ -44,5 +45,7 @@
<body>
<button id="theme-toggle">🌓</button>
{{ block "body" . }}{{end}}
<footer>Version: {{getAppVersion}} | made with golang and ♥️ {{ block "footer" . }}{{ end }}</footer>
</body>
</html>