- Go module: github.com/netcell-it/deklarix - cmd/server/main.go: HTTP entry point with /health endpoint - scripts/build.sh: cross-compile amd64 + arm64 - scripts/test.sh: go vet + race tests + build-check - scripts/release.sh: full release flow (test → build → tag → push) - packaging/DEBIAN: .deb control template - design/enterprise.css: enterprise design system from enconf - CLAUDE.md: complete build/test/release documentation - .claude/settings.local.json: Claude Code permissions
4.4 KiB
4.4 KiB
Deklarix
Projekt für deklarix.de und deklarix.com
Stack
| Backend | Frontend (geplant) |
|---|---|
| Go 1.26 | React 19, TypeScript 5.9 |
| net/http (Standard-Library-first) | Vite 8, Tailwind CSS |
| SQLite (geplant) | enterprise.css Design-System (enconf-Pattern) |
Pfad: /var/www/deklarix | Git: https://git.netcell-it.de/projekte/deklarix | Branch: main
Projektstruktur
/var/www/deklarix/
├── cmd/
│ └── server/
│ └── main.go # Entry Point
├── internal/
│ ├── config/ # Konfiguration (env-basiert)
│ ├── handler/ # HTTP Handler
│ └── middleware/ # Auth, Logging, CORS
├── design/
│ └── enterprise.css # Gemeinsames Design-System (enconf-Basis)
├── packaging/
│ └── DEBIAN/
│ └── control.tmpl # .deb Package-Control-Template
├── scripts/
│ ├── build.sh # Cross-Compile amd64 + arm64
│ ├── test.sh # Tests + vet + build-check
│ └── release.sh # Vollständiger Release-Prozess
├── go.mod
├── go.sum
└── CLAUDE.md
Go Commands
export PATH=$PATH:/usr/local/go/bin # Immer setzen!
# Entwickeln
go run ./cmd/server/
# Tests
./scripts/test.sh
# oder direkt:
go test -race ./...
go vet ./...
# Build (amd64 + arm64)
./scripts/build.sh 1.0.0
# Build (nur amd64)
./scripts/build.sh 1.0.0 amd64
Build & Release-Prozess
Versioning (Semantic Versioning: MAJOR.MINOR.PATCH)
- MAJOR — Breaking changes, API-Inkompatibilitäten
- MINOR — Neue Features, rückwärtskompatibel
- PATCH — Bugfixes
Release-Schritte
# 1. Alle Änderungen committen
git add -p && git commit -m "feat: ..."
# 2. Release-Skript (macht Tests → Build → Tag → Push)
./scripts/release.sh 1.2.0
# Danach liegt in dist/:
# deklarix_1.2.0_amd64
# deklarix_1.2.0_arm64
Was das Release-Skript tut
- Prüft: sauberer Git-Status (keine uncommitted changes)
- Führt
./scripts/test.shaus (vet + race tests + build-check) - Kompiliert für
linux/amd64undlinux/arm64 - Setzt Git-Tag
v<version>mit Annotierung - Pusht
main+ Tag nachorigin
Testing-Pattern
// Datei: internal/handler/health_test.go
package handler_test
import (
"net/http"
"net/http/httptest"
"testing"
)
func TestHealth(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/health", nil)
w := httptest.NewRecorder()
HealthHandler(w, req)
if w.Code != http.StatusOK {
t.Fatalf("expected 200, got %d", w.Code)
}
}
- Tests liegen neben dem Code:
handler/foo_test.go - Package:
package foo_test(Black-Box-Test) oderpackage foo(White-Box) - Race-Detector immer an:
go test -race ./... - Tabellenbasierte Tests für mehrere Inputs
Design-System
Das Frontend folgt dem Enterprise Light Theme aus enconf (design/enterprise.css).
- Primärfarbe:
#1677ff(Blau) - Sidebar: Dunkel (
#0B1426→#101D33) mit weißen Icons - Body:
#F8FAFCHintergrund,#334155Text - Font: Inter (von
/fonts/inter.cssoder Google Fonts) - Radius: 6px / 8px / 10px
Für neue Frontend-Projekte unter /var/www/deklarix:
# Frontend-Scaffold (wenn benötigt)
npm create vite@latest frontend -- --template react-ts
cd frontend && npm install
# enterprise.css aus design/ einbinden
Domains
| Domain | Verwendung |
|---|---|
| deklarix.de | Primär |
| deklarix.com | Redirect / International |
Wichtige Hinweise
Go PATH
# Immer setzen — ist nicht im Standard-PATH des Servers
export PATH=$PATH:/usr/local/go/bin
Git Push
git push origin main
# Remote: https://git.netcell-it.de/projekte/deklarix.git
Server-Prozess
# Start (manuell)
PORT=8080 ./dist/deklarix_latest_amd64 &
# Logs prüfen
journalctl -u deklarix -f
Vor Änderungen
go vet ./...— keine Fehler./scripts/test.sh— alle Tests grün- Bestehenden Code lesen — nicht raten
Nach Änderungen
./scripts/test.sh→ 0 Fehler./scripts/build.sh <version>→ erfolgreich- Commit mit semantischer Message:
feat:,fix:,refactor:,docs: - Bei Release:
./scripts/release.sh <version>