hd-commerce: neutrales SQLite-Commerce-Backend (Admin + API + Demo-Storefront)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# hd-commerce
|
||||
|
||||
**hd-commerce** ist ein eigenständiges, brand-neutrales E-Commerce-Backend von Heidrich Digital: eine wiederverwendbare Astro-SSR-Anwendung mit Commerce-Engine (SQLite), Shopify-artigem Admin, JSON-API und einem schlanken, neutralen Demo-Storefront.
|
||||
|
||||
Die mitgelieferte Demo-Instanz heißt **„Brittas Nähkiste"** (Kurzwaren/Nähbedarf) und dient nur als Beispiel. Name, Akzentfarbe, Texte und Logo-Wortmarke sind über die Einstellungen frei anpassbar — derselbe Code läuft für beliebige Shops.
|
||||
|
||||
## Features
|
||||
|
||||
- **Storefront** (hell, editorial, neutral): Startseite mit Announcement-Bar, Slider, Kategorien, Featured-Produkten und Newsletter; Shop-Katalog mit Kategorie-Filter; Produktdetailseiten; Warenkorb (localStorage); Checkout; Rechts-/Inhaltsseiten aus der DB.
|
||||
- **Admin** (Shopify-Stil): Dashboard mit KPIs & Funnel, Bestellungen mit Status-Workflow, Produkt-Editor (CRUD), Kunden, eigene Analytics (First-Party, Chart.js), Marketing (Popups & Announcement-Bar), Inhalte (Seiten, Slider, Medien-Upload) und Einstellungen.
|
||||
- **Engine**: synchron via `better-sqlite3` (WAL), automatisches Seeding beim ersten Start.
|
||||
- **API**: `/api/checkout` (Stripe Hosted Checkout oder Demo-Fallback), `/api/track`, `/api/subscribe`, `/api/upload`, `/uploads/[file]`.
|
||||
- **First-Party-Analytics**: eigene `events`-Tabelle, kein externer Dienst, keine personenbezogenen Rohdaten (Session = täglich rollender Hash aus IP+UA+Tag).
|
||||
- **Branding konfigurierbar**: Shop-Name, Akzentfarbe, Währung u. a. in einer `settings`-Tabelle; Akzentfarbe wird als CSS-Variable in Storefront **und** Admin injiziert.
|
||||
- **Self-hosted Fonts** (Fraunces + Public Sans), kein Google-CDN.
|
||||
|
||||
## Umgebungsvariablen (ENV)
|
||||
|
||||
| Variable | Beschreibung | Default |
|
||||
|---|---|---|
|
||||
| `DB_PATH` | Pfad zur SQLite-Datenbank (wird angelegt) | `./data/hdc.db` |
|
||||
| `ADMIN_USER` | Basic-Auth-Benutzer für `/admin` | `admin` |
|
||||
| `ADMIN_PASS` | Basic-Auth-Passwort für `/admin` | `admin` |
|
||||
| `STRIPE_PUBLIC_KEY` | Stripe Publishable Key (optional) | – |
|
||||
| `STRIPE_SECRET_KEY` | Stripe Secret Key (`sk_test_…`/`sk_live_…`). Ohne echten Key läuft der Demo-Checkout. | – |
|
||||
|
||||
Siehe `.env.example`.
|
||||
|
||||
## Lokal starten
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run dev # Entwicklungsserver auf http://localhost:4321
|
||||
# oder produktiv:
|
||||
npm run build
|
||||
node ./dist/server/entry.mjs
|
||||
```
|
||||
|
||||
Storefront: `/` · Admin: `/admin` (Standard `admin` / `admin`).
|
||||
|
||||
## Docker / Coolify
|
||||
|
||||
```bash
|
||||
docker build -t hd-commerce .
|
||||
docker run -p 4321:4321 -v hdc-data:/data \
|
||||
-e ADMIN_USER=admin -e ADMIN_PASS=geheim hd-commerce
|
||||
```
|
||||
|
||||
Das `Dockerfile` (node:22-slim) baut `better-sqlite3` nativ, legt `/data` an und setzt `DB_PATH=/data/hdc.db`. Auf Coolify ein persistentes Volume auf `/data` mounten, damit Datenbank und Uploads erhalten bleiben. HEALTHCHECK prüft `/`.
|
||||
|
||||
## Datenmodell
|
||||
|
||||
`settings`, `products`, `orders`, `customers`, `slides`, `pages`, `popups`, `subscribers`, `events`, `media` — alles seed-bar und im Admin pflegbar.
|
||||
|
||||
---
|
||||
|
||||
> **Hinweis:** „Brittas Nähkiste" ist nur die mitgelieferte Demo-Instanz. Brand (Name, Farben, Texte) ist über **Admin → Einstellungen** anpassbar.
|
||||
|
||||
Lizenz: MIT (siehe `LICENSE`).
|
||||
Reference in New Issue
Block a user