connorshea / vglist Goto Github PK
View Code? Open in Web Editor NEWA video game library tracking web app built in Rails and powered by Wikidata.
Home Page: https://vglist.co
License: MIT License
A video game library tracking web app built in Rails and powered by Wikidata.
Home Page: https://vglist.co
License: MIT License
It should be possible to add it from the Release page, or from the Game page, next to each release (or maybe add a game and then that opens a dropdown that lets you choose the specific release?)
Releases should always have the same genres as their parent games (please god let this be true, I'm sure Kingdom Hearts screws this up somehow).
There should probably be a settings
controller and one of the pages should be the registrations#edit view, and another for modifying the user's profile (e.g. the user bio and eventually the user avatar). Either the content should be submitted via AJAX (to allow the user to, e.g. change their email and password separately), or each different thing you can change would need to be on a separate page.
users/edit
can probably be removed as an accessible view.
Unfortunately validations aren't built into ActiveStorage by default so I'll need to work around that limitation.
Should also limit the formats allowed, no WebP (I don't think Safari supports it yet), no gifs (no reason to allow them, game covers don't use GIFs and there's no reason to support them for avatars), and no audio or video formats.
Games belong to Series. I'm not sure if we should bother with ordering or just base the order off the release date.
e.g. the Half-Life series has:
Whether games like Half-Life Deathmatch should be included, I don't know.
This application needs tests, dang it. Controller tests, feature tests, integration tests, unit tests. All the tests.
https://github.com/rails/webpacker
See the discussion here: https://github.com/rails/webpacker/pull/1755/files
Will need to upgrade to Webpack 4.x, @rails/webpacker 4.x, webpacker (the gem) 4.x, and maybe webpack-dev-server 3.x.
We probably won’t need this for a while anyway.
Games should have release dates. Potentially with a way to show what platforms a given release date refers to.
Dependent on #73.
Trending games? A feed of activity?
For setting release dates, purchase dates, etc.
https://github.com/mariomka/vue-datetime
Dependabot encountered the following error when parsing your .dependabot/config.yml
:
The property '#/update_configs/0/automerged_updates/1' of type object did not match one or more of the required schemas
Please update the config file to conform with Dependabot's specification.
You can mention @dependabot in the comments below to contact the Dependabot team.
Wikidata has this as well, it's good for things like Half-Life 2, which is commonly called HL2, or games with different names internationally.
Hours played should maybe be limited to ~20k hours to prevent people from adding 10 million hours and messing with the site stats.
I've seen legitimate 10k-ish hours, never much more than that though.
This should be a float to allow for, e.g. 1.5 hour play times.
I'm not sure exactly how to handle this, companies can be developers and/or publishers. Some companies self-publish, so they're both for a given release.
Feature specs can take the place of the request/controller specs, since I haven't really been able to get either to work.
These might be useful?
Most users shouldn't be allowed to delete things, and platforms shouldn't be able to be created/edited by anyone that isn't a moderator.
This is probably dependent on #12?
Gem for the Steam API: https://github.com/bhaberer/steam-api
Gem for Steam Omniauth: https://github.com/reu/omniauth-steam
We need to figure out how to link between GiantBomb and Steam, Wikidata is a potential option.
Unfortunately it doesn't look like the GiantBomb Wiki includes the Steam URL or ID anywhere, so this may be pretty difficult :/
Make it possible for moderators and admins to mark a game, release, or company as Protected (like on Wikipedia).
This would make it so only moderators and admins could edit the item.
settings/account
users/edit
and the page is unstyled (this is because there's no view in the users/registrations
directory for user/edit)I'll need to override the default devise controller method for this somehow.
Releases should show genres, which are inherited from the parent Game. Releases don't have genres themselves.
Wikidata has some data that they've used to import video game info: https://tools.wmflabs.org/mix-n-match/#/group/ig_video_games
You can actually download each of these in their full JSON format, a complete log of every game on, e.g. GiantBomb. Also useful for game platforms.
Use pg_search's multisearch capabilities to provide site-wide search in the navbar.
This doesn't work:
validates :genres,
uniqueness: { scope: :id }
Potentially because of the way the association between genres and games is handled currently. It may be a better idea to create a games_genres
model to handle these associations, like we have for the release developers/publishers.
This will probably require pg-search.
Right now the <genre-select>
component just does a really ignorant thing where it gets the whole genre index and then filters locally. This isn't feasible for something like the developer or publisher fields.
These should probably all be separate issues, but just writing out some thoughts:
I'd rather not make everything from scratch, so probably should choose an icon library.
Releases should have covers and fallback to the parent Game cover if the release has no release-specific cover.
The problem would be displaying this in a way that's both performant and makes sense to the user.
Game purchases can have comments (I should probably rename that to notes), make it possible to add notes to game purchases and also to view them in the user library.
Needs the ability to add a release to your library, and to edit data on it like score, notes, and completion status. And to remove it.
Also add a button on Release pages to add the release to your library.
For some reason the request specs are acting up >:( And also there's hardly any documentation out there for request specs.
Maybe just go with feature specs instead, but those are slow.
With links to the GitHub, my personal site, etc.
We only need to track dates, no times.
This would allow for us to automatically keep game data up-to-date and also to get access to identifiers in other databases (e.g. PCGamingWiki, GiantBomb, Wikipedia, etc.).
I'm not sure how to handle games / releases though, Wikidata is inconsistent there, but usually has an item for a given Game rather than its "Release".
Right now you can add a release to your library multiple times, which doesn't really make sense. It should be unique.
Probably just need to validate the uniqueness
of the release purchase model?
Let's go with ActiveStorage.
Does it work on Heroku? Yes
Should we use Carrierwave along with it? No need, ActiveStorage pretty much handles everything that carrierwave would.
Any other considerations to make?
https://guides.rubyonrails.org/v5.2/active_storage_overview.html
https://evilmartians.com/chronicles/rails-5-2-active-storage-and-beyond
Keep Rails 6 in mind: https://github.com/rails/rails/blob/v6.0.0.beta1/activestorage/CHANGELOG.md
Need to figure out a few things:
Now that we can add a release to the user's library we should also be able to remove it.
Add a divider and then the GitHub link below the Sign out button. Not sure if I should have that available for users who aren't signed in as well?
Eventually I'll probably open a Discord server and add that as well.
Users should have usernames (and display names?)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.