MyAnimeTimeline and Kuristina


This article has been sitting in my drafts for a while now, I decided to add some minor details and publish it. Apologies if it might seem incomplete.

One day I was looking through the MyAnimeList (MAL) account of mine and I've noticed that I've specified the start and finish for every single title I've watched. Now that isn't really impressive, but noone else using MAL actually does that.

I immediately thought that it would be neat to map all of the titles I've watched on a timeline to see how long it took me to complete each one (I'm known to take up to a year to complete certain series). Once I got the basic demo running, I decided to add a couple more features to the prototype and make it public. This is how MyAnimeTimeline was born and, as a side product, I made a small API tool called Kuristina. Find out more about both of them below.


You can try the MyAnimeTimeline webapp to see the tool in action. You will need a MyAnimeList account of course, or you could just try my username: Timbo_KZ. The source code can be found on its GitHub. Below you can see a screencap of what it looks like when you use my account.

MyAnimeTimeline with Timbo_KZ's account.

Since most people don't actually specify their start and finish dates, the app has to fallback to some less accurate timestamps, such as the date of last update. This makes the timeline look a bit wonky if the user has made a lot of updates on a single day, or, a more likely scenario, if they added a bunch of titles when they've created their account.

Fetching anime and manga lists using Kuristina

While developing MyAnimeTimeline, I realised that MAL website doesn't support CORS. To help aid my own projects and help out other developers, I hosted a simple API on Heroku that takes raw data from MAL and makes it a bit more structured. The API is called Kuristina and you can find more information, including usage instructions, on its GitHub page. Kuristina also has a Node wrapper.

If you found this post useful, feel free to like and share: