Quaddicted is basically metadata plus community stuff around files
metadata: what is this file, who made this and when, what is included, how big is it, etc
Currently this is stored in a SQL database with a column (or table for 1:n relationships like the ‘included files’) per metadata thing
That is not very flexible
And it requires dedicated editors. we have a website editor thanks to Sajt but it is rudimentary and not fit to be opened up for everyone to use
The current system is also dependant on me uploading files and the filenames abiding to strict rules, as it will automatically determine some metadata and inspect the zip file contents (failing on some zip dialects/versions)
My idea here is to define a json format for describing the file itself (hash, size, filename(s))
Everything that describes the kind or contents of the file would be a list of strings of key=value pairs, with duplicates allowed. For example gamemode=coop, gamemode=singleplayer, author=czg, author=BigFluffy, releasedate=2018-12-15, style=outrun, dependency=quoth>=2, title=The Title, etc
That would also potentially include machine readable installation instructions
Such json file would exist for each hash, maybe in files/by-sha512/$firstCharOfHash/$hash.json
The json way could also be a way of providing multiple URLs from where the file itself could be downloaded, we could even include magnet or ipfs urls
Those json files would be handled and tracked in a public git repository, with lots of trusted maintainers and the possibility for everyone to propose changes
Quaddicted would then use this main repository of file data and metadata, sync and parse it regularly and build its portals from it (like the badly URLed /reviews/ for sp maps) based on the tags it finds
So this would easily enable specific ‘views’ on the vast landscape of releases
And even enable tracking of arbitrary files currently not covered by any surviving website, e.g. movies, skins etc
The community aspects, comments, ratings, screenshots () would remain in a db at Quaddicted
since that require more interactivity and immediate action
Not sure about screenshots…