Lukas Pupka-Lipinski d3472c2c92 Update Test_TODO.md - mark all implemented test categories as completed
All major test categories have been implemented:
 Authentication & Security (unit, integration, E2E)
 Health & System Monitoring
 Anime & Episode Management
 Database & Storage Management
 CLI Tool Testing
 Miscellaneous Components (env config, error handling, modular architecture)
 Test Infrastructure (pytest configuration, fixtures, directory structure)

Comprehensive test suite now covers all requirements from the original checklist.
2025-10-06 11:24:34 +02:00
2025-05-17 21:31:16 +02:00
2025-09-29 09:17:13 +02:00
2025-10-05 21:42:08 +02:00
2025-10-05 22:22:04 +02:00
2025-09-29 09:17:13 +02:00
2025-10-05 21:42:08 +02:00
2025-10-05 21:42:08 +02:00
2025-09-29 09:17:13 +02:00
2025-09-28 08:52:11 +02:00
2025-05-31 20:46:30 +02:00
2025-10-05 22:22:04 +02:00
2025-10-05 22:22:04 +02:00

AniWorld - Anime Series Management System

A powerful anime series management system that helps you track, organize, and download your favorite anime series. Recently migrated from Flask to FastAPI for improved performance and modern API capabilities.

🚀 Features

Core Functionality

  • Series Tracking: Automatically detect missing episodes in your anime collection
  • Smart Downloads: Queue-based download system with progress tracking
  • File Organization: Automatic file scanning and folder structure management
  • Search Integration: Search for anime series across multiple providers
  • Real-time Updates: Live progress updates via WebSocket connections

Web Interface

  • Modern UI: Clean, responsive web interface with dark/light theme support
  • Download Queue: Visual download queue management
  • Progress Tracking: Real-time download and scan progress
  • Mobile Support: Fully responsive design for mobile devices

API & Integration

  • FastAPI Backend: High-performance async API with automatic documentation
  • RESTful API: Complete REST API for programmatic access
  • OpenAPI Documentation: Interactive API documentation at /docs
  • Authentication: Secure master password authentication with JWT tokens

🎯 Recent Migration: Flask → FastAPI

This project has been successfully migrated from Flask to FastAPI, bringing significant improvements:

Performance Benefits

  • Async Support: Native async/await for better concurrency
  • Faster Response Times: Up to 2-3x performance improvement
  • Better Resource Utilization: More efficient handling of concurrent requests

Developer Experience

  • Automatic Documentation: Built-in OpenAPI/Swagger documentation
  • Type Safety: Full request/response validation with Pydantic
  • Modern Standards: OpenAPI 3.0 compliance and JSON Schema validation
  • Better Error Handling: Structured error responses with detailed information

API Improvements

  • Interactive Documentation: Test API endpoints directly from /docs
  • Schema Validation: Automatic request/response validation
  • Better Error Messages: Detailed validation errors with field-level feedback

🛠️ Installation & Setup

Prerequisites

  • Python 3.11+
  • Conda package manager
  • Windows OS (currently optimized for Windows)

Quick Start

  1. Clone the Repository

    git clone <repository-url>
    cd Aniworld
    
  2. Create and Activate Conda Environment

    conda create -n AniWorld python=3.11
    conda activate AniWorld
    
  3. Install Dependencies

    pip install -r requirements.txt
    
  4. Set Environment Variables

    # Set your master password (will be hashed automatically)
    set MASTER_PASSWORD=your_secure_password
    
  5. Start the FastAPI Server

    # Development mode with auto-reload
    uvicorn src.server.fastapi_app:app --host 127.0.0.1 --port 8000 --reload
    
    # Or use the VS Code task: "Run FastAPI Server"
    
  6. Access the Application

Alternative: Using VS Code Tasks

If you're using VS Code, you can use the pre-configured tasks:

  • Ctrl+Shift+P → "Tasks: Run Task" → "Run FastAPI Server"

🔧 Configuration

Environment Variables

  • MASTER_PASSWORD - Your master password (will be hashed automatically)
  • MASTER_PASSWORD_HASH - Pre-hashed password (alternative to MASTER_PASSWORD)
  • JWT_SECRET_KEY - Secret key for JWT token signing (auto-generated if not set)
  • LOG_LEVEL - Logging level (DEBUG, INFO, WARNING, ERROR)

Directory Structure

Aniworld/
├── src/
│   ├── core/                 # Core business logic
│   │   ├── SeriesApp.py     # Main application controller
│   │   ├── entities/        # Data models
│   │   └── providers/       # Content providers
│   ├── server/              # FastAPI server
│   │   ├── fastapi_app.py   # Main FastAPI application
│   │   └── web/             # Web interface and controllers
│   └── infrastructure/      # Infrastructure components
├── data/                    # Application data and databases
├── logs/                    # Application logs
└── requirements.txt         # Python dependencies

🌐 API Usage

Authentication

  1. Login to get JWT token:

    curl -X POST "http://localhost:8000/auth/login" \
         -H "Content-Type: application/json" \
         -d '{"password": "your_master_password"}'
    
  2. Use token in requests:

    curl -X GET "http://localhost:8000/api/anime/search?query=naruto" \
         -H "Authorization: Bearer your_jwt_token_here"
    

Key Endpoints

  • Authentication: /auth/login, /auth/verify, /auth/logout
  • System: /health, /api/system/config
  • Anime: /api/anime/search, /api/anime/{id}
  • Episodes: /api/episodes/{id}, /api/anime/{id}/episodes
  • Downloads: /api/download, /api/add_series

For complete API documentation, visit /docs when the server is running.

🖥️ Web Interface

Main Features

  • Dashboard: Overview of your anime collection and missing episodes
  • Search: Find and add new anime series to track
  • Downloads: Manage download queue and monitor progress
  • Settings: Configure application preferences

Responsive Design

The web interface is fully responsive and supports:

  • Desktop browsers (Chrome, Firefox, Edge, Safari)
  • Mobile devices (iOS Safari, Android Chrome)
  • Tablet devices
  • Dark and light themes

🔍 Troubleshooting

Common Issues

  1. Server won't start

    • Check that the AniWorld conda environment is activated
    • Verify all dependencies are installed: pip install -r requirements.txt
    • Check for port conflicts (default: 8000)
  2. Authentication errors

    • Verify the master password is set correctly
    • Check environment variables are properly configured
    • Clear browser cache/cookies
  3. Import errors

    • Ensure all required packages are installed
    • Check Python path configuration
    • Verify conda environment is activated

Logs

Application logs are stored in the logs/ directory:

  • aniworld.log - General application logs
  • errors.log - Error-specific logs
  • auth_failures.log - Authentication failure logs

🚦 Development

Running in Development Mode

# With auto-reload for development
uvicorn src.server.fastapi_app:app --host 127.0.0.1 --port 8000 --reload --log-level debug

Testing

# Run all tests
python -m pytest tests/ -v

# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html

Code Quality

# Format code
black src/
isort src/

# Lint code
pylint src/
flake8 src/

📚 Documentation

  • API Documentation: Available at /docs (Swagger UI) and /redoc (ReDoc)
  • Migration Guide: See API_DOCUMENTATION.md for detailed migration information
  • FastAPI Specific: See src/server/README_FastAPI.md for server-specific documentation

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

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

🙏 Acknowledgments

  • FastAPI team for the excellent framework
  • The original Flask implementation that served as the foundation
  • All contributors and users of the AniWorld project

Note: This application is for personal use only. Please respect copyright laws and terms of service of content providers.

Description
No description provided
Readme 179 MiB
Languages
Python 78.5%
JavaScript 14.7%
HTML 3.3%
CSS 2.9%
Shell 0.4%
Other 0.2%