BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Eine private Plattform für dich und deine Freunde, um eure Magic: The Gathering Sammlungen zu importieren, zu durchsuchen und zu filtern. Bilder werden live von Scryfall geladen. • Next.js 14 (App Router) – Frontend & API-Routen • Supabase – Auth (E-Mail/Passwort) + Postgres-Datenbank • Scryfall API – Kartendaten & Bilder (kostenlos, kein Key nötig) • Tailwind CSS – StylingREADME 전문 보기 ↗
Eine private Plattform für dich und deine Freunde, um eure Magic: The Gathering Sammlungen zu importieren, zu durchsuchen und zu filtern. Bilder werden live von Scryfall geladen.
Sammlung: Karten importieren (Scryfall-Abgleich), filtern nach Name, Farbe, Typ, Seltenheit
Commander Decks: eigene Decks anlegen, Commander setzen, Kartenliste importieren
Automatische Deck-Analyse: erkennt Anzahl Länder, Ramp, Removal, Kartenziehen, Board Wipes, Mana-Kurve und Verstöße gegen die Farbidentität des Commanders – und gibt konkrete Verbesserungsvorschläge aus
Freunde: Freundschaftsanfragen per E-Mail, erst nach gegenseitiger Bestätigung sichtbar
"Freund besitzt diese Karte": In jeder Deckliste wird angezeigt, welcher Freund eine Karte bereits besitzt (z. B. um sie sich zu leihen) – ohne dass ihr je die komplette Sammlung des anderen einsehen könnt
Cardmarket-Preise in €: Werden automatisch über Scryfall mitgeliefert (Scryfall bezieht seine EUR-Preise direkt von Cardmarket) – keine eigene Cardmarket-Anbindung nötig. Gesamtwert von Sammlung und Decks wird live berechnet, ein Button aktualisiert die Preise auf den aktuellen Stand
Trades mit Historie: Karten mit bestätigten Freunden handeln. Beim Annehmen wandern die Karten automatisch und geprüft zwischen den Sammlungen. Jeder Trade bleibt mit Werten und Status als Verlauf sichtbar
Wertverlauf: Gesamtwert der Sammlung und Preis einzelner Karten über die Zeit als Diagramm – die Daten entstehen bei jedem Preis-Update
CSV-Import & -Export: Sammlung per CSV aus Moxfield/Archidekt/Deckbox importieren und als CSV exportieren
Wunschliste: gesuchte Karten sammeln; es wird angezeigt, welcher Freund eine Wunschkarte besitzt
Deck-Baubarkeit: pro Deck sehen, welche Karten du aus deiner Sammlung schon hast und welche (zu welchem Preis) dir noch fehlen
Mana-Kurve & Farbverteilung: grafische Deckauswertung zusätzlich zur Textanalyse, plus Deckwert-Verlauf
Sammlungs-Freigabe: einzelnen Freunden read-only Zugriff auf die eigene Sammlung geben
Leih-Tracking: festhalten, wem du welche Karte geliehen hast
Trade-Balance: bei jedem Trade wird die Wertdifferenz beider Seiten angezeigt
Foto-Import (OCR): Karte fotografieren → der Name wird im Browser per
Tesseract.js ausgelesen, gegen Scryfall abgeglichen und nach deiner Bestätigung
importiert (/scan). Läuft ohne Kosten auf dem Gerät; funktioniert am besten
bei gutem Licht und gerader Aufnahme.
Kartenvorschläge: pro Deck schlägt die App passende Karten aus Scryfall vor – gefiltert nach Farbidentität des Commanders und den schwächsten Kategorien (Removal/Ramp/Draw/Board Wipe). Basiert vollständig auf Scryfall-Daten.
Kartenverwaltung ohne Import: In der Sammlung eine Karte antippen, um Menge zu ändern, Foil umzustellen oder sie zu entfernen.
Deck bearbeiten: Deck umbenennen, Commander tauschen, einzelne Karten entfernen und ganze Decks löschen.
Account-Verwaltung (/account): Passwort ändern, E-Mail-Adresse ändern
(mit Bestätigungslink), abmelden.
Power-Level / Commander-Bracket: pro Deck eine Einstufung ins offizielle
5-Stufen-System (Beta) – regelbasiert auf der Game-Changers-Liste von Scryfall
(is:gamechanger), inkl. Begründung und erkannten Game Changern. Zwei-Karten-
Combos werden bewusst noch nicht automatisch erkannt.
Kartendetails: Zustand (NM–DMG) und Sprache pro Karte, im Karten-Editor einstellbar und im CSV-Export enthalten.
Set-Fortschritt (/sets): pro Set, wie viele verschiedene Karten du besitzt,
mit Fortschrittsbalken (Gesamtzahl je Set von Scryfall).
Deck-Kategorien: Deckkarten werden automatisch nach Rolle gruppiert (Länder, Ramp, Removal, Board Wipe, Kartenziehen, Kreaturen, Sonstiges).
Set-Filter & Sortierung in der Sammlung (Name, Manawert, Preis, Set).
Playtester / Goldfishing: pro Deck eine Testhand ziehen, Mulligan (London) und nachziehen – mit Länder-Zähler und Mulligan-Hinweisen. Reine Frontend- Simulation zum Prüfen der Manakurve (Commander bleibt in der Command Zone).
Zustandsbereinigte Bewertung: der Sammlungswert berücksichtigt den
Kartenzustand (NM 100 %, LP 90 %, MP 75 %, HP 60 %, DMG 40 %) – zentral in
lib/valuation.ts, überall dieselbe Rechnung (Anzeige + Cron-Snapshots).
Zwei-Karten-Combos im Bracket: kuratierte Liste bekannter Combos (Thassa's Oracle + Demonic Consultation u. v. m.) hebt Decks auf mindestens Bracket 3 und wird in der Begründung ausgewiesen.
Bulk-Aktionen: in der Sammlung „Auswählen" antippen, mehrere Karten markieren und gemeinsam löschen.
Optimistische Oberfläche: Änderungen an Karten (Menge, Foil, Zustand, Sprache, Löschen) erscheinen sofort; bei Serverfehlern wird zurückgerollt.
Kartenvorschau: im Karten-Editor das Bild antippen für eine Großansicht.
Nächtlicher Preis-Cron: aktualisiert Preise für alle Nutzer und schreibt tägliche Wert-Snapshots (Sammlung & Decks) – so wird der Verlauf tagesgenau.
vercel.json richtet einen täglichen Cron ein, der /api/cron/prices aufruft.
Voraussetzungen (in Vercel als Environment-Variablen setzen):
SUPABASE_SERVICE_ROLE_KEY – der service_role-Key aus Supabase (umgeht RLS;
niemals ins Frontend/Repo committen).CRON_SECRET – ein frei gewähltes Geheimnis. Vercel sendet es automatisch als
Authorization: Bearer <CRON_SECRET> an den Cron-Endpunkt.Der Job aktualisiert Kartenpreise für alle Nutzer über den Scryfall-Batch- Endpoint und schreibt die Tages-Snapshots für Sammlungs- und Deckwerte.
Unit-Tests für die Kernlogik (Decklisten-Parser, CSV-Import, Deck-Analyse, Vorschlags-Queries, Trade-Übertragung) mit Vitest:
npm test
Die Tests laufen ohne Netzwerk. Die Trade-Tests (tests/tradeLogic.test.ts)
sichern die kritischste Stelle ab – das Verschieben echter Karten zwischen
zwei Sammlungen inkl. Bestandsprüfung, Teiltausch, Foil-Trennung und
Fehlerfällen. Die reine Logik spiegelt die SQL-Funktion accept_trade.
.github/workflows/ci.yml lässt bei jedem Push/PR auf main automatisch
Typecheck, Tests und Build laufen – so kommt kein kaputter Stand ins Repo.
Ein systematischer Durchgang aller RLS-Policies und security definer-
Funktionen steht in supabase/SECURITY_REVIEW.md (inkl. empfohlener
manueller Gegenprobe mit zwei Testkonten nach dem Deploy).
friends_owning_card), die ausschließlich Besitzer-ID,
E-Mail und Stückzahl zurückgibt – und das nur für Personen, mit denen eine
bestätigte Freundschaft besteht. Es gibt keinen Weg, fremde Sammlungen
vollständig auszulesen.Auf supabase.com kostenlos registrieren und ein neues Projekt erstellen.
Unter SQL Editor das Schema einspielen:
supabase/schema.sql ausführen.supabase/migrations/002_trades_history.sql ausführen. Diese Migration
bereinigt doppelte Karten, fügt Trades, Preisverlauf und Wertverlauf hinzu.Ab jetzt werden Schemaänderungen als nummerierte Dateien unter
supabase/migrations/ gepflegt – einfach die jeweils neue Datei ausführen.
Aktuell: 002_trades_history.sql (Trades/Wertverlauf) und
003_wishlist_sharing_loans.sql (Wunschliste, Freigabe, Leihen, Deckwert-Verlauf).
Unter Project Settings → API die Project URL und den
anon public key kopieren.
Optional, aber empfohlen: Unter Authentication → Settings "Confirm email" aktiviert lassen, damit nur echte E-Mail-Adressen sich registrieren können.
npm install
cp .env.local.example .env.local
# .env.local mit den Werten aus Schritt 1 befüllen
npm run dev
Die App läuft dann auf http://localhost:3000.
.env.local dort in den
Project Settings eintragen.Im Projektordner ausführen:
git init
git add .
git commit -m "Initial commit: Magic Collection App"
git branch -M main
git remote add origin https://github.com/DEIN-USERNAME/DEIN-REPO.git
git push -u origin main
Falls das Repo auf GitHub noch nicht existiert: vorher auf github.com ein neues, leeres (privates!) Repository anlegen, dann die obigen Befehle ausführen. Privat ist hier wichtig, da es um eure private Sammlung geht.
Auf der Sammlung-Seite oben auf "Karten importieren" klicken und eine
Liste von Kartennamen einfügen (eine pro Zeile). Auch
Deckliste-Notation wie 2x Lightning Bolt wird erkannt.
Die App ist eine Progressive Web App – sie lässt sich ohne App Store direkt auf dem Handy installieren:
Voraussetzung ist HTTPS – bei Vercel automatisch gegeben. Icon, Name, Farben
und der Offline-Hinweis sind bereits konfiguriert (app/manifest.ts,
public/sw.js, public/offline.html).
Der "Preise aktualisieren"-Button fragt jede Karte einzeln bei Scryfall ab. Bei kostenlosem Vercel-Hosting sind API-Routen auf ca. 10 Sekunden begrenzt – das reicht für ein paar hundert Karten. Bei sehr großen Sammlungen (500+) kann es sinnvoll sein, stattdessen Scryfalls täglichen Bulk-Data-Export zu nutzen oder das Update in Batches aufzuteilen. Sag Bescheid, falls das bei euch relevant wird, dann bauen wir das um.