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:
10
README.md
10
README.md
@@ -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`.
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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"'
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Project-Good – Roadmap
|
# Vorrania – Roadmap
|
||||||
|
|
||||||
Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.
|
Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.
|
||||||
|
|
||||||
|
|||||||
@@ -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
4
web/package-lock.json
generated
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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 |
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user