Progetti / Gregdle

Gregdle

Un guessing game giornaliero su GregTech con 209 macchine, risposte lato server e una pipeline dati dal wiki.

Linguaggio
TypeScript
Build browser
gregdle.carletti.work ↗
Aggiornato
—
209macchine
2difficoltà
21test
7migrazioni

Cosa è cambiato

Cosa mi ha insegnato Gregdle.

È il progetto più piccolo qui, ma tocca scraping, validazione, database, API server e deploy live.

01 / Scope di prodotto

Lasciare che i dati cambino il piano.

Il piano iniziale prevedeva sei dataset. Il wiki di GTNH non aveva pagine sui materiali, quindi ho eliminato quel dataset invece di forzare uno scraper a inventare una struttura. Il decision log registra cosa è cambiato e perché.

02 / Pipeline dati

Trattare i dati scraped come un prodotto.

La pipeline delle macchine salva l'HTML del wiki in cache, rispetta un crawl lento, normalizza i campi dell'infobox, valida tutto con Zod, applica override manuali e scrive un report di qualità. Le 209 macchine passano da quel processo, non da scraping a runtime.

03 / Logica server

Tenere la risposta fuori dal client.

I tentativi passano da un route handler Next.js. Valida la richiesta, risolve la risposta giornaliera o quella seedata e restituisce solo le celle di confronto. I test anti-spoiler verificano che una risposta sbagliata non contenga mai id o nome della soluzione.

04 / Confini del database

Mettere il segreto dietro al database.

Supabase contiene entry, risposte giornaliere, risultati e profili. Le RLS rendono le daily answers non leggibili dal client, `pg_cron` le genera in anticipo e le scritture in classifica passano da una RPC validata dal server.

05 / Deploy

Fare debug della piattaforma, non solo del codice.

Next.js 16 su Cloudflare via OpenNext compilava senza errori ma restituiva 500 a runtime. La causa era `cacheComponents`, che si aspettava una cache incrementale che la cache dummy di OpenNext non poteva servire. Disattivare quei flag ha risolto.

06 / Interfaccia

Rispondere a come le persone giocano.

La prima versione imitava troppo letteralmente la GUI di GregTech: difficile da leggere su telefono e troppo dipendente dal colore. Il redesign ha aggiunto colonna fissa dei tentativi, scroll orizzontale, icone ed etichette per ogni cella e una curva di difficoltà più chiara.

Ancora aperto

Il prossimo dataset.

La v1 copre le macchine GTNH. I dataset GTCEu, più playtest mobile e la rifinitura di account e classifica sono i prossimi passi. Il gioco è live e il codice è su GitHub.