🎮 Sybath - Multiplayer Online RPG/STRATEGY
Projekt zaawansowanej gry online (MMO) napisanej w Next.js z architekturą database-driven i automatycznym
generowaniem backendu za pomocą PlopJS . Dodatkowo implementuję Localnego agenta AI na modelu QWEN 3.5 aby wspomógł
pracę.
Sybath to gra strategiczna MMO łącząca elementy rpg, city-buildingu, zarządzania zasobami i eksploracji mapy świata.
Definicja w PostgreSQL
↓
PlopJS Generator
↓
Automatyczne tworzenie:
├── TypeScript schematów typów
├── API Routes (GET/POST)
├── React Hooks
├── SWR Mutate Hooks
├── Server-side Fetchers
├── Server actions
└── Atom State (Jotai)
src/
├── db/postgresMainDatabase/schemas/
│ ├── map/ (świat, miasta, dystrykt)
│ ├── players/ (gracze, umiejętności)
│ ├── items/ (inwentarz, przedmioty)
│ └── attributes/ (atrybuty, zdolności)
│
│
├── app/api/
│ ├── [schema]/[table]/ (GET - wszystkie rekordy)
│ ├── [schema]/[table]/[id]/ (GET - po ID)
│ └── [schema]/rpc/[method]/ (Wywoływanie procedur)
│
├── methods/
│ ├── hooks/ (React useFetch* - client-side)
│ ├── server-fetchers/ (Server-side data fetching)
│ └── actions/ (Server actions - mutacje)
│
├── components/
│ ├── map/ (komponenty mapy)
│ ├── city/ (komponenty miasta)
│ └── portals/modals/ (modale UI)
│
└── store/
└── atoms.ts (Jotai atoms - state management)
Technologia
Wersja
Użycie
Next.js
14+
Framework, App Router
React
18+
Component model
TypeScript
Latest
Type safety
Jotai
Latest
State management
SWR
Latest
Data fetching
TailwindCSS
Latest
Styling
shadcn/ui
Latest
UI Components
Technologia
Wersja
Użycie
Next.js API Routes
14+
Serverless backend
PostgreSQL
17
Relacyjna baza
PlopJS
Latest
Code generation
Auth.js
Latest
Authentication
Zod
Latest
Schema validation
Qwen 3.5
Latest
Ai helpers
✨ Kluczowe Funkcjonalności
Proceduralne generowanie terenu
Dynamiczne załadowanie danych
Real-time pozycja gracza
Eksploracja świata
Sub-mapy dla miast
Zarządzanie budynkami
Strefa produkcji (dystrykt)
System ról (Owner, Worker)
Wielowarstwowy system magazynowania
Inwentarz gracza, budynku, dystryku
Slot-based storage (grid)
Automatyczne sortowanie
Umiejętności (Skills)
Zdolności (Abilities)
System progresji
Atrybuty charakteru
⚔️ Walka i wiele innych (w trakcie)
Jeden wybór z CLI generuje pliki:
Plik
Typ
Opis
db/postgresMainDatabase/schemas/[schema]/[table].ts
TypeScript
Typ i fetch funkcja
app/api/[schema]/[table]/route.ts
API Route
GET wszystkie
app/api/[schema]/[table]/[id]/route.ts
API Route
GET po ID
methods/hooks/[schema]/useFetch[Table].ts
React Hook
Client-side fetch
methods/hooks/[schema]/useFetch[Table]ByKey.ts
React Hook
Fetch z cache
methods/server-fetchers/[schema]/get[Table]Server.ts
Server Function
Server-side fetch
methods/server-fetchers/[schema]/get[Table]ByKeyServer.ts
Server Function
By Key server
store/atoms.ts
Atom Store
State management
Metoda
Ilość Kodu
Redukcja
Tradycyjny
~500 linii
-
Z PlopJS
~50 linii
90%
Zysk
450 linii
Per funkcja
Warstwa
Mechanizm
Status
Database
PostgreSQL RLS
✅
Auth
Auth.js sessions
✅
Validation
Zod schemas
✅
Types
TypeScript end-to-end
✅
API
CSRF protection
✅
Server Actions z Type Safety
Atom-based State Management
Demonstrowane Umiejętności
Umiejętność
Opis
Full-Stack TypeScript
End-to-end type safety
Database Design
PostgreSQL, procedures
Code Generation
PlopJS automation
Architecture
Scalable, maintainable
Performance
ETag caching, SWR
Security
validation, auth
MMO Architecture
Game systems design
┌─────────────────────────────────────────────────────┐
│ Frontend Layer │
│ React 18+ │ TypeScript │ Jotai │ SWR │
└──────────────────────┬──────────────────────────────┘
│
API Layer
│
┌──────────────────────┴──────────────────────────────┐
│ Backend Layer │
│ Next.js API Routes │ Auth.js │ Zod Validation │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────┴──────────────────────────────┐
│ Database Layer │
│ PostgreSQL │ Procedures │ PL/pgSQL │
└─────────────────────────────────────────────────────┘
Temat
Insight
Database-driven dev
Zmniejsza boilerplate o 90%
Code generation
Zmienia produktywność
Type safety
Od bazy do UI - game-changer
PostgreSQL logic
Lepsze niż client-side
Atom state mgmt
Elegancki i efektywny
.env
✅ NEXT_PUBLIC_BASE_URL= http://localhost:3000
✅ PG_MAIN_HOST = 127.0.0.1
✅ PG_MAIN_USER = postgres
✅ PG_MAIN_PASSWORD =
✅ PG_MAIN_PORT = 5432
✅ PG_MAIN_DATABASE =
✅ NEXTAUTH_SECRET= my_ultra_secure_nextauth_secret
✅ NEXTAUTH_URL= http://localhost:3000
Baza danych: ` db\b ackup`
# Instalacja zależności
npm install
# Uruchomienie development
npm run dev
# Code generation
npx run plop
w tej chwili nie udostępniony
Projekt demonstruje zaawansowaną wiedzę z zakresu:
✅ Full-Stack TypeScript Development
✅ Database Architecture & Optimization
✅ Code Generation & Automation (PlopJS)
✅ MMO Game Architecture & Systems
✅ Production-Ready Code Quality
✅ Performance Optimization
✅ Security Best Practices