Przejdź do głównej zawartości

Backend i monetyzacja

Backend Novactorio to Supabase (auth, realtime, Postgres, storage) z płatnościami Stripe obsługiwanymi przez cztery Deno Edge Functions.

Usługi

UsługaRola
Supabase AuthKonta, sesje (@supabase/supabase-js ^2.57)
Supabase RealtimeMultiplayer co-op: pozycje graczy + akcje budowania
Supabase PostgresSnapshoty świata, profile, transakcje
Supabase StoragePrzechowywanie danych zapisu / snapshotów
StripeSubskrypcje Checkout (Starter/Premium) + opłaty handlowe
Deno Edge FunctionsOrkiestracja płatności + webhooki

Baza danych (supabase-schema.sql)

Kluczowe tabele:

TabelaCel
profilesProfile użytkowników; premium_tier aktualizowany przez webhooki
world_snapshotsZapis w chmurze (payload save_data)
trades / trade stateHandel gracz-gracz

Edge functions (supabase/functions/)

FunkcjaCel
stripe-checkoutTworzy sesję Stripe Checkout dla subskrypcji premium (Starter/Premium)
stripe-webhookWeryfikuje webhooki Stripe; aktualizuje profiles.premium_tier
trade-fee-checkoutCheckout dla opłat handlowych
trade-webhookPotwierdza opłaty handlowe i rozlicza transakcje

Przepływ: subskrypcja premium

Gracz klika „Go Premium"


stripe-checkout (Edge Function)
│ tworzy Checkout Session

Strona Stripe Checkout (hostowana)
│ płatność zakończona

stripe-webhook (Edge Function, weryfikacja podpisu)
│ aktualizuje profiles.premium_tier

Gracz ma korzyści premium

Przepływ: handel graczy

Gracz A inicjuje handel z graczem B


trade-fee-checkout (Edge Function)
│ opłata przetworzona

trade-webhook (Edge Function)
│ rozlicza transakcję, przenosi aktywa

Obaj gracze otrzymują przedmioty

Multiplayer co-op

Supabase Realtime rozgłasza:

  • Pozycje graczy — żywy ruch innych graczy
  • Akcje budowania — zdarzenia place/remove replikowane do wszystkich klientów

Zapis w chmurze

Snapshoty świata są backupowane w Supabase:

  • world_snapshots.save_data przechowuje zserializowany stan świata
  • Można przywrócić z UI zapisu/wczytywania gry

Zmienne środowiskowe

ZmiennaCel
VITE_SUPABASE_URLURL projektu Supabase
VITE_SUPABASE_ANON_KEYAnon (publikowalny) klucz Supabase
VITE_ADMIN_USERSNazwy użytkowników adminów oddzielone przecinkami
Klucze sekretne StripeSekrety Edge Functions (API Stripe + podpis webhooków)

Wdrożenie

# Wdróż edge functions
supabase functions deploy

# Wdróż grę na Cloudflare
npm run deploy # = npm run build && wrangler deploy

Konfiguracja żyje w wrangler.jsonc; CLI Supabase obsługuje wdrożenia funkcji z sekretami per funkcja.