Anicard

2018-04-05 | 2 min | 319 words
in programming | tagged rust
Contents [[object]]

A project that I have been working on for the last couple of months has come to fruition. Yes, for once, I actually completed a side project! Check it out here in the repo.

It is in three major parts:

kitsu.rs is a library used to pull from Kitsu. This library is actually not mine but I contributed to it and it is a big part of the project. Big thanks to @zeyla the maintainer.

anicard is a library that generates nice looking summary cards for anime and manga using the data it got from kitsu.rs. This is the most important part of the project and took the longest.

anicard-rocket wraps around anicard and provides a nice frontend using Rocket

Overall it was a fun project. I got to work more with Rust it's whole ecosystem which I continually find more and more pleasant. Of course I still have my share of fighting the borrow checker, but I have found that promotes good practices and increases code quality. And when it doesn't it is easy (if less efficient) to just .clone() and keep going.

Things of note:

  • When using Rocket in a Docker container specify:
ENV ROCKET_ADDRESS=0.0.0.0
ENV ROCKET_PORT=8080 #Or whatever
ENV ROCKET_ENV=prod
  • Kitsu changes their API a lot. And breaks it's own conventions.
  • Serde is amazing and the Value enum is magical.

Edit 1:

After getting some feedback from friends I showed it too I spent a couple of days implementing some new features. There is now a "similar results" section in case you typed something wrong, or wanted something slightly different. Also cleaned up the UI and added a footer and the title. The best minor feature is OpenGraph support, so now you get a nice little preview when posting the link on social media.