Skip to content

kovs713/fullstack-streaming-platform

Repository files navigation

Fullstack Anime Streaming Platform

License: MIT Next.js Spring Boot MongoDB

Modern full-stack anime streaming platform that provides an immersive experience for anime enthusiasts. Inspired by platforms like AnimeLib, it combines cutting-edge web technologies to deliver seamless anime discovery, streaming, and community features.

Features

Streaming & Content

  • Anime Streaming: Watch anime using embedded players from Kodik and SovetRomantica
  • Comprehensive Anime Dataset: Prefetched and curated using Anilist and Shikimori APIs
  • Episode Management: Detailed episode information and viewing capabilities

Community & Interaction

  • Comments & Reviews: Comment on anime titles and individual episodes, write detailed reviews
  • Personal Lists: Add anime to custom lists (e.g., "Plan to Watch", "Watching", "Completed")
  • User Profiles: Personalized experience with user-specific content

Security & Authentication

  • JWT Authentication: Secure JWT-based authorization system
  • OAuth2 Ready: Planned OAuth2 integration for third-party authentication
  • Role-based Access: Secure access controls for different user types

Advanced Discovery

  • Smart Filtering: Filter anime by tags, genres, ratings, types, and more
  • Search Functionality: Powerful search with advanced filters
  • Recommendation System: Personalized anime recommendations

Performance & Deployment

  • Containerized Architecture: Docker Compose for easy deployment
  • GraphQL API: Efficient data fetching with GraphQL
  • Redis Caching: Optimized performance with Redis caching layer
  • Real-time Features: Planned real-time notifications and updates

Tech Stack

Frontend

  • Next.js 14: React-based framework with App Router
  • TanStack Query: Advanced data fetching and state management
  • ShadCN UI: Accessible and customizable UI components
  • Tailwind CSS: Utility-first CSS framework for rapid styling
  • GraphQL Client: Apollo Client for efficient API communication
  • React Hook Form: Form state management with validation
  • Zod: TypeScript-powered schema validation

Backend

  • Java Spring Boot 3: Robust backend framework
  • MongoDB: NoSQL database for flexible data storage
  • GraphQL: Flexible API queries with type safety
  • Redis: In-memory data structure store for caching
  • Spring Security: Comprehensive security framework

Infrastructure

  • Docker & Docker Compose: Containerized deployment

Quick Start

Prerequisites

  • Node.js (v18 or higher)
  • Java 17 or higher
  • Docker and Docker Compose
  • MongoDB (or Docker for containerized setup)

Installation

  1. Clone the repository
git clone <repository-url>
cd fullstack-anime-platform
  1. Set up environment variables
# Create environment files for backend and frontend
cp backend/.env.example backend/.env.local
cp frontend/.env.example frontend/.env.local
  1. Start the application with Docker Compose
docker-compose up --build
  1. Alternatively, run services separately

For Backend (in /backend directory):

./mvnw spring-boot:run

For Frontend (in /frontend directory):

cd frontend
npm install
npm run dev

Environment Variables

Backend (.env.local)

SPRING_DATA_MONGODB_URI=mongodb://localhost:27017/fullstack-anime-platform
SPRING_DATA_MONGODB_DATABASE=fullstack-anime-platform
JWT_SECRET=your-jwt-secret-key
JWT_EXPIRATION=86400000
REDIS_HOST=localhost
REDIS_PORT=6379

Frontend (.env.local)

NEXT_PUBLIC_API_URL=http://localhost:8080/graphql
NEXT_PUBLIC_BASE_URL=http://localhost:3000

Project Structure

/workspace/
├── backend/                    # Spring Boot application
│   ├── src/main/java/          # Java source code
│   ├── src/main/resources/     # Configuration files
│   ├── pom.xml                 # Maven dependencies
│   └── Dockerfile              # Backend container configuration
├── frontend/                   # Next.js application
│   ├── src/                    # Source code
│   ├── public/                 # Static assets
│   ├── package.json            # Node.js dependencies
│   └── Dockerfile              # Frontend container configuration
├── docker-compose.yaml         # Container orchestration
├── anime-data-set.json         # Anime dataset
├── reviews-data-set.json       # Reviews dataset
├── comments-data-set.json      # Comments dataset
├── users-data-set.json         # Users dataset
├── genres-data-set.json        # Genres dataset
├── tags-data-set.json          # Tags dataset
└── review_votes-data-set.json  # Review votes dataset

API Documentation

The application uses GraphQL for API communication. The GraphQL endpoint is available at:

  • Development: http://localhost:8080/graphql
  • Production: <base-url>/graphql

Available GraphQL Operations:

  • Queries: Fetch anime, users, reviews, comments, and other data
  • Mutations: Create, update, and delete operations
  • Subscriptions: Real-time updates (planned feature)

Deployment

Docker Compose Deployment

docker-compose up -d --build

Production Build

# Build frontend
cd frontend
npm run build

# Build backend
cd backend
./mvnw clean package -Pprod

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Inspired by AnimeLib and similar platforms
  • Built with data from Anilist and Shikimori APIs
  • Special thanks to the open-source community for the amazing tools and libraries used in this project

About

Full-stack app (course work). Inspired by AnimeLib, includes advanced anime sorting, forums, personal lists, reviews, comments, and video-player integrations. Built with Next.js, TanStack Query, ShadCN UI, Tailwind CSS on the frontend, and Spring Boot with MongoDB, Redis, GraphQL on the backend.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages