CoOp:Anything
게임을 검색해 협동 플레이 가능한 모드·단계·품질·커뮤니티 평점을 확인합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Fantasy-Football-App für die Swiss Super League 26/27 — FPL-artig: Budget-Kader aus 15 Spielern, wöchentliche Aufstellung mit Kapitän, limitierte Transfers pro Spieltag, automatischer Punkte-Sync via API-Football, Admin-Tool für manuelle Korrekturen.
supabase/migrations/0001_init.sql
einmal komplett ausführen. Das legt alle Tabellen, Views, Trigger und RLS-Policies an..env.local kopieren
(siehe unten): Project URL, anon public Key, service_role Key.league_settings (Tabelle mit genau einer Zeile, id = 1) die Saison-
Parameter setzen (Budget, Kadergrösse, Slots pro Position, Transferkosten).
Falls die Zeile noch fehlt, einmalig per SQL-Editor einfügen.gameweeks) importieren — entweder manuell
über den Table Editor oder per SQL-Insert. Pro Spieltag: season, number,
deadline (Zeitpunkt, ab dem Transfers gesperrt werden)./fixtures und /fixtures/players abdeckt.GET https://v3.football.api-sports.io/leagues?search=Switzerland
Header: x-apisports-key: <dein-key>
Aus der Antwort die league.id für "Swiss Super League" notieren.clubs.api_football_team_id und players.api_football_player_id in
Supabase mit den entsprechenden IDs aus /teams bzw. /players befüllen —
ohne diese Zuordnung kann der Cron-Sync Spieler nicht matchen.Bekannte Einschränkung: Die API liefert keine Eigentore. Diese müssen im Admin-Panel manuell pro Spieler/Spieltag eingetragen werden.
.env.local.example nach .env.local kopieren und ausfüllen:
cp .env.local.example .env.local
| Variable | Woher |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → API |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase → Project Settings → API |
SUPABASE_SERVICE_ROLE_KEY | Supabase → Project Settings → API (geheim halten!) |
API_FOOTBALL_KEY | api-football.com Dashboard |
API_FOOTBALL_BASE_URL | i.d.R. https://v3.football.api-sports.io |
API_FOOTBALL_LEAGUE_ID | siehe Schritt 2 oben |
CRON_SECRET | Zufälliger String, z. B. openssl rand -base64 32 |
Ohne E-Mail-Bestätigung könnten Bots massenhaft Accounts anlegen. Cloudflare Turnstile ist ein kostenloser CAPTCHA-Ersatz, der Registrierung und Login schützt (für echte Nutzer meist unsichtbar). Solange kein Site-Key gesetzt ist, bleibt der Schutz inaktiv und die Formulare laufen normal.
Einrichten:
localhost). Widget-Typ „Managed" wählen..env.local bzw. Vercel als
NEXT_PUBLIC_TURNSTILE_SITE_KEYnpm install
npm run dev
App läuft auf http://localhost:3000.
Es gibt bewusst keinen Weg, sich selbst zum Admin zu machen (Sicherheit gegen Rechte-Eskalation). Nach der ersten Registrierung manuell in Supabase per SQL-Editor:
update profiles set role = 'admin' where username = 'dein-username';
Danach ist unter /admin das Gameweek-Management sichtbar: Spieltage
sperren/entsperren, Statistiken pro Spieler überschreiben, Punkte neu
berechnen.
Der Endpunkt /api/cron/sync holt Spielstände und Statistiken. Er muss
regelmässig aufgerufen werden — alle 15 Minuten, damit die Punkte während
laufender Partien mitlaufen.
⚠️ Vercels vercel.json-Cron reicht im Hobby-Tarif nicht: Dort läuft
ein Job nur einmal täglich, und selbst dann zu beliebiger Minute
innerhalb der Stunde. Ein häufigerer Ausdruck lässt das Deployment
fehlschlagen — deshalb steht in vercel.json bewusst 0 3 * * *
(nächtlicher Rückfall-Lauf, der im Hobby-Tarif akzeptiert wird).
Zwei Wege:
A) Supabase pg_cron (empfohlen, kostenlos) — läuft in deinem
bestehenden Supabase-Projekt, minutengenau, kein zusätzlicher Dienst:
supabase/migrations/0009_cron_sync.sql
im SQL-Editor ausführen, vorher die beiden Platzhalter <APP_URL> und
<CRON_SECRET> ersetzen. Kontrolle:
select * from cron.job_run_details order by start_time desc limit 10;
B) Vercel Pro (~20 USD/Monat) — dann greift vercel.json wie
konfiguriert, ohne weiteres Zutun.
Variante A hält die laufenden Kosten bei den ~19 USD für API-Football.
src/app/api/cron/sync/route.ts) synchronisiert immer nur den
aktuellsten gesperrten Spieltag (der mit der höchsten Nummer, dessen
Deadline verstrichen ist), um das API-Kontingent zu schonen.player_stats. Admin-Korrekturen leben separat in
player_stats_overrides und werden beim Berechnen der Punkte
(src/lib/gameweek-scoring.ts) darübergelegt — ein Sync überschreibt also
nie eine manuelle Korrektur.