Important
As of now, this project is marked as completed and will only receive minor changes, as I am busy with other work. If there are any fellow maintainers who can help improve this project further, please reach out to me. Peace out šļø
This project is in development as for now.
Welcome to the Awesome Anime Website, your go-to destination for watching anime without any annoying ads. This project is created for educational purposes only.
š Dive into the captivating world of anime without interruptions! This website provides a seamless streaming experience, free from distracting advertisements. Enjoy your favorite anime series and movies with ease.
- Next.js app router with TypeScript for easier adaptation and faster learning for beginners.
- Explore a vast anime library without any popups or ads.
- Get information while hovering over anime images (using popovers).
- Minimal design to keep the application lightweight.
- SEO implementation that allows users to search "AniFire" on Google and find the site.
- Google Images can scrape images and videos from the AniFire website.
- Toggle between subbed and dubbed anime without page reloading (using Zustand for state management).
- Improved error handling (as of the latest update).
- Users can watch their favorite shows without interruption.
- Auto skip intro and outro options on player.
- Watch history feature to make it easier for users to pick up where they left off (using Zustand with storage persistence).
- Continue watching anime from where you left off (stored in localStorage).
- Responsive design that works on all screen sizes (using TailwindCSS to simplify stylingābecause I love TailwindCSS).
- Reusable components (I've created many components using ShadCN, not all of them, but enough to save timeādonāt worry, I know how to build them from scratch š ).
- Since Iām working solo on this project, implementing new features takes some time (would love if someone could help).
-
Next.js:
- The entire application is wrapped with Next.js (using the
app/
router) and TypeScript. - Why use Next.js instead of Vite-ReactJS or CRA (Create React App)?: While Vite and CRA are great choices, I chose Next.js for its built-in features like server-side rendering (SSR) and static site generation (SSG). Another key reason is to leverage
next-auth
for authentication and its seamless integration with React.
- The entire application is wrapped with Next.js (using the
-
TailwindCSS:
- My relationship with TailwindCSS has deepened ā¤ļø (One-sided love).
- While I prefer using Tailwind for its utility-first approach, I can still work with plain CSS, SCSS, or frameworks like Bootstrap when needed.
-
Zustand (for application state management):
- Zustand provides a simple and lightweight state management solution without requiring the wrapping of the entire application in providers (like React Context does). It allows for global state management in a very intuitive way.
- Persist state on
localStorage
:- For:
- Storing the userās watch history, including video progress and playback timeline.
- Storing UI preferences like sidebar menu toggle states.
- Storing player settings such as "Skip Intro," "Skip Outro," and "Auto Next" options.
- For:
-
TanStack Query (formerly React Query):
- TanStack Query is a data-fetching library that allows for efficient and powerful data synchronization with the server, offering features like caching, pagination, and automatic re-fetching.
- Used
useMutation
for making changes to data (e.g., on paginated data or API requests) like search results, categories, and genres. - Mostly used
useQuery
for fetching data efficiently and caching the results to minimize unnecessary API calls. - Also used
useQueries
to fetch data from multiple APIs simultaneously (such as fetching carousel data and scheduled anime data).
-
ShadCN UI Components:
- ShadCN is a utility-first, highly customizable set of React UI components designed to improve development speed and consistency. It provides ready-made components like buttons, modals, etc.
-
ArtPlayer:
- ArtPlayer is a highly customizable HTML5 video player designed for streaming media. It is used as the core player for AniFire to stream anime episodes without interruptions and offer a smooth playback experience.
-
React Icons:
- React Icons is a library that provides a collection of SVG icons that are customizable and easy to use within React applications. These are used to display various icons in the AniFire UI.
-
Prettier Formatter:
- Prettier is an opinionated code formatter that helps maintain consistent code formatting throughout the project, making the code easier to read and ensuring consistency across developers' contributions.
-
Clone the repository.
git clone https://github.com/Zeddxx/ani-fire.git
-
Install the npm or yarn or pnpm.
npm install or yarn add or pnpm install
-
Add the
.env
on root directory.[!TIP] path: root to anifire outside the app directory
## This should be a aniwatch api of ritesh repo (without last slash /)
NEXT_PUBLIC_BASE_ANIME_URL=E.G -> base_url/api/v2/hianime
- Add Dashboard
- User authentication.
- Add commenting feature
- Add nested comments.
- Implement admin dashboard functionality.
- Share buttons.
- Added Dub functionality.
- Episode next and previous button.
- Theater mode
- Focus mode.
- Store users wishlist anime into database.
- SEO implementation.
- ghostRitesh for aniwatch api.
- HiAnime š.