Eine lokale Verwaltungs-App für elektronische Bauteile — mit Stücklisten, Lagerverwaltung und Produktionsplanung.
Gebaut mit Vite · React · TypeScript · Tailwind CSS · shadcn/ui · Supabase.
| Tool | Version | Installation |
|---|---|---|
| Node.js | ≥ 20 | nodejs.org |
| Docker | aktuell | docker.com |
| Supabase CLI | aktuell | supabase.com/docs/guides/cli |
| Git | aktuell | git-scm.com |
git clone <REPO_URL>
cd <REPO_NAME>cp .env.example .envÖffne .env und trage deine Supabase-Zugangsdaten ein (siehe Abschnitt Supabase einrichten).
⚠️ Wichtig: Die.env-Datei niemals in Git committen — sie ist bereits in.gitignoreeingetragen.
npm installsupabase startNach dem Start zeigt die CLI deine lokalen Zugangsdaten:
API URL: http://127.0.0.1:54321
Publishable: sb_publishable_...
Trage diese Werte in deine .env ein:
VITE_SUPABASE_URL=http://127.0.0.1:54321
VITE_SUPABASE_PUBLISHABLE_KEY=sb_publishable_...Alle Datenbank-Migrationen werden beim Start automatisch angewendet.
- Neues Projekt auf supabase.com anlegen
- Unter Project Settings → API die URL und den
anon-Key kopieren - In
.enveintragen:
VITE_SUPABASE_URL=https://<project-id>.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=<anon-key>- Migrationen ausführen:
supabase db pushnpm run devDie App ist unter http://localhost:5173 erreichbar.
Erstelle im übergeordneten Verzeichnis folgende Struktur:
hosting/
├── app/ ← dieses Repository (geklont)
├── dist/ ← wird beim Build befüllt
├── caddy/
│ └── Caddyfile
└── docker-compose.yml
caddy/Caddyfile — ersetze SERVER_IP mit der IP-Adresse deines Servers:
http://SERVER_IP {
root * /srv
file_server
encode zstd gzip
try_files {path} /index.html
}
docker-compose.yml:
services:
build:
image: node:20-alpine
working_dir: /app
volumes:
- ./app:/app
- ./dist:/app/dist
command: sh -c "npm ci && npm run build"
profiles: ["build"]
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- ./dist:/srv:ro
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:App bauen und starten:
# Frontend bauen
docker compose run --rm build
# Caddy starten
docker compose up -d caddyDie App ist unter http://SERVER_IP erreichbar.
Update nach Code-Änderungen:
git pull
docker compose run --rm buildAlle Supabase-Container laufen mit der Docker-Restart-Policy unless-stopped und starten automatisch mit dem Docker-Daemon. Stelle sicher, dass Docker beim Systemstart aktiviert ist:
# Linux (systemd)
sudo systemctl enable docker
# Supabase einmalig starten (danach automatisch)
supabase startsrc/
├── components/ UI-Komponenten (shadcn/ui)
├── hooks/ React Query Hooks für Datenbankzugriffe
├── integrations/
│ └── supabase/ Generierter Client & TypeScript-Typen
├── lib/
│ └── supabase-config.ts Verbindungslogik (env vars / localStorage)
└── pages/ Seiten (Bauteile, Stücklisten, Produktion, …)
supabase/
├── config.toml Supabase CLI Konfiguration
└── migrations/ Datenbankschema (wird automatisch angewendet)
| Tabelle | Beschreibung |
|---|---|
components |
Bauteile mit Eigenschaften & Bestand |
stock_locations |
Lagerorte pro Bauteil |
stock_movements |
Bestandsbewegungen (Ein-/Ausgang) |
bom_lists |
Stücklisten |
bom_items |
Positionen einer Stückliste |
production_runs |
Produktionsdurchläufe |
Das Projekt wurde mit Lovable erstellt. Änderungen in Lovable werden automatisch in dieses Repository gepusht.
Lokale Änderungen zurück zu Lovable bringen:
git push origin main