Ecommerce Template
Next.js·React 등으로 만든 최신 전자상거래 템플릿
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Ein sicherer Prototyp-Bausatz für dein KI-Interior-Produkt: Raumfoto hoch, Look wählen, gestalteten Raum sehen, den ganzen Look über Stripe kaufen. Er läuft sofort mit Platzhaltern — du steckst nur deine Keys rein. Das deckt Phase A–D deiner Schritt-für-Schritt-Anleitung ab. Der echte Betrieb mit Live-Zahlungen und vielen Personendaten ist Phase E — dazu unten mehr. Du brauchst Node.js (Version 20 oder neuer). Dann http://localhost:3000 öffnen. Ohne jeden Key läuft alles im Mock-Modus: Der Render ist ein Platzhalter, der komplette Ablauf ist trotzdem sichtbar.README 전문 보기 ↗
Ein sicherer Prototyp-Bausatz für dein KI-Interior-Produkt: Raumfoto hoch, Look wählen, gestalteten Raum sehen, den ganzen Look über Stripe kaufen. Er läuft sofort mit Platzhaltern — du steckst nur deine Keys rein.
Das deckt Phase A–D deiner Schritt-für-Schritt-Anleitung ab. Der echte Betrieb mit Live-Zahlungen und vielen Personendaten ist Phase E — dazu unten mehr.
Du brauchst Node.js (Version 20 oder neuer).
npm install
cp .env.example .env.local # Werte eintragen (siehe unten)
npm run dev
Tests: npm test (Vitest) · Typen: npm run typecheck · beides: npm run check
Dann http://localhost:3000 öffnen. Ohne jeden Key läuft alles im Mock-Modus:
Der Render ist ein Platzhalter, der komplette Ablauf ist trotzdem sichtbar.
.env.local, nie im Code)| Variable | Wofür | Nötig? |
|---|---|---|
AI_PROVIDER | mock, comfyui, modelslab oder replicate | Standard mock |
COMFYUI_URL | eigene KI auf RunPod (siehe comfy/README.md) | nur bei comfyui |
MODELSLAB_API_KEY | echte Interior-Render-API | nur bei modelslab |
REPLICATE_API_TOKEN | alternatives Bildmodell | nur bei replicate |
STRIPE_SECRET_KEY | Checkout (Test-Modus, sk_test_…) | für echten Kauf-Flow |
STRIPE_WEBHOOK_SECRET | Stripe meldet bezahlte Bestellungen (whsec_…) | für Bestellstatus |
SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY | Datenbank: Katalog, Bestellungen, Kosten-Protokoll | optional |
DAILY_AI_COST_CAP_EUR | harte Tages-Kostenbremse | Standard 5 |
LOGISTICS_SHARE | Budget-Anteil für Logistik (0–0,6) | Standard 0 |
UPSTASH_REDIS_REST_URL + _TOKEN | Rate-Limit über alle Server-Instanzen | optional |
ADMIN_TOKEN / CRON_SECRET | Produkt-Import (manuell / täglich) | für Import |
Ohne STRIPE_SECRET_KEY funktioniert alles außer dem Checkout-Button.
Ohne Supabase läuft alles mit data/catalog.json; Bestellungen und
Render-Kosten landen dann nur im Server-Log.
supabase/migrations/ in Namensreihenfolgesupabase/seed.sql — der Beispiel-Katalog (neu erzeugen mit
npm run seed:generate, wenn sich data/catalog.json ändert)SUPABASE_URL und SUPABASE_SERVICE_ROLE_KEY (Project Settings → API)
in .env.local bzw. bei Vercel eintragen.Ab dann kommen die Produkte aus der Tabelle products, jede Bestellung
landet in orders/order_items, und jeder Render in render_events.
Die Tagesübersicht für die Kostenrechnung: select * from render_costs_daily;
Alle Tabellen haben Row Level Security ohne Policies — nur der Server mit dem Service-Role-Key kommt heran, der Browser nie.
Feeds von Affiliate-Netzwerken, Händler-APIs und Lieferantenlisten werden über
/api/admin/import eingelesen, automatisch eingeordnet und täglich
aktualisiert. Anleitung mit Beispielen: docs/SCHNITTSTELLEN.md.
„Ganzen Look kaufen“ legt eine Bestellung mit Status pending an und fragt
bei Stripe die Lieferadresse (DE/AT/CH) ab. Ist die Zahlung durch, meldet
Stripe das an /api/stripe/webhook → Status paid, mit E-Mail und Adresse.
Einrichten: Stripe-Dashboard → Developers → Webhooks → Endpoint
https://DEINE-DOMAIN/api/stripe/webhook mit den Events
checkout.session.completed, checkout.session.async_payment_succeeded,
checkout.session.async_payment_failed, checkout.session.expired.
Lokal: stripe listen --forward-to localhost:3000/api/stripe/webhook.
app/page.tsx — der Wow-Flow (Upload → Raum & Look → Render → Shop the Look)components/CompareSlider.tsx — Vorher/Nachher-Schieberegler für das Ergebniscomponents/LookPreview.tsx + app/api/preview — Vorschau der Produkte eines Looks, bevor ein Foto da ist.claude/skills/ — geprüfte Design-Skills (Emil Kowalski, Taste), siehe docs/DESIGN-SKILLS-PRUEFUNG.mdlib/roomEdit.ts — Swipe, Tauschen und Kopplung (Sets, Material-Familien)lib/stylePrompt.ts — Freitext-Stil → Render-Promptlib/budget.ts — Aufteilung Budget in Einrichtung und Logistiklib/sources/ — Produkt-Import aus Feeds, Händler-APIs und Lieferantenlisten
(Mapping, automatische Einordnung, Bericht) → /api/admin/importlib/sourcing/container.ts — Container-/Frachtschätzung → /api/logistics/estimateapp/go/[sku] — Händler-Links mit Klick-Zählung; app/api/events — Swipe-Statistiklib/ai/measure.ts — Schnittstelle für automatische Raumvermessung (noch ohne Verfahren)docs/ — Schnittstellen, Konzept-Abgleich, Protokoll der Overnight-Sessionsapp/api/render — ruft das KI-Modell auf (serverseitig, geschützt)app/api/checkout — erzeugt die Stripe-Checkout-Session + Bestellungapp/api/stripe/webhook — Stripe meldet bezahlte/abgelaufene Bestellungenlib/ai/provider.ts — die Modell-Abstraktion (Modell wechselbar)lib/ai/renderRoom.ts — verbindet Render mit echten SKUslib/catalog.ts + data/catalog.json — Produkttypen, Looks, Beispiel-Katalog
(Möbel + Deko & Accessoires)lib/productRepo.ts — holt Produkte aus Supabase, sonst aus catalog.jsonlib/designBrain.ts — wählt Produkte nach Stil und Budget (Deko nur, wenn
sie noch ins Budget passt)lib/orders.ts — Bestellungen anlegen und Status setzenlib/renderLog.ts — Kosten-Protokoll pro Renderlib/imageResize.ts — verkleinert Fotos im Browser auf max. 1536 pxcomponents/Product3DViewer.tsx — 3D-Ansicht mit <model-viewer> (Modelle
in public/models/)Siehe DEPLOYMENT.md — bringt den Starter über GitHub + Vercel online und
richtet das zweigleisige Setup ein: eine stabile Live-Version (main) und ein
zweites Gleis (dev) mit eigener Preview-URL, an dem du gefahrlos weiterbaust.
lib/env.ts ist mit server-only geschützt —
der Build bricht ab, falls ein Key ins Frontend rutscht.AI_PROVIDER=replicate
und die Modell-Version in lib/ai/provider.ts.Dieser Bausatz bringt dich zu einem sauberen, sicheren Prototyp. Vor einem echten Launch mit Live-Zahlungen und vielen Personendaten gilt:
Ein vibe-gecodeter Prototyp zum Testen ist in Ordnung. Ein Produktivsystem mit echtem Geld und DSGVO-Daten ist kein Solo-Job.
supabase/ — Datenbank-Schema und Beispiel-Datenlib/fitCheck.ts + components/RoomMeasurements.tsx — optionale Raummaß-Eingabe
und Passform-Check („passt / knapp / passt nicht"). Richtwert gegen teure
Retouren, keine Garantie. AR/LiDAR-Messen kommt später in einer nativen App.lib/rateLimit.ts — Rate-Limit + Kosten-Caplib/validation.ts — Upload-Prüfunglib/env.ts — Secrets, nur serverseitig