[!WARNING]
The API used to fetch data has been in a degraded-state for quite a while. Because of this, requests are limited to 30 requests per minute instead of it's original 90. The web application uses prefetching to simulate a performant website, but because of this, you can quite easily reach the rate limit. Be mindful of hovering over anything that could redirect you.Note: for your convenience, the remaining rate limit gets logged into the console. With this you can also observe how the web application prefetches data.
A full-stack web application for browsing and tracking manga using the AniList API. Built with SvelteKit, Drizzle ORM, and SQLite. Made for me to learn Svelte/SvelteKit (and it's ecosystem).
SvelteKit in itself isn't a full-stack framework, but making it one is very easy. In MVC context, SvelteKit only makes up the View and Controller aspects of it, but by adding Drizzle ORM you can easily create schemas and a database, meaning you have fulfilled the Model requirement of the MVC pattern.
[!IMPORTANT]
Make sure to seed the database. No user authentication was implemented because of time-constraints, so instead, one user gets seeded into the database and you are automatically "logged in" into this user. If you don't do this, then you won't be able to save manga to your list.
Clone the repository
Install dependencies:
npm install
cp .env.example .env
npm run db:push
npm run db:seed
npm run dev
The AniList API has the following limitations:
Because of these limitations, the 50 most popular manga (aka the front page of the browsing tab) have been turned into mock data. If the user visits a manga which exists in the mock data, then it will load that instead of fetching to the public API.
For your convenience, the remaining rate limit gets logged into the console. With this you can also observe how the web application prefetches data.