Git Product home page Git Product logo

ratethedub's Introduction

Hey, I'm Steven

FOSS fan, anime connoisseur, programming polyglot, Trekkie, and whatever else I'm feeling this week

Check out my website!

ratethedub's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar rushsteve1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ratethedub's Issues

Commenting system

An off-the-shelf commenting system would add a lot while (hopefully) being relatively low maintenance. Not really a fan of Disqus itself, but something similar would be best.

Feedback System

Some kinda of system for user feedback would be nice. This would be useful for database corrections or other moderation requests. This may or may not tie into #9

Maybe a Discord server or Matrix channel? Using Matrix would tie into using Cactus Comments if I go that route.

Weight score based on popularity

More popular series are going to have more votes for the dub, so weighting the score based on this could provide some very useful context.

Tailwind JIT mode

Tailwind's new JIT mode should make development easier and enable some neat features, but I ran into issues where it wasn't properly reloading in development.

Once I get this figured out it should be fully enabled.

Translating language names into other languages

Since I want to be able to show other language's dub ratings when viewing the whole site in a language, this will require translating the language list into other languages.
The beginnings of this are in RateTheDub.Locale but it needs a lot more work.

Featured/Trending series

To promote good dubs and make the homepage look nicer it'd be good to have manually featured and trending series. The featured series can just be a database flag, but trending requires more thought.

Telemetry Instrumentation & Logging

All of the existing logging should be replaced with Telemetry events, and the events and logging should be expanded to record more information.

Improve Seed Data

Pulling the seed data and saving it to SQL files and then just loading those is probably better than what it does currently.

Search Autocomplete

Having an autocomplete for the search would be really handy. And could leverage the existing cache system implemented in #4 to get the results.

Task system / Update Crawler

Using something like https://github.com/sorentwo/oban it might be a cool idea to schedule database updates and crawl for new series. This combined with the on-demand series pulling could prove to be a very powerful combo, and could handle changes in series info by updating them over time.

Pages not loading with Swup

Something is causing Swup to freak out and not load pages. I believe that it may be related to the <head> changes made in 53f60ce and that the Swup Head Plugin could be helpful.

Link Acceleration

Since this is a server-side rendered site, some kind of link acceleration would be nice. Maybe using Swup or Unpoly or similar.

A progress bar may also be necessary due to some of the on-demand API calls that will happen.

Translations

I don't want to limit this site to just English dubs, so it follows that the site would have to be translated into most of the languages that Anime tend to get dubs in. Phoenix has some tools for this, but more research required.

Also I don't speak any other languages so I don't think I could really translate anything myself.

Split voice actors into their own table

Currently voice actors are stored in their related anime. This is really inefficient and definitely can be done better by putting the actors in their own table and then either using a many_to_many relation or some kind of embedded schema.

Down voting

The current system only allows voting up as a way to stop brigading and general subs-not-dubs elitisim, but I'm not sure that is fully helpful as a review metric. So adding down voting might be worth it.

#2

Error pages

Make sure that errors propagate correctly and render as error pages. Specifically 404 errors currently just crash.

CSS Framework

Tying in with #10 it would be nice to pick and use a good CSS framework so I don't have to do everything by hand.

Testing!

I'm bad about writing tests, so this time I'm going to make sure to do it!

JSON API

A basic read-only JSON API which provides the information that RateTheDub has for other sites and projects to use.

Follows https://jsonapi.org/

CI and testing hooks

Continuous Integration would be really helpful, and/or matching Git hooks to test things before they're committed/pushed. Things that would need to be run are...

  • mix test
  • mix credo but not failing on minor warnings
  • mix dialyzer

Hosting

Figuring out where/how this site will be hosted is a bit of a concern. Possible options include:

  • Heroku
  • Digital Ocean App Platform
  • Gigalixir
    And the usual slew of major cloud hosts. Other considerations include DDOS protection, CDN caching, and possibly analytics.

Search database before Jikan

Currently when searching it only searches via Jikan. It would probably be best to search the database first and then hit Jikan. This would probably tie in well with #14 in some fashion.

Search Engine Optimization

There's a LOT that goes into this, but some basic stuff...

  • Series descriptions
  • Series keywords
  • Sitemap
  • OpenGraph preview

Domain Name

Ideally the domain name would be RateTheDub.com, which as of this writing is available. Dub.moe would also be neat, but seems to be owned already.

Vote Deduplication/Rate Limiting

Users should only be able to vote for a dub once. Without a user account system this does get somewhat tricky, but sites like Strawpoll seem to be able to work with it.

Tied to this is also making sure that the ONLY way to make POST requests to vote is via the website. Some kinda of CSRF or snowflake system is required.

Database Change Requests

Splitting this off from #13, it would be nice if there was a button that allowed users to report an issue on a series.
A button that opens a form which has a few preset options for issues, and then a separate page (probably un-linked) where you can view a list of reported issues and we can fix them.

Goatcounter 400 error

When POST-ing the page hits from the server the Goatcounter API is returning with a 400 error.

Show a list of voice actors

Show a list of the voice actors for the dub in the current language, with links to their MAL pages. This will likely require database changes so is related to #2.

Switch site/series language

It'd be quite nice to be able to switch the language of the whole site, or of just the series you're looking at so you can view different things or override the locale guesser.

Database Schema

Current thought is something like below.
Further considerations include DB change requests, advertisements, and featured/popular dubs.

Anime

Anime series as pulled from MAL/Jikan

  • mal_id:integer:primary The MyAnimeList ID is used as the primary key
  • title:string:unique Title as given by MAL
  • title_tr:map Map of languages to different titles
  • dubbed_in:array:string Array of language codes that this series is known to be dubbed in
  • streaming:map Map of streaming services and links that this dub is available on

Dub Votes

Votes cast on the dub of series by users.
Note: This is prumary key'd on BOTH mal_id and language together.

  • mal_id:references:anime:primary MAL ID of the show
  • language:string:primary Language code of the dub being voted on
  • user_ip:string IP that this vote was cast from #3
  • user_snowflake:string Snowflake that this vote was cast with #3

Visual Design

I have a vague visual aesthetic in my head, but nothing concrete. Other considerations like mobile and maybe a dark mode are important too.

Undo Vote

Add an Undo button to the "vote recorded" popup flash that allows the user to undo the vote they just did.

Alternatively make the "you've already voted" button do that. I'm not 100% sure I want to allow arbitrary undos though.

Links to streaming services

Having links to the place you can stream a series in a certain language would be really helpful for many users.

Set IP properly from X_FORWARDED_FOR

Currently it uses the raw request_ip which will be incorrect in production due to proxies and load balancers, so instead the IP should be parsed from the X_FORWARDED_FOR header

Language and Framework

Choosing a language and framework is always hard...
I am almost certain I'm going to go with Elixir with Phoenix, since I know it, I like it, and it has most of the features I'm after.

But there are other good options (in order of my consideration)

  • Ember
  • Gatsby
  • F# with Bolero or Fable
  • Preact
  • Django
  • Rails (or Sinatra)

Make the repo public

I already have everything licensed under Apache 2, so I should make the repo public at some point. Likely alongside the beta release.

Logo and Branding

Having some kind of brand identity for the site would be a good idea, though I'm not really sure where to go with this since it's very open-ended.

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.