GameLib

Een bibliotheek voor gamekeys met prijsinformatie uit meerdere bronnen, om op het juiste moment te verkopen.

GameLib
TypePrivé / hobbyJaar2021DuurDoorlopendLive bekijken

Over dit project

GameLib is mijn eigen bibliotheek van gamekeys. Het houdt bij welke spellen ik heb, welke serienummers daarbij horen, wat ze op dit moment waard zijn en wat er op de marktplaats van Kinguin voor gevraagd wordt. Op basis daarvan bepaal ik wat ik aanbied en tegen welke prijs.

Niemand anders gebruikt het en er komt nooit een klant op. Het is het oudste project dat ik heb en er wordt nog steeds aan gewerkt.

Waarom

Ik had een flinke stapel keys en die moest ergens heen. Dat begon met Excel. Daarna een WordPress-site, en toen nog twee keer WordPress met een eigen thema en Bedrock eronder. Elke versie loste iets op en liep tegen iets nieuws aan, tot het duidelijk werd dat een lijst met spullen niet het probleem was maar een lijst die weet wat de spullen waard zijn.

Want dat beweegt continu. Een spel dat vorige maand vijftien euro deed staat nu misschien bij een paar winkels tegelijk in de aanbieding. Zonder systeem doe je dat op gevoel: je kijkt wat rond, gokt een prijs en zet hem erop. Dat werkt, maar je verkoopt structureel op de verkeerde momenten. Waar het mij om gaat is geduldig verkopen — wachten tot een prijs goed staat in plaats van er zo snel mogelijk vanaf te komen.

Hoe het werkt

Laravel aan de achterkant, Nuxt aan de voorkant, in één monorepo. Het datamodel is opgeknipt in het spel zelf, de serienummers die eraan hangen, de prijzen die ik erover verzamel en de aanbiedingen die eruit voortkomen.

Er hangen drie externe koppelingen aan. Kinguin is de marktplaats, en die heeft twee gezichten: een kant om als verkoper aanbiedingen te beheren en een kant om te zien wat er verkocht is. Die hebben elk hun eigen inloggegevens, dus de applicatie kan de ene wel hebben en de andere niet. Daarnaast twee prijsbronnen die vertellen wat een spel elders kost; AllKeyShop levert daarbij ook de prijsgeschiedenis per spel.

Kernpunten waar ik trots op ben

  • Kandidaten-matching op titel vóór er prijzen worden opgehaald. Een spel in mijn bibliotheek koppelen aan hetzelfde spel bij een prijsvergelijker gaat mis op edities, ondertitels, jaartallen en regio’s. Daar zit het meeste werk: eerst een lijst kandidaten opbouwen, dan pas prijzen. Het is veruit de grootste service in de codebase.
  • Diepe Kinguin-koppeling voor prijsinformatie en half-geautomatiseerde verkoop. De marktplaats heeft twee gezichten met elk eigen inloggegevens: aanbiedingen beheren, en zien wat er verkocht is.
  • Een rijk dashboard voor API- en verkoopstatussen. Elke koppeling schrijft na elke poging weg of het gelukt is en zo niet waarom. In een tool die van externe partijen afhangt is niet “er is iets stuk” de vraag maar “wát is er stuk”.
  • Prijsgeschiedenis opslaan in plaats van alleen actuele prijzen, samen met de prijzen van AllKeyShop. Een prijs zegt weinig; een prijs die drie weken zakt zegt iets.

Wat er nog niet in zit

Volledig geautomatiseerd in- en verkopen. Dat is het einddoel en daar is dit nog lang niet.

Wat het opleverde

Vijf jaar dezelfde codebase onderhouden terwijl de stack eromheen doorschuift — daar komen weinig hobbyprojecten aan toe. Verder veel CRUD- en query-ervaring, want de vraag die je continu stelt is welke van je spellen samen de meest waardevolle serienummers hebben, en in een omgeving met meerdere gebruikers dan alleen de exemplaren die aan jou zijn toegewezen. Dat soort vragen dwingt je om je queries serieus te nemen.

Ook zo'n project nodig?

Bel of app me, dan bespreken we vrijblijvend jouw situatie.