6 Commits

Author SHA1 Message Date
26b363fc34 Merge pull request 'chore/setup-gitea-actions' (#7) from chore/setup-gitea-actions into main
All checks were successful
Code Quality and Testing / test-and-lint (push) Successful in 12m10s
Reviewed-on: #7
2026-06-09 22:17:11 +02:00
4700faf03c Added more issue templates etc.
All checks were successful
Code Quality and Testing / test-and-lint (push) Successful in 16m1s
Code Quality and Testing / test-and-lint (pull_request) Successful in 12m28s
2026-06-09 15:31:12 +02:00
79f3692ad2 chore: add automated docker release workflow 2026-06-09 15:24:24 +02:00
5485fd135d new version 2026-06-09 14:45:04 +02:00
5558d42bdb fixed #2 2026-06-09 14:44:28 +02:00
b74df36bda fixed #4 2026-06-09 14:40:49 +02:00
8 changed files with 155 additions and 5 deletions

View File

@@ -0,0 +1,24 @@
---
name: "Bug Report"
about: Report an error or unexpected behavior in MiauInv
title: "[BUG] "
labels: ["Kind/Bug"]
---
### Description
A clear and concise description of what the bug is.
### Steps to Reproduce
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
### Expected Behavior
A clear and concise description of what you expected to happen.
### Logs and Error Messages
If applicable, add server logs or browser console outputs here:
```text
Insert logs here
```

View File

@@ -0,0 +1,18 @@
---
name: "Feature Request"
about: Suggest an idea or enhancement for MiauInv
title: "[FEATURE] "
labels: ["Kind/Feature"]
---
### Problem Statement
Is your feature request related to a problem? Please describe. (e.g., I am frustrated when...)
### Proposed Solution
A clear and concise description of what you want to happen.
### Alternative Solutions
A clear and concise description of any alternative solutions or features you have considered.
### Additional Context
Add any other context, screenshots, or mockup ideas about the feature request here.

View File

@@ -0,0 +1,14 @@
## Description
Please include a summary of the changes and which issue is fixed.
Closes # (Issue Number)
## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Chore / Refactoring (code cleanup or configuration updates)
## Testing Environment
- [ ] Verified via local development server
- [ ] Verified compilation inside the Docker container
- [ ] All unit tests passing successfully

View File

@@ -0,0 +1,36 @@
name: Build and Push Docker Image on Release
on:
release:
types: [published]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: actions/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: actions/setup-buildx-action@v3
- name: Log in to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: git.miaurizius.de
username: ${{ gitea.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
platforms: linux/amd64,linux/arm64
tags: |
git.miaurizius.de/${{ gitea.repository }}:latest
git.miaurizius.de/${{ gitea.repository }}:${{ gitea.event.release.tag_name }}

View File

@@ -0,0 +1,30 @@
name: Code Quality and Testing
on:
push:
branches: [ main, 'feature/**', 'bugfix/**', 'chore/**', 'refactor/**' ]
pull_request:
branches: [ main ]
jobs:
test-and-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Check Go Formatting (gofmt)
run: |
if [ -n "$(gofmt -l .)" ]; then
echo "The following files are not properly formatted. Please run 'gofmt -w .'"
gofmt -l .
exit 1
fi
- name: Run Unit Tests
run: go test -v ./...

View File

@@ -1,5 +1,5 @@
sudo docker buildx build \ sudo docker buildx build \
--platform linux/amd64,linux/arm64 \ --platform linux/amd64,linux/arm64 \
-t git.miaurizius.de/miaurizius/miauinv:latest \ -t git.miaurizius.de/miaurizius/miauinv:latest \
-t git.miaurizius.de/miaurizius/miauinv:v1.0.1 \ -t git.miaurizius.de/miaurizius/miauinv:v1.0.2 \
--push . --push .

View File

@@ -1,6 +1,7 @@
package frontend package frontend
import ( import (
"MiauInv/storage"
"html/template" "html/template"
"net/http" "net/http"
"os" "os"
@@ -53,7 +54,28 @@ func Home(w http.ResponseWriter, r *http.Request) {
func Dashboard(w http.ResponseWriter, r *http.Request) { func Dashboard(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html") w.Header().Set("Content-Type", "text/html")
err := dashboard.ExecuteTemplate(w, "base.html", struct {
var itemHive, projectHive, locationHive int
err := storage.DB.QueryRow("SELECT COUNT(*) FROM items").Scan(&itemHive)
if err != nil {
http.Error(w, "Failed to count items", http.StatusInternalServerError)
return
}
err = storage.DB.QueryRow("SELECT COUNT(*) FROM projects").Scan(&projectHive)
if err != nil {
http.Error(w, "Failed to count projects", http.StatusInternalServerError)
return
}
err = storage.DB.QueryRow("SELECT COUNT(*) FROM locations").Scan(&locationHive)
if err != nil {
http.Error(w, "Failed to count locations", http.StatusInternalServerError)
return
}
err = dashboard.ExecuteTemplate(w, "base.html", struct {
Title string Title string
Stats struct { Stats struct {
Items int Items int
@@ -67,9 +89,9 @@ func Dashboard(w http.ResponseWriter, r *http.Request) {
Projects int Projects int
Locations int Locations int
}{ }{
Items: 1, Items: itemHive,
Projects: 1, Projects: projectHive,
Locations: 3, Locations: locationHive,
}, },
}) })
if err != nil { if err != nil {

View File

@@ -30,6 +30,12 @@ func APIRegister(w http.ResponseWriter, r *http.Request) {
return return
} }
if len(user.Password) > 72 {
log.Println("POST [api/register] User password too long")
http.Error(w, "Password exceeds the maximum allowed length of 72 characters", http.StatusUnprocessableEntity)
return
}
hashed, err := auth.HashPassword(user.Password) hashed, err := auth.HashPassword(user.Password)
if err != nil { if err != nil {
log.Println("POST [api/register] " + r.RemoteAddr + ": " + err.Error()) log.Println("POST [api/register] " + r.RemoteAddr + ": " + err.Error())