- Overview
- Features
- Tech Stack
- Setup and Installation
- Usage
- Environment Variables
- Advanced Features
- Challenges Faced
- Known Bugs
- Future Improvements
- Links
C-Anime Platform is a comprehensive web application designed for anime enthusiasts. It allows users to find their favorite anime, add them to a personalized watchlist, leave comments, like or dislike anime, and much more. This project is built using React and TypeScript, leveraging various APIs and Firebase for data management and authentication.
-
User Authentication
- Secure Firebase authentication with options for Google sign-in and password reset.
-
Anime Search and Explore
- Search for anime using the search bar or explore new anime through carousels on the homepage.
-
Anime Details
- View detailed information about an anime, including trailers and manga links.
- Perform actions such as liking, disliking, commenting, and adding to the watchlist.
-
Watchlist Management
- Add anime to your watchlist.
- Manage your watchlist by removing anime or marking them as watched.
-
Real-time Comments
- Leave live comments on anime pages, fostering a community atmosphere.
-
Responsive Design
- A responsive layout ensures the platform works seamlessly across different devices.
-
Interactive UI
- Smooth interactions and dynamic content updates enhance the user experience.
- Frontend: React, TypeScript, HTML, CSS
- Libraries: Firebase, React Router, React Icons, Axios, Lodash, Swiper, styled-components, @mui/material
- State Management: React State and Context API
- Backend: Firebase for authentication and real-time data storage
- APIs: AniList and Jikan
To set up and run the project locally, follow these steps:
-
Clone the repository from GitHub:
git clone https://github.com/DanielYehezkely/c-anime
-
Navigate to the project directory:
cd c-anime-platform
-
Install the necessary dependencies:
npm install
-
Set up Firebase configuration:
- Create a
.env
file in the root directory. - Add your Firebase configuration variables (see Environment Variables).
- Create a
-
Start the development server:
npm start
-
Open the app in your web browser:
- Visit
http://localhost:3000
- Visit
-
Home Page:
- Browse through carousels to explore new anime.
- Use the search bar to find specific anime.
-
User Authentication:
- Login or sign up to access personalized features.
- Use Google sign-in or reset your password if needed.
-
Anime Details:
- Click on an anime to view detailed information.
- Like, dislike, or comment on the anime.
- Add anime to your watchlist.
-
Watchlist Management:
- Access the watchlist page to manage your watchlist.
- Remove anime or mark them as watched.
The application requires a .env
file to store environment-specific configurations.
-
Create a
.env
file:- Copy the provided
.env.template
file to.env
:cp .env.template .env
- Copy the provided
-
Edit the
.env
file:- Fill in the required environment variables. Below are examples of variables you might need:
VITE_API_KEY=YOUR_FIREBASE_API_KEY
VITE_AUTH_DOMAIN=YOUR_FIREBASE_AUTH_DOMAIN
VITE_PROJECT_ID=YOUR_FIREBASE_PROJECT_ID
VITE_STORAGE_BUCKET=YOUR_FIREBASE_STORAGE_BUCKET
VITE_MESSAGING_SENDER_ID=YOUR_FIREBASE_MESSAGING_SENDER_ID
VITE_APP_ID=YOUR_FIREBASE_APP_ID
VITE_MEASUREMENT_ID=YOUR_FIREBASE_MEASUREMENT_ID
- Fill in the required environment variables. Below are examples of variables you might need:
-
Real-time Data Synchronization:
- The app syncs user comments, likes, and watchlist in real-time using Firebase.
-
Enhanced UI/UX with MUI:
- The app uses Material-UI for a polished and responsive user interface.
-
Debounced Actions:
- Debounced actions for likes and dislikes to optimize performance and avoid redundant updates.
-
Handling API Data:
- Ensuring seamless integration and data consistency when fetching anime data from AniList and Jikan APIs.
-
State Management:
- Managing state across various components and ensuring real-time updates for a responsive user experience.
-
Cross-Origin Resource Sharing (CORS) Issues:
- We encountered CORS issues when making API requests directly to the MyAnimeList API.
-
Customizing MUI Components with TypeScript:
- Customizing MUI components using TypeScript was difficult due to complex types and styling conflicts with custom CSS modules.
- Responsive Layout: Certain components may not render optimally on very small screens. Improvements are planned for better mobile support.
- API Rate Limits: Occasionally, API rate limits can cause delays in fetching anime data during peak usage.
-
Enhanced Mobile Support:
- Improve the responsive design for better usability on mobile devices.
-
User Roles and Permissions:
- Extend the authentication system to support different user roles and permissions.
-
Detailed Analytics and Reporting:
- Add comprehensive analytics and reporting features to provide insights into user activities and preferences.
-
Admin Panel:
- Implement an admin panel for managing user data, comments, and anime listings.
- GitHub Repository: C-Anime
- Live Deployment: Netlify Link