Giter VIP home page Giter VIP logo

connorshea / vglist Goto Github PK

View Code? Open in Web Editor NEW
145.0 6.0 25.0 31.06 MB

A video game library tracking web app built in Rails and powered by Wikidata.

Home Page: https://vglist.co

License: MIT License

Ruby 78.67% JavaScript 0.28% HTML 9.59% Vue 8.11% Dockerfile 0.14% TypeScript 0.95% SCSS 2.27%
rails video-games video-game-collection tracking tracker-application game-tracker rails-app rails-application wikidata video-game-library

vglist's Introduction

vglist

pipeline status coverage report

This is a Rails application for tracking your video game library. If you just want to use the site, visit vglist.co!

See CONTRIBUTING.md for more information on contributing to the project.

License

vglist's source code is licensed under the terms of The MIT License.

Icons are courtesy of Font Awesome, licensed as CC-BY-SA 4.0.

vglist's People

Contributors

anthonysuper avatar biow0lf avatar connorshea avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar otherwisejunk avatar panissupraomnia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

vglist's Issues

Add a genres search endpoint

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.

Your .dependabot/config.yml contained invalid details

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.

Decide how to handle avatars and game covers

Let's go with ActiveStorage.

Link to the GitHub repository from the navbar dropdown

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.

Add hours played to game purchases

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.

Add site-wide Search

Use pg_search's multisearch capabilities to provide site-wide search in the navbar.

Add developers/publishers

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.

Add release dates to games

Games should have release dates. Potentially with a way to show what platforms a given release date refers to.

Dependent on #73.

Add genres to games

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).

Protected Games / Engines / Companies

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.

Release Purchases need to be unique

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?

Validate that the genres on a game are unique

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.

Game Series

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:

  • Half-Life
  • Half-Life: Blue Shift
  • Half-Life: Opposing Force
  • Half-Life: Source
  • Half-Life 2
  • Half-Life 2: Episode One
  • Half-Life 2: Episode Two

Whether games like Half-Life Deathmatch should be included, I don't know.

Start writing feature specs

Feature specs can take the place of the request/controller specs, since I haven't really been able to get either to work.

Figure out request specs

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.

Figure out how to limit image size in ActiveStorage

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.

Add alternative names to Games

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.

Moderation Tools

These should probably all be separate issues, but just writing out some thoughts:

  • Banning users
    • Should we have temporary bans?
  • Reporting users
  • Disabling edits after a limit has been reached within a given time period
    • Functionality to lift this edit block and also to automatically have a more strict edit limit for new users vs. users that have contributed before/have had accounts for more than 24 hours.
  • Rolling back user edits, for malicious users (see also: https://www.mediawiki.org/wiki/Manual:RollbackEdits.php)
  • Protected games, which can only be edited by admins (#68)
  • Blocking users (users can block other users, e.g. if they're harassing them)

Add covers for both games and releases

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.

Start writing tests

This application needs tests, dang it. Controller tests, feature tests, integration tests, unit tests. All the tests.

Start fleshing out the GameLibrary component

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.

Add a release to your library

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?)

Expose 'comments' for game purchases

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.

Add a dropdown component

Right now we have buttons like this, but it looks rather ugly:

image

Those buttons aren't used particularly frequently, so they should be hidden behind a dropdown menu.

I think Bulma actually provides this in some capacity already, so we can just use that.

Settings controller

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.

Prevent settings/account from redirecting to users/edit on a failed submission

  • Log in and go to settings/account
  • Submit the account details form with an error (e.g. press update without changing anything)
  • Note that you've been redirected to 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.

Deployment

Need to figure out a few things:

  • Probably Heroku
  • Hobby dynos are probably fine for now
  • We'll definitely need the 10M rows in Postgres
  • We'll need a mail provider
  • We'll need a way to store ActiveStorage attachments

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.