cd ..

~/projects/oop-net

FinishedZavršeno solo projectsamostalni projekt 2026-08 → 2026-09

OOP.net — World Cup Stats

Windows Forms + WPF desktop apps over a shared .NET data layer — 2018 & 2019 World Cup statistics.Windows Forms + WPF desktop aplikacije nad zajedničkim .NET slojem podataka — statistika SP-a 2018. i 2019.

OOP.net is my project for Algebra's Object-Oriented Programming in .NET course: a desktop toolkit for browsing the 2018 men's and 2019 women's FIFA World Cup statistics. The assignment prescribes one Visual Studio solution with three projects — a Data Layer class library used by both clients, a Windows Forms app and a WPF app — and grades each learning outcome separately, so the architecture is deliberately clean: every byte of data manipulation sits in the library.

The data layer talks to the course's World Cup REST API with RestSharp and Newtonsoft.Json models, or reads the same JSON offline, chosen by a configuration file — and it hides the API's quirks (numbers shipped as strings, stage names that differ by gender, nullable statistics, event names in ALL CAPS with typos). Settings, the favourite team and the three favourite players persist in text files through a `FromLine` / `ToString` round-trip, so the app picks up where you left off.

The Forms app covers the initial-settings flow, favourite-team selection, favourite-player picking with a custom UserControl, drag & drop and context menus, ranking lists (goals, cards, appearances, attendance) and HR/EN localisation. The WPF app adds a fully responsive match viewer: pick a team and an opponent, see the score, and watch both starting elevens laid out on the pitch by position. Submitted and pushed to GitHub in September 2026.

OOP.net je moj projekt za kolegij Objektno orijentirano programiranje u .NET-u na Algebri: desktop alat za pregled statistike Svjetskog prvenstva 2018. (muškarci) i 2019. (žene). Zadatak propisuje jedno Visual Studio rješenje s tri projektaData Layer class library koju koriste oba klijenta, Windows Forms aplikaciju i WPF aplikaciju — i ocjenjuje svaki ishod zasebno, pa je arhitektura namjerno čista: sva obrada podataka je u biblioteci.

Sloj podataka komunicira s World Cup REST API-jem kolegija preko RestSharpa i Newtonsoft.Json modela ili čita isti JSON offline, ovisno o konfiguracijskoj datoteci — i skriva neobičnosti API-ja (brojevi kao stringovi, nazivi faza koji se razlikuju po spolu, nullable statistike, imena u događajima VELIKIM SLOVIMA s tipfelerima). Postavke, omiljena reprezentacija i tri omiljena igrača spremaju se u tekstualne datoteke kroz `FromLine` / `ToString` krug, pa aplikacija nastavlja gdje si stao.

Forms aplikacija pokriva početne postavke, odabir omiljene reprezentacije, odabir omiljenih igrača kroz vlastiti UserControl, drag & drop i kontekstne izbornike, rang-liste (golovi, kartoni, nastupi, posjećenost) i HR/EN lokalizaciju. WPF aplikacija dodaje potpuno responzivan prikaz utakmice: odaberi reprezentaciju i protivnika, vidi rezultat i pogledaj obje početne postave raspoređene po terenu prema poziciji. Predano i objavljeno na GitHubu u rujnu 2026.

HighlightsIstaknuto

One solution, three projects: a Data Layer class library shared by both clients, a Windows Forms app and a WPF app — all data access lives in the library, never in the UI.

API or offline: the data layer serves the same models from the live World Cup REST API (RestSharp + Newtonsoft.Json) or from local JSON files, switched by a config file; every call is async with a loading animation.

Favourites that survive restarts: pick a championship, language and favourite team, then three favourite players — via a custom UserControl, context menus and multi-select drag & drop — all persisted to plain text files.

Rankings computed from raw match events — goals, yellow cards, appearances and attendance — tolerant of the API's ALL-CAPS name typos, nullable statistics and 'Draw' winners.

HR/EN localisation at runtime, printable rankings, and a responsive WPF match view that lays each side's starting eleven out on the pitch by position, with player details a click away.

Jedno rješenje, tri projekta: Data Layer class library zajednička za oba klijenta, Windows Forms aplikacija i WPF aplikacija — sav pristup podacima živi u biblioteci, nikad u sučelju.

API ili offline: sloj podataka poslužuje iste modele s World Cup REST API-ja (RestSharp + Newtonsoft.Json) ili iz lokalnih JSON datoteka, prema konfiguracijskoj datoteci; svaki poziv je asinkron uz animaciju učitavanja.

Favoriti koji preživljavaju restart: odaberi prvenstvo, jezik i omiljenu reprezentaciju, pa tri omiljena igrača — kroz vlastiti UserControl, kontekstne izbornike i multi-select drag & drop — sve spremljeno u obične tekstualne datoteke.

Rang-liste izračunate iz sirovih događaja utakmica — golovi, žuti kartoni, nastupi i posjećenost — otporne na tipfelere API-ja u imenima, nullable statistike i pobjednika 'Draw'.

HR/EN lokalizacija u runtimeu, rang-liste za ispis i responzivan WPF prikaz utakmice koji početnih jedanaest svake strane raspoređuje po terenu prema poziciji, s detaljima igrača na klik.