Skip to content

Ciabatos/sybath

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

964 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ Sybath - Masywnie Multiplayer Online RPG

Projekt zaawansowanej gry online (MMO) napisanej w Next.js z architekturฤ… database-driven i automatycznym generowaniem backendu za pomocฤ… PlopJS.

๐ŸŽฏ O Projekcie

Sybath to gra strategiczna MMO ล‚ฤ…czฤ…ca elementy rpg, city-buildingu, zarzฤ…dzania zasobami i eksploracji mapy ล›wiata.


๐Ÿ—๏ธ Architektura

Database-Driven Development

Caล‚a logika biznesowa jest oparta na bazie danych PostgreSQL:

Definicja w PostgreSQL
    โ†“
PlopJS Generator
    โ†“
Automatyczne tworzenie:
โ”œโ”€โ”€ TypeScript schematรณw typรณw
โ”œโ”€โ”€ API Routes (GET/POST)
โ”œโ”€โ”€ React Hooks (useFetch*)
โ”œโ”€โ”€ Server-side Fetchers
โ””โ”€โ”€ Atom State (Jotai)

Struktura Projektu

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

Frontend Stack

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

Backend Stack

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

โœจ Kluczowe Funkcjonalnoล›ci

๐Ÿ—บ๏ธ System Mapy

  • Proceduralne generowanie terenu
  • Dynamiczne zaล‚adowanie danych
  • Real-time pozycja gracza
  • Eksploracja ล›wiata

๐Ÿ˜๏ธ Miasta i Dystrykt

  • Sub-mapy dla miast
  • Zarzฤ…dzanie budynkami
  • Strefa produkcji (dystrykt)
  • System rรณl (Owner, Worker)

๐Ÿ“ฆ System Inwentarza

  • Wielowarstwowy system magazynowania
  • Inwentarz gracza, budynku, dystryku
  • Slot-based storage (grid)
  • Automatyczne sortowanie

๐Ÿ‘ค System Postaci

  • Umiejฤ™tnoล›ci (Skills)
  • Zdolnoล›ci (Abilities)
  • System progresji
  • Atrybuty charakteru

โš”๏ธ Walka (w trakcie)

  • Inspiracja: Slay the Spire
  • System akcji turowych
  • Karty akcji (Attack, Parry, Riposte)
  • Replay systemu rund

๐Ÿš€ Automatyzacja Kodu

PlopJS Generatory

Jeden wybรณr z CLI generuje 8+ w peล‚ni funkcjonalnych plikรณw:

plop "Get Data From Table"
  โ†“
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

Redukcja Boilerplate

Metoda Iloล›ฤ‡ Kodu Redukcja
Tradycyjny ~500 linii -
Z PlopJS ~50 linii 90%
Zysk 450 linii Per funkcja

๐Ÿ” Bezpieczeล„stwo

Warstwa Mechanizm Status
Database PostgreSQL RLS โœ…
Auth Auth.js sessions โœ…
Validation Zod schemas โœ…
Types TypeScript end-to-end โœ…
API CSRF protection โœ…

๐Ÿ“Š Wzorce Programowania

1๏ธโƒฃ Server Actions z Type Safety

export async function addItemToInventoryAction({ playerId, item_id, quantity }: TAddItemToInventory) {
  // Direct database mutation
}

2๏ธโƒฃ Destrukturyzacja w Funkcjach

// Jawnie pokazuje uลผywane pola, zachowujฤ…c elastycznoล›ฤ‡ typu
function addItemToInventory({ playerId, item_id, quantity }: TAddItemToInventory)

3๏ธโƒฃ Atom-based State Management

export const districtAtom = atom<TDistrictRecordById>({})
export const selectedHeroAtom = atom<number | null>(null)

๐Ÿ’ผ Portfolio Value

Demonstrowane Umiejฤ™tnoล›ci

Umiejฤ™tnoล›ฤ‡ Level Opis
Full-Stack TypeScript Expert End-to-end type safety
Database Design Advanced PostgreSQL, RLS, procedures
Code Generation Advanced PlopJS automation
Architecture Senior Scalable, maintainable
Performance Advanced ETag caching, SWR
Security Advanced RLS, validation, auth
MMO Architecture Intermediate Game systems design

๐Ÿ› ๏ธ Tech Stack Overview

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Frontend Layer                     โ”‚
โ”‚  React 18+ โ”‚ TypeScript โ”‚ Jotai โ”‚ SWR โ”‚ TailwindCSS โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
                  API Layer
                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Backend Layer                     โ”‚
โ”‚  Next.js API Routes โ”‚ Auth.js โ”‚ Zod Validation     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  Database Layer                      โ”‚
โ”‚    PostgreSQL 17 โ”‚ RLS โ”‚ Procedures โ”‚ PL/pgSQL      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽ“ Kluczowe Learningi

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

๐Ÿ“ Quick Start

# Instalacja zaleลผnoล›ci
npm install

# Uruchomienie development
npm run dev

# Code generation
npx run plop

๐Ÿ“ž O Projekcie

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published