# Anime Merchandise Catalog API A FastAPI-based API for managing an anime merchandise catalog. ## Features - **Product Management:** Create, read, update, and delete anime merchandise products - **Category System:** Organize products with categories - **Filtering and Searching:** Filter products by anime title or character name - **API Documentation:** Auto-generated OpenAPI documentation ## Tech Stack - **Framework:** FastAPI - **Database:** SQLite with SQLAlchemy and Alembic - **Authentication:** (Not implemented in this version) ## Project Structure ``` . ├── app # Main application package │ ├── api # API routes and endpoint definitions │ │ └── routes # API route handlers │ ├── core # Core application components │ ├── dependencies # Dependency injection components │ ├── models # SQLAlchemy database models │ ├── schemas # Pydantic schemas for request/response validation │ └── services # Business logic services ├── migrations # Alembic database migrations │ └── versions # Migration version scripts ├── storage # Storage directory for SQLite database │ └── db # Database files ├── alembic.ini # Alembic configuration ├── main.py # Application entry point └── requirements.txt # Python dependencies ``` ## API Routes ### Health Check - `GET /health` - Check API health status ### Products - `GET /api/v1/products` - List all products (with optional filtering) - `GET /api/v1/products/{product_id}` - Get a specific product by ID - `POST /api/v1/products` - Create a new product - `PUT /api/v1/products/{product_id}` - Update an existing product - `DELETE /api/v1/products/{product_id}` - Delete a product ### Categories - `GET /api/v1/categories` - List all categories - `GET /api/v1/categories/{category_id}` - Get a specific category by ID - `GET /api/v1/categories/{category_id}/products` - Get a category with its products - `POST /api/v1/categories` - Create a new category - `PUT /api/v1/categories/{category_id}` - Update an existing category - `DELETE /api/v1/categories/{category_id}` - Delete a category ## Installation 1. Clone the repository 2. Install dependencies: ```bash pip install -r requirements.txt ``` 3. Apply migrations to create the database schema: ```bash alembic upgrade head ``` ## Running the Application ```bash uvicorn main:app --reload ``` The API will be available at `http://localhost:8000` ## API Documentation - Swagger UI: `http://localhost:8000/docs` - ReDoc: `http://localhost:8000/redoc` ## Database Schema ### Product - id: Integer (Primary Key) - name: String - description: Text (Optional) - price: Float - stock: Integer - image_url: String (Optional) - anime_title: String (Optional) - character_name: String (Optional) - created_at: DateTime - updated_at: DateTime - categories: Many-to-Many relationship with Category ### Category - id: Integer (Primary Key) - name: String (Unique) - description: Text (Optional) - created_at: DateTime - updated_at: DateTime - products: Many-to-Many relationship with Product