# Aniworld Web Application Infrastructure conda activate AniWorld ## Project Structure ``` /home/lukas/Volume/repo/Aniworld/ ├── src/ │ ├── server/ # FastAPI web application │ │ ├── main.py # FastAPI application entry point │ │ ├── api/ # API route handlers │ │ │ ├── __init__.py │ │ │ ├── auth.py # Authentication endpoints │ │ │ ├── config.py # Configuration endpoints │ │ │ ├── anime.py # Anime management endpoints │ │ │ ├── download.py # Download queue endpoints │ │ │ └── search.py # Search endpoints │ │ ├── models/ # Pydantic models │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── config.py │ │ │ ├── anime.py │ │ │ └── download.py │ │ ├── services/ # Business logic services │ │ │ ├── __init__.py │ │ │ ├── auth_service.py │ │ │ ├── config_service.py │ │ │ ├── anime_service.py │ │ │ └── download_service.py │ │ ├── static/ # Static web assets │ │ │ ├── css/ │ │ │ ├── js/ │ │ │ └── images/ │ │ ├── templates/ # Jinja2 HTML templates │ │ │ ├── base.html │ │ │ ├── login.html │ │ │ ├── setup.html │ │ │ ├── config.html │ │ │ ├── anime.html │ │ │ ├── download.html │ │ │ └── search.html │ │ └── utils/ # Utility functions │ │ ├── __init__.py │ │ ├── security.py │ │ └── dependencies.py │ ├── core/ # Existing core functionality │ └── cli/ # Existing CLI application ├── data/ # Application data storage │ ├── config.json # Application configuration │ ├── anime_library.db # SQLite database for anime library │ ├── download_queue.json # Download queue state │ └── cache/ # Temporary cache files ├── logs/ # Application logs │ ├── app.log # Main application log │ ├── download.log # Download-specific logs │ └── error.log # Error logs ├── requirements.txt # Python dependencies ├── docker-compose.yml # Docker deployment configuration └── README.md ``` ## Technology Stack ### Backend - **FastAPI**: Modern Python web framework for building APIs - **Uvicorn**: ASGI server for running FastAPI applications - **SQLite**: Lightweight database for storing anime library and configuration - **Pydantic**: Data validation and serialization - **Jinja2**: Template engine for server-side rendering ### Frontend - **HTML5/CSS3**: Core web technologies - **JavaScript (Vanilla)**: Client-side interactivity - **Bootstrap 5**: CSS framework for responsive design - **HTMX**: Modern approach for dynamic web applications ### Security - **Passlib**: Password hashing and verification - **python-jose**: JWT token handling - **bcrypt**: Secure password hashing ## Configuration ### Data Storage - **Configuration**: JSON files in `data/` directory - **Anime Library**: SQLite database with series information - **Download Queue**: JSON file with current download status - **Logs**: Structured logging to files in `logs/` directory ## API Endpoints ### Authentication - `POST /api/auth/login` - Master password authentication - `POST /api/auth/logout` - Logout and invalidate session - `GET /api/auth/status` - Check authentication status ### Configuration - `GET /api/config` - Get current configuration - `PUT /api/config` - Update configuration - `POST /api/setup` - Initial setup ### Anime Management - `GET /api/anime` - List anime with missing episodes - `POST /api/anime/{id}/download` - Add episodes to download queue - `GET /api/anime/{id}` - Get anime details ### Download Management - `GET /api/downloads` - Get download queue status - `DELETE /api/downloads/{id}` - Remove from queue - `POST /api/downloads/priority` - Change download priority ### Search - `GET /api/search?q={query}` - Search for anime - `POST /api/search/add` - Add anime to library ## Logging ### Log Levels - **INFO**: General application information - **WARNING**: Potential issues that don't stop execution - **ERROR**: Errors that affect functionality - **DEBUG**: Detailed debugging information (development only) ### Log Files - `app.log`: General application logs - `download.log`: Download-specific operations - `error.log`: Error and exception logs ## Security Considerations - Master password protection for application access - Secure session management with JWT tokens - Input validation and sanitization - Rate limiting on API endpoints - HTTPS enforcement in production - Secure file path handling to prevent directory traversal