A comprehensive Asian media streaming platform supporting anime, Korean anime, Chinese anime, Japanese dramas, Chinese dramas, and Korean dramas.
- Multi-Content Support: Browse and stream Anime, K-Anime, C-Anime, J-Drama, C-Drama, and K-Drama
- Advanced Search: Filter content by genre, type, and search by title
- User Authentication: Secure signup/login with session management
- Personal Watchlist: Track your progress and manage your watchlist
- Flexible Video Player: Support for YouTube, Vimeo, and custom embed sources
- Responsive Design: Beautiful purple-themed UI that works on all devices
- Dark Mode Support: Automatically adapts to system preferences
- Blog & News: Read the latest anime news and reviews
- Frontend: Next.js 16.3 with React 19
- Language: TypeScript 5.0
- Styling: Tailwind CSS 4.0
- Database: SQLite with Prisma ORM 5.22
- Authentication: NextAuth.js 4.24
- Password Hashing: bcryptjs
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone https://github.com/ColinGamez/ZingAnime.git cd ZingAnime/zinganime -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Edit
.env.localand add:DATABASE_URL="file:./dev.db" NEXTAUTH_SECRET="your-secret-key-here" NEXTAUTH_URL="http://localhost:3000"
-
Set up the database
npx prisma migrate dev --name init npx prisma generate
-
Seed the database with sample data
node prisma/seed.js
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
- Email: demo@zinganime.com
- Password: password123
zinganime/
├── prisma/
│ ├── schema.prisma # Database schema
│ ├── seed.js # Database seed script
│ └── migrations/ # Database migrations
├── src/
│ ├── app/
│ │ ├── api/ # API routes
│ │ ├── catalog/ # Catalog page
│ │ ├── watchlist/ # Watchlist page
│ │ ├── blog/ # Blog page
│ │ ├── watch/ # Video player page
│ │ ├── login/ # Login page
│ │ ├── signup/ # Signup page
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Home page
│ ├── components/
│ │ ├── Navigation.tsx # Navigation component
│ │ ├── VideoPlayer.tsx # Video player component
│ │ └── SessionProvider.tsx # Auth provider
│ ├── lib/
│ │ └── prisma.ts # Prisma client
│ └── types/
│ └── next-auth.d.ts # TypeScript types for NextAuth
├── public/ # Static assets
└── package.json
The application uses the following main models:
- User: User accounts with authentication
- Content: Anime/drama entries with metadata
- Genre: Content categories
- Episode: Individual episodes with video sources
- VideoSource: Multiple streaming sources per episode
- Watchlist: User's personal watchlist
- BlogPost: Blog articles and news
ZingAnime uses NextAuth.js for authentication with:
- Credentials provider (email/password)
- JWT session strategy
- Secure password hashing with bcryptjs
- Protected API routes
Edit prisma/schema.prisma and update the Content model type field, then update the corresponding types in the frontend.
Modify the Tailwind CSS configuration in src/app/globals.css and component styles.
Add new video sources in the VideoSource model and update the VideoPlayer component to handle new source types.
- Push your code to GitHub
- Import the project in Vercel
- Add environment variables:
DATABASE_URL(use a production database like PostgreSQL)NEXTAUTH_SECRET(generate a secure random string)NEXTAUTH_URL(your Vercel domain)
- Deploy!
Ensure you:
- Use a production database (PostgreSQL recommended)
- Set secure environment variables
- Build the project:
npm run build - Start the production server:
npm start
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLintnode prisma/seed.js- Seed database with sample data
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
- Built with Next.js
- Styling with Tailwind CSS
- Database by Prisma
- Authentication by NextAuth.js
For support, email colingamez@example.com or open an issue in the GitHub repository.
Made with ❤️ for Asian media enthusiasts