Skip to content

Latest commit

 

History

History
75 lines (44 loc) · 4.35 KB

README.md

File metadata and controls

75 lines (44 loc) · 4.35 KB

Web Comic Vault

Any serious fan of web comics can attest to the drudgery of having to visit 10 different websites to get their daily fix, and having to remember every separate web comic's update schedule (if any). Adding to the agony is the fact that new strips are often released late, or scheduled release dates may be skipped entirely.

Basic functionality

Note: Non-essential mechanisms are marked NTH for Nice-To-Have.

This project aims to solve all of these problems as best as it can. Several mechanisms pull in all available new strips from all available comics, and notify users of what's coming in.

While the website is intended for registered users, freely available access is given to the whole archive of available comics.

Premium functionality

Premium functionality is free, but requires registration.

Favorites

Registered users can manage a list of favorite comics, so that they can suppress the noise of non-favorite comics in their news feed. The distribution of the votes determines ranking, and may influence some randomly generated feeds or pages for all users. In the future, conceptually related comics may be suggested in an ad-like style (NTH).

Voting

Registered users can vote for a specific strip, to let others know that they strongly endorse it. There are currently three types of votes for strips:

  • like: users can vote once for every single strip they like.
  • best: users can only vote for 1% of strips per comic, signifying what they consider to be the very best ones that deserve special praise.
  • typical: users can vote for a strip that should be shown to other users considering to favorite this comic. It should focus on strips that are exemplary of the style of humor/artwork/storytelling/... that the comic intrinsically contains. Typical strips should try to represent the kind of strip the user can expect "on average".

Blitzing

Registered users can decide to blitz a comic, i.e. to read it chronologically from its oldest to its newest release. For most projects which have been running for a while, this takes a lot of time and, presumably, several reading sessions. Web Comic Vault keeps track of a user's current position, and projects the time it should take the user to finish the blitz successfully, given their current blitzing speed (NTH).

Adding new comics

New comics deserve attention too ! Registered users can vote on comics that should be in the Web Comic Vault's portfolio, but aren't yet.

Copyright notices

Proper care is taken to make sure that no copyrights, licenses, or other author's rights are violated. If the author can be contacted personally, we will ask them for their preferences regarding hotlinking, republishing rights, etc. The default is to NOT hotlink images from a comic's website, which seems like the wisest decision given this story.

Roadmap for mechanisms

Currently planned scanning mechanisms:

  • URL scanning
  • RSS feeds
  • Twitter channels (NTH)

Currently planned notification mechanisms:

  • soft alerts on the web app's home/news screen
  • Slack-like favicon changes
  • desktop notifications (NTH)
  • an own RSS feed (NTH)

REST API Objects

There are 4 objects that are available through REST routes returning JSON objects.

  • /comic : A periodical online publication of graphic art with continuity in theme, artwork, and consistent set of publishers.
  • /strip : An installment of a comic, i.e. the smallest unit of publishing possible
  • /category : The general categories in which a comic may fall.
  • /user : The object associated with a registered user, which contains settings, their favorite comics and strips, and their blitzing status for each comic. Only available with a valid authentication token in the request header

Each type of object can be accessed in 3 ways:

  • type : A JSON list of objects of the specified type, delimited to the 20 most relevant ones

  • /type/{id} : A single object in JSON

  • /type1/{id}/type2 : A list of objects of type2 which are strongly associated with the specified type1 object.

    Example: /comic/XKCD/categories returns all categories that XKCD belongs to

Notices

This MEAN stack project is a school assignment for the third year course of Web Apps at Hogeschool Gent. Its reference implementation can be found here