Umbenennung in Vorrania

Sichtbarer Name ueberall: Kopfzeichen der Oberflaeche, Seitentitel, Favicon,
API-Titel, User-Agent zu Open Food Facts, Dateinamen der Sicherungen, README,
Roadmap, Installer- und Update-Skript, npm-Paketname.

Bewusst NICHT umbenannt, jeweils mit Begruendung im Code:
- POSTGRES_USER/DB und der Volume-Name bleiben "project_good". Ein neuer
  Volume-Name legt eine leere Datenbank an, ein neuer Benutzername scheitert am
  bestehenden Volume - vorhandene Bestaende waeren verloren.
- Der localStorage-Schluessel bleibt, sonst waeren alle Browser einmal
  ausgesperrt.
- ios/ bleibt unangetastet (wird getrennt bearbeitet).

Die Klon-Adresse im README zeigt jetzt auf .../vorrania.git; das Repo in Gitea
muss dafuer umbenannt werden.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-23 13:05:32 +02:00
parent 26f7ed21d8
commit 2423e74cae
14 changed files with 27 additions and 20 deletions

View File

@@ -1,4 +1,4 @@
# 🥫 Project-Good Selfhostbare Lebensmittel-Lagerverwaltung # Vorrania Selfhostbare Lebensmittel-Lagerverwaltung
Ein selbst gehosteter Dienst zur Verwaltung deines Lebensmittelvorrats: Ein selbst gehosteter Dienst zur Verwaltung deines Lebensmittelvorrats:
Ein-/Auslagern per Barcode, MHD-/Ablaufverwaltung mit Chargen, Mindestbestände, Ein-/Auslagern per Barcode, MHD-/Ablaufverwaltung mit Chargen, Mindestbestände,
@@ -44,8 +44,8 @@ Voraussetzung: eine Linux-Maschine (Server, NAS, Raspberry Pi …). Docker wird
Bedarf automatisch installiert. Bedarf automatisch installiert.
```bash ```bash
git clone https://git.scarriffle.com/Scarriffle/project-good.git git clone https://git.scarriffle.com/Scarriffle/vorrania.git
cd project-good/deploy cd vorrania/deploy
chmod +x install.sh chmod +x install.sh
./install.sh # interaktiv fragt Port & Admin-Passwort ./install.sh # interaktiv fragt Port & Admin-Passwort
# oder vollautomatisch mit generiertem Admin-Passwort: # oder vollautomatisch mit generiertem Admin-Passwort:
@@ -61,7 +61,7 @@ Nach dem Start:
## Aktualisieren ## Aktualisieren
```bash ```bash
cd project-good/deploy cd vorrania/deploy
./update.sh # holt den neuesten Stand aus Git und baut neu ./update.sh # holt den neuesten Stand aus Git und baut neu
./update.sh --prune # zusätzlich alte Images aufräumen ./update.sh --prune # zusätzlich alte Images aufräumen
./update.sh --no-pull # nur neu bauen, ohne git pull ./update.sh --no-pull # nur neu bauen, ohne git pull
@@ -87,7 +87,7 @@ cd backend
python -m venv .venv && source .venv/bin/activate python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt pip install -r requirements.txt
# lokale SQLite-DB nutzen: # lokale SQLite-DB nutzen:
export DATABASE_URL="sqlite:///./project_good.db" export DATABASE_URL="sqlite:///./vorrania.db"
uvicorn app.main:app --reload uvicorn app.main:app --reload
``` ```
API-Doku dann unter `http://localhost:8000/docs`. API-Doku dann unter `http://localhost:8000/docs`.

View File

@@ -78,7 +78,7 @@ async def lifespan(app: FastAPI):
yield yield
app = FastAPI(title="Project-Good Lebensmittel-Lagerverwaltung", version="1.0.0", lifespan=lifespan) app = FastAPI(title="Vorrania Lebensmittel-Lagerverwaltung", version="1.0.0", lifespan=lifespan)
origins = ["*"] if settings.cors_origins.strip() == "*" else [ origins = ["*"] if settings.cors_origins.strip() == "*" else [
o.strip() for o in settings.cors_origins.split(",") if o.strip() o.strip() for o in settings.cors_origins.split(",") if o.strip()

View File

@@ -55,7 +55,7 @@ def lookup_barcode(barcode: str) -> dict | None:
resp = httpx.get( resp = httpx.get(
url, url,
timeout=settings.off_timeout_seconds, timeout=settings.off_timeout_seconds,
headers={"User-Agent": "Project-Good-Selfhosted/1.0"}, headers={"User-Agent": "Vorrania-Selfhosted/1.0"},
follow_redirects=True, follow_redirects=True,
) )
except httpx.HTTPError: except httpx.HTTPError:

View File

@@ -185,7 +185,7 @@ def export_backup_json(
media_type="application/json; charset=utf-8", media_type="application/json; charset=utf-8",
headers={ headers={
"Content-Disposition": "Content-Disposition":
f'attachment; filename="project-good-backup_{_zeitstempel()}.json"' f'attachment; filename="vorrania-backup_{_zeitstempel()}.json"'
}, },
) )

View File

@@ -1,3 +1,8 @@
# Die Datenbank-Bezeichner heissen weiterhin "project_good" und werden mit der
# Umbenennung in Vorrania bewusst NICHT geaendert: Ein anderer Volume-Name legt
# eine leere Datenbank an, und ein anderer POSTGRES_USER scheitert an einem
# bestehenden Volume. Beides wuerde vorhandene Bestaende unbrauchbar machen.
# Es sind interne Namen, die niemand zu sehen bekommt.
services: services:
db: db:
image: postgres:16-alpine image: postgres:16-alpine

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Project-Good Installer für selfhostbare Lebensmittel-Lagerverwaltung. # Vorrania Installer für selfhostbare Lebensmittel-Lagerverwaltung.
# Installiert bei Bedarf Docker und startet den kompletten Stack via Docker Compose. # Installiert bei Bedarf Docker und startet den kompletten Stack via Docker Compose.
# #
# Nutzung: # Nutzung:
@@ -208,7 +208,7 @@ wait_for_backend() {
# --- Start -------------------------------------------------------------------- # --- Start --------------------------------------------------------------------
main() { main() {
info "Project-Good-Installer startet …" info "Vorrania-Installer startet …"
ensure_docker ensure_docker
create_env create_env

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Project-Good Update-Skript. # Vorrania Update-Skript.
# Holt die neueste Version aus Git und baut die Container neu. # Holt die neueste Version aus Git und baut die Container neu.
# #
# Nutzung (von überall aufrufbar): # Nutzung (von überall aufrufbar):

View File

@@ -1,4 +1,4 @@
# Project-Good Roadmap # Vorrania Roadmap
Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten. Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project-Good Lagerverwaltung</title> <title>Vorrania Lagerverwaltung</title>
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>

4
web/package-lock.json generated
View File

@@ -1,11 +1,11 @@
{ {
"name": "project-good-web", "name": "vorrania-web",
"version": "1.0.0", "version": "1.0.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "project-good-web", "name": "vorrania-web",
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"react": "^18.3.1", "react": "^18.3.1",

View File

@@ -1,5 +1,5 @@
{ {
"name": "project-good-web", "name": "vorrania-web",
"private": true, "private": true,
"version": "1.0.0", "version": "1.0.0",
"type": "module", "type": "module",

View File

@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Project-Good"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Vorrania">
<!-- Dasselbe Zeichen wie in der Seitenleiste: das "box"-Icon aus <!-- Dasselbe Zeichen wie in der Seitenleiste: das "box"-Icon aus
components/Icon.jsx auf der Akzentflaeche. Die Farbe folgt der components/Icon.jsx auf der Akzentflaeche. Die Farbe folgt der
Oberflaeche - im dunklen Modus der hellere Akzent, damit das Symbol Oberflaeche - im dunklen Modus der hellere Akzent, damit das Symbol

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 858 B

View File

@@ -3,6 +3,8 @@
const API_BASE = "/api"; const API_BASE = "/api";
// Schluessel bleibt trotz Umbenennung in Vorrania: Ein neuer Name wuerde alle
// angemeldeten Browser einmal aussperren, ohne dass irgendjemand ihn je sieht.
const TOKEN_KEY = "project_good_token"; const TOKEN_KEY = "project_good_token";
export function getToken() { export function getToken() {
@@ -182,7 +184,7 @@ export const api = {
// Zeitstempel im Dateinamen, sonst heissen mehrere Ausleitungen alle gleich. // Zeitstempel im Dateinamen, sonst heissen mehrere Ausleitungen alle gleich.
exportCsv: () => downloadFile("/export/stock.csv", `bestand_${zeitstempel()}.csv`), exportCsv: () => downloadFile("/export/stock.csv", `bestand_${zeitstempel()}.csv`),
exportJson: () => exportJson: () =>
downloadFile("/export/backup.json", `project-good-backup_${zeitstempel()}.json`), downloadFile("/export/backup.json", `vorrania-backup_${zeitstempel()}.json`),
importStock: (file, mode = "add") => { importStock: (file, mode = "add") => {
const fd = new FormData(); const fd = new FormData();
fd.append("file", file); fd.append("file", file);

View File

@@ -25,7 +25,7 @@ export default function BrandMark() {
<img <img
className="brand-logo" className="brand-logo"
src={brandingUrl("logo")} src={brandingUrl("logo")}
alt="Project-Good" alt="Vorrania"
onError={() => setLogo(false)} onError={() => setLogo(false)}
/> />
); );
@@ -34,7 +34,7 @@ export default function BrandMark() {
return ( return (
<> <>
<span className="mark"><Icon name="box" size={18} /></span> <span className="mark"><Icon name="box" size={18} /></span>
Project-Good Vorrania
</> </>
); );
} }