![Static Badge](https://img.shields.io/badge/node.js-grey?logo=nodedotjs) ![GitHub stars](https://img.shields.io/github/stars/JustAnimeCore/HiAnime-api?logo=github) ![GitHub forks](https://img.shields.io/github/forks/JustAnimeCore/HiAnime-api?logo=github) ![Static Badge](https://img.shields.io/badge/version-1.0.0-blue)
## Disclaimer 1. This `api` does not store any files , it only link to the media which is hosted on 3rd party services. 2. This `api` is explicitly made for educational purposes only and not for commercial usage. This repo will not be responsible for any misuse of it.

#

HiAnime API

>

RestFul API made with Node.js
(Checkout this anime streaming website JustAnime powered by this API)

>

Table of Contents

- [Installation](#installation) - [Local installation](#local-installation) - [Deployment](#deployment) - [Vercel](#Vercel) - [Render](#Render) - [Documentation](#documentation) - [GET Home Info](#get-home-info) - [GET Top 10 Anime's Info](#get-top-10-animes-info) - [GET Top Search](#get-top-search) - [GET Specified Anime's Info](#get-specified-animes-info) - [GET Random Anime's Info](#get-random-animes-info) - [GET Categories Info](#get-categories-info) - [GET Producer's & studio's Anime](#get-anime-of-specific-producers-or-studio) - [GET Search Result's Info](#get-search-results-info) - [GET Search Suggestions](#get-search-suggestions) - [GET Anime Schedule](#get-schedule-of-upcoming-anime) - [GET Anime's Next Epiosde's Schedule](#get-schedule-of-next-episode-of-anime) - [GET Anime Qtip Info](#get-qtip-info) - [GET Anime Characters](#get-characters) - [GET Character Details](#get-character-details) - [GET Voice Actor Details](#get-voice-actor-details) - [GET Anime Stream Info](#get-streaming-info) - [GET Anime Backup Stream Info](#get-fallback-streaming-info) - [GET Anime Episodes](#get-animes-episode-list) - [GET Anime Episode's Available Servers](#get-available-servers-of-anime) - [Pull Requests](#pull-requests) - [Reporting Issues](#reporting-issues) - [Support](#support) > # Installation ## Local installation Make sure you have node installed on your device 1. Run the following code to clone the repository and install all required dependencies ```bash $ git clone https://github.com/JustAnimeCore/HiAnime-Api.git $ cd anime-api $ npm install ``` 2. Refer the [.env.example](https://github.com/JustAnimeCore/HiAnime-Api/blob/main/.env.example) file to setup `.env` file ```bash # Origins you want to allow ALLOWED_ORIGIN=,,... ``` 3. Start the server ```bash $ npm start #or npm run devStart ``` > # Deployment ### Vercel Host your own instance of anime-api on vercel [![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/JustAnimeCore/HiAnime-Api) ### Render Host your own instance of anime-api on Render. [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/JustAnimeCore/HiAnime-Api) > # Documentation ### `GET` Home info ```bash GET /api/ ``` ### Endpoint ```bash /api/ ``` > #### No parameter required ❌ #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "spotlights": [ { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "description": string, "tvInfo": { "showType": string, "duration": string, "releaseDate": string, "quality": string, "episodeInfo": [object] } }, {...} ], "trending": [ { "id":string, "data_id": number, "number": number, "poster": string, "title": string, "japanese_title": string, } {...} ], "today":[ "schedule":[ { "id":string, "data_id":number, "title":string, "japanese_title":string, "releaseDate":string, "time":string, "episode_no":number, },{...} ] ], "topAiring":[ { "id":string, "data_id":number, "poster":string, "title":string, "japanese_title":string, "description":string, tvInfo:[object] } ], "mostPopular":[ { "id":string, "data_id":number, "poster":string, "title":string, "japanese_title":string, "description":string, tvInfo:[object] }, "mostFavorite":[ { "id":string, "data_id":number, "poster":string, "title":string, "japanese_title":string, "description":string, tvInfo:[object] } ], "latestCompleted":[ { "id":string, "data_id":number, "poster":string, "title":string, "japanese_title":string, "description":string, tvInfo:[object] } ], "latestEpisode":[ { "id":string, "data_id":number, "poster":string, "title":string, "japanese_title":string, "description":string, tvInfo:[object] } ], "genres":[ string, string, string, ... ] } } ``` ### `GET` Top 10 anime's info ```bash GET /api/top-ten ``` ### Endpoint ```bash /api/top-ten ``` > #### No parameter required ❌ #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/top-ten"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ "topTen":[ "today":[ { "id":string, "data_id": number, "number": number, "name": string, "poster": string, "tvInfo": [Object] }, {...} ], "week":[ { "id":string, "data_id": number, "number": number, "name": string, "poster": string, "tvInfo": [Object] }, {...} ], "month":[ { "id":string, "data_id": number, "number": number, "name": string, "poster": string, "tvInfo": [Object] }, {...} ], ] ] } ``` ### `GET` Top Search ```bash GET /api/top-search ``` > #### No parameter required ❌ #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/top-search"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ { "title": string, "link": string }, {...} ] } ``` ### `GET` Specified anime's info ```bash GET /api/info ``` ### Endpoint ```bash /api/info?id={string} ``` #### Parameters | Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :-------: | :------------: | :-------: | :---------: | :---------: | :-----: | | `id` | `query` | string | anime-id | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/info?id=yami-shibai-9-17879"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "data": { "adultContent":boolean, "id":string, "data_id": number, "title": string, "japanese_title": string, "poster": string, "showType":string, "animeInfo": { "Overview": string, "Japanese": string, "Synonyms": string, "Aired": string, "Premiered": string, "Duration": string, "Status": string, "MAL Score": string, "Genres": [Object], "Studios": string, "Producers": [Object] } }, "seasons": [ { "id":string, "data_number": number, "data_id": number, "season": string, "title": string, "japanese_title": string, "season_poster": string }, {...} ], } } ``` ### `GET` Random anime's info ```bash GET /api/random ``` ### Endpoint ```bash /api/random ``` #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/random"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "data": { "adultContent":boolean, "id":string, "data_id": number, "title": string, "japanese_title": string, "poster": string, "showType":string, "animeInfo": { "Overview": string, "Japanese": string, "Synonyms": string, "Aired": string, "Premiered": string, "Duration": string, "Status": string, "MAL Score": string, "Genres": [Object], "Studios": string, "Producers": [Object] } }, "related_data":[ [ { "duration": "string", "data_id": "number", "id": "string", "title": "string", "japanese_title": "string", "poster": "string", "tvInfo": { "dub": "number", "sub": "number", "showType": "string", "eps": "number" } },{...} ] ], "recommended_data":[ [ { "duration": "string", "data_id": "number", "id": "string", "title": "string", "japanese_title": "string", "poster": "string", "tvInfo": { "dub": "number", "sub": "number", "showType": "string", "eps": "number" } },{...} ] ], "seasons": [ { "id":string, "data_number": number, "data_id": number, "season": string, "title": string, "japanese_title": string, "season_poster": string }, {...} ], } } ``` ### `GET` Categories info ```bash GET /api/ ``` ### Endpoint ```bash /api/{string}?page={number} #or /api/{string} ``` #### Parameters | Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :--------: | :------------: | :-------: | :---------: | :---------: | :-----: | | `category` | `path` | `string` | `Category` | Yes ✔️ | -- | | `page` | `query` | `number` | `Page-no.` | No ❌ | `1` | #### List of Categories - top-airing - most-popular - most-favorite - completed - recently-updated - recently-added - top-upcoming - subbed-anime - dubbed-anime - top-upcoming - genre/action - genre/adventure - genre/cars - genre/comedy - genre/dementia - genre/demons - genre/drama - genre/ecchi - genre/fantasy - genre/game - genre/harem - genre/historical - genre/horror - genre/isekai - genre/josei - genre/kids - genre/magic - genre/martial-arts - genre/mecha - genre/military - genre/music - genre/mystery - genre/parody - genre/police - genre/psychological - genre/romance - genre/samurai - genre/school - genre/sci-fi - genre/seinen - genre/shoujo - genre/shoujo-ai - genre/shounen - genre/shounen-ai - genre/slice-of-life - genre/space - genre/sports - genre/super-power - genre/supernatural - genre/thriller - genre/vampire - az-list - az-list/other - az-list/0-9 - az-list/a - az-list/b - az-list/c - az-list/d - az-list/e - az-list/f - az-list/g - az-list/h - az-list/i - az-list/j - az-list/k - az-list/l - az-list/m - az-list/n - az-list/o - az-list/p - az-list/q - az-list/r - az-list/s - az-list/t - az-list/u - az-list/v - az-list/w - az-list/x - az-list/y - az-list/z - movie - special - ova - ona - tv - music #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/most-popular?page=1"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "totalPages": number, "data": [ { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "description": string, "tvInfo": { "showType": string, "duration": string, "sub": number, "dub": number }, "adultContent":boolean, }, { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "description": string, "tvInfo": { "showType": sting, "duration": string, "sub": number, "dub": number, "eps": number }, "adultContent":boolean, }, {...} ], "totalPages":number } } ``` ### `GET` Anime of specific producers or studio ```bash GET /api// ``` ### Endpoint ```bash /api/producer/{string}?page={number} #or /api/producer/{string} ``` #### Parameters | Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :--------: | :------------: | :-------: | :---------: | :---------: | :-----: | | `producer` | `path` | `string` | `Producer` | Yes ✔️ | -- | | `page` | `query` | `number` | `Page-no.` | No ❌ | `1` | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/producer/ufotable?page=1"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "totalPages": number, "data": [ { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "description": string, "tvInfo": { "showType": string, "duration": string, "sub": number, "dub": number }, "adultContent":boolean, }, { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "description": string, "tvInfo": { "showType": sting, "duration": string, "sub": number, "dub": number, "eps": number }, "adultContent":boolean, }, {...} ], "totalPages":number } } ``` ### `GET` Search result's info ```bash GET /api/search ``` ### Endpoint ```bash /api/search?keyword={string} ``` #### Parameters | Parameter | Parameter-Type | Type | Description | Mandatory ? | Default | | :-------: | :------------: | :------: | :---------: | :---------: | :-----: | | `keyword` | `query` | `string` | `keyword` | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/search?keyword=one%20punch%20man"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "tvInfo": [Object] }, { "id":string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "tvInfo": [Object] }, {...} ] } ``` ### `GET` Search suggestions ```bash GET /api/search/suggest ``` ### Endpoint ```bash /api/search/suggest?keyword={string} ``` #### Parameters | Parameter | Parameter-Type | Type | Description | Mandatory ? | Default | | :-------: | :------------: | :------: | :---------: | :---------: | :-----: | | `keyword` | `query` | `string` | `keyword` | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/search/suggest?keyword=demon"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ { "id":"string", "data_id": number, "poster": string, "title": string, "japanese_title": string, "releaseDate": string, "showType": string, "duration": string, }, { "id":"string", "data_id": number, "poster": string, "title": string, "japanese_title": string, "releaseDate": string, "showType": string, "duration": string, }, {...} ] } ``` ### `GET` Filter Anime ```bash GET /api/filter ``` #### Endpoint ```bash /api/filter ``` #### Parameters | Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :--------: | :------------: | :-------: | :----------------------------------------------------------- | :---------: | :---------: | | `type` | `query` | string | Type of anime (e.g., `movie`, `tv`, etc.) | No ❌ | `ALL` | | `status` | `query` | string | Status of anime (e.g., `finished`, `currently_airing`, etc.) | No ❌ | `ALL` | | `rated` | `query` | string | Rating of anime (e.g., `G`, `PG`, etc.) | No ❌ | `ALL` | | `score` | `query` | string | Score rating (e.g., `1` to `10`) | No ❌ | `ALL` | | `season` | `query` | string | Season of anime (e.g., `spring`, `summer`, etc.) | No ❌ | `ALL` | | `language` | `query` | string | Language of anime (e.g., `sub`, `dub`) | No ❌ | `ALL` | | `genres` | `query` | string | Comma-separated list of genres (e.g., `action, comedy`) | No ❌ | `ALL` | | `sort` | `query` | string | Sorting method (e.g., `default`, `score`, etc.) | No ❌ | `DEFAULT` | | `page` | `query` | number | Page number for pagination | No ❌ | `1` | | `sy` | `query` | number | Start year | No ❌ | `undefined` | | `sm` | `query` | number | Start month | No ❌ | `undefined` | | `sd` | `query` | number | Start day | No ❌ | `undefined` | | `ey` | `query` | number | End year | No ❌ | `undefined` | | `em` | `query` | number | End month | No ❌ | `undefined` | | `ed` | `query` | number | End day | No ❌ | `undefined` | | `keyword` | `query` | string | Search keyword | No ❌ | `undefined` | #### Example of Request ```javascript import axios from "axios"; const params = { type: "2", // TV status: "1", // Finished rated: "5", // R+ sort: "default", page: 1, }; const resp = await axios.get("/api/filter", { params }); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "totalPages": number, "data": [ { "id": string, "data_id": number, "poster": string, "title": string, "japanese_title": string, "description": string, "tvInfo": { "showType": string, "duration": string, "sub": number, "dub": number }, "adultContent": boolean }, {...} ] } } ``` ### `GET` Anime's episode list ```bash GET /api/episodes/ ``` ### Endpoint ```bash /api/episodes/{param} ``` #### Parameters | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :------------: | :-------: | :---------: | :---------: | :-----: | | `param` | string | anime-id | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/episodes/one-piece-100"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ "totalEpisodes":number, "episodes":[ { "episode_no": number, "id": string, "data_id": number, "jname": string, "title": string, "japanese_title": string }, {...} ] ] } ``` ### `GET` Schedule of upcoming anime ```bash GET /api/schedule ``` ### Endpoint ```bash /api/schedule?date={string} ``` #### Parameters | Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :-------: | :------------: | :-------: | :---------: | :---------: | :-----: | | `date` | query | string | date | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/schedule?date=2024-09-23"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ { "id":string, "data_id":number, "title":string, "japanese_title":string, "releaseDate":string, "time":string, "episode_no":number }, {...} ] } ``` ### `GET` Schedule of next episode of Anime ```bash GET /api/schedule/ ``` ### Endpoint ```bash /api/schedule/:id ``` #### Parameters | Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :-------: | :------------: | :-------: | :---------: | :---------: | :-----: | | `id` | param | string | anime-id | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/schedule/one-piece-100"); console.log(resp.data); ``` #### Sample Response ```javascript { "success":true, "results": { "nextEpisodeSchedule":"2025-02-08 16:30:00" } } ``` ### `GET` Qtip info ```bash GET /api/qtip/ ``` ### Endpoint ```bash /api/qtip/{id} ``` #### Parameters | Parameter | Data-Type | Description | Mandatory ? | Default | | :-------: | :-------: | :---------: | :---------: | :-----: | | `param` | `number` | id | Yes ✔️ | Yes ✔️ | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/qtip/3365"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "title": string, "rating": double, "quality": string, "subCount": number, "dubCount": number, "episodeCount": number, "type": string, "description": string, "japaneseTitle": string, "Synonyms": string, "airedDate": string, "status": string, "genres": [Object], "watchLink": string } } ``` ### `GET` Characters ```bash GET /api/character/list/ ``` ### Endpoint ```bash /api/character/list/{id} ``` #### Parameters | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :------------: | :-------: | :---------: | :---------: | :-----: | | `param` | `string` | anime-id | Yes ✔️ | Yes ✔️ | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/character/list/one-piece-100"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "currentPage": number, "totalPages": number, "data": [ { "character": { "id": string, "poster": string, "name": string, "cast": string }, "voiceActors": [ { "id": string, "poster": string, "name": string }, { "id": string, "poster": string, "name": string }, {...} ] },{...} ] } } ``` ### `GET` Streaming info ```bash GET /api/stream ``` ### Endpoint ```bash /api/stream?id={string}&server={string}&type={string} ``` #### Parameters | Parameters | Parameter-Type | Type | Mandatory ? | Default | | :----------------------: | :------------: | :------: | :---------: | :-----: | | `id` , `server` , `type` | `query` | `string` | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get( "/api/stream?id=frieren-beyond-journeys-end-18542?ep=107257&server=hd-1&type=sub" ); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "streamingLink": [ { "id":number, "type": "sub", "link": { "file":string, "type":string, }, "tracks": [ { "file": string, "label": string, "kind": string, "default": boolean },{...} ], "intro": [Object], "outro": [Object], "server":string } ], "servers": [ { "type":string, "data_id": number, "server_id": number, "server_name": string }, {...} ] } } ``` ### `GET` Fallback Streaming info ```bash GET /api/stream/fallback ``` ### Endpoint ```bash /api/stream/fallback?id={string}&server={string}&type={string} ``` #### Parameters | Parameters | Parameter-Type | Type | Mandatory ? | Default | | :----------------------: | :------------: | :------: | :---------: | :-----: | | `id` , `server` , `type` | `query` | `string` | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get( "/api/stream/fallback?id=frieren-beyond-journeys-end-18542?ep=107257&server=hd-1&type=sub" ); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "streamingLink": [ { "id":number, "type": "sub", "link": { "file":string, "type":string, }, "tracks": [ { "file": string, "label": string, "kind": string, "default": boolean },{...} ], "intro": [Object], "outro": [Object], "server":string } ], "servers": [ { "type":string, "data_id": number, "server_id": number, "server_name": string }, {...} ] } } ``` ### `GET` Available servers of anime ```bash GET /api/servers/ ``` ### Endpoint ```bash /api/servers/{id} ``` #### Parameters | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :------------: | :-------: | :---------: | :---------: | :-----: | | `params` | `string` | `keyword` | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get( "/api/servers/demon-slayer-kimetsu-no-yaiba-hashira-training-arc-19107?ep=124260" ); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": [ { "type": string, "data_id": number, "server_id": number, "serverName": string }, {...}, ] } ``` ### `GET` Character Details ```bash GET /api/character/ ``` ### Endpoint ```bash /api/character/{id} ``` #### Parameters | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :------------: | :-------: | :----------: | :---------: | :-----: | | `params` | `string` | character-id | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/character/asta-340"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "data": [{ "id": "asta-340", "name": "Asta", "profile": "https://cdn.noitatnemucod.net/thumbnail/400x400/100/945515d313d02fdcd33be3085512c550.jpg", "japaneseName": "アスタ", "about": { "description": "Asta is the main protagonist of Black Clover...", "style": "

Asta is the main protagonist of Black Clover...

" }, "voiceActors": [ { "name": "Kajiwara, Gakuto", "profile": "https://example.com/profile.jpg", "language": "Japanese", "id": "gakuto-kajiwara-534" }, { "name": "Dallas Reid", "profile": "https://example.com/profile2.jpg", "language": "English", "id": "dallas-reid-892" } ], "animeography": [ { "title": "Black Clover", "id": "2404", "role": "Main", "type": "TV", "poster": "https://example.com/poster.jpg" }, { "title": "Black Clover: Sword of the Wizard King", "id": "2405", "role": "Main", "type": "Movie", "poster": "https://example.com/poster2.jpg" } ] }] } } ``` ### `GET` Voice Actor Details ```bash GET /api/actors/ ``` ### Endpoint ```bash /api/actors/{id} ``` #### Parameters | Parameter-Type | Data-Type | Description | Mandatory ? | Default | | :------------: | :-------: | :------------: | :---------: | :-----: | | `params` | `string` | voice-actor-id | Yes ✔️ | -- | #### Example of request ```javascript import axios from "axios"; const resp = await axios.get("/api/actors/gakuto-kajiwara-534"); console.log(resp.data); ``` #### Sample Response ```javascript { "success": true, "results": { "data": [{ "id": "gakuto-kajiwara-534", "name": "Kajiwara, Gakuto", "profile": "https://cdn.noitatnemucod.net/thumbnail/400x400/100/945515d313d02fdcd33be3085512c550.jpg", "japaneseName": "梶原岳人", "about": { "description": "Kajiwara Gakuto is a Japanese voice actor...", "style": "

Kajiwara Gakuto is a Japanese voice actor...

" }, "roles": [ { "anime": { "title": "Black Clover", "poster": "https://example.com/poster.jpg", "type": "TV", "year": "2017", "id": "black-clover" }, "character": { "name": "Asta", "profile": "https://example.com/asta.jpg", "role": "Main" } }, // ... more roles ... ] }] } } ``` > ### Pull Requests - Pull requests are welcomed that address bug fixes, improvements, or new features. - Fork the repository and create a new branch for your changes. - Ensure your code follows our coding standards. - Include tests if applicable. - Describe your changes clearly in the pull request, explaining the problem and solution. > ### Reporting Issues If you discover any issues or have suggestions for improvement, please open an issue. Provide a clear and concise description of the problem, steps to reproduce it, and any relevant information about your environment. > ### Support > > If you like the project feel free to drop a star ✨. Your appreciation means a lot.

Made by JustAnime 🫰