Core Feature

Series Management

Full CRUD operations for managing manga and manhwa series with metadata, covers, and chapters.

Overview

The Series Management system provides a complete solution for organizing and managing your scanlation content. It supports multiple genres, tags, status tracking, and more.

Create Series

Add new manga/manhwa with title, description, author, artist, and cover image.

Edit Metadata

Update series information, genres, tags, and status at any time.

Cover Management

Upload and manage cover images with automatic optimization.

Chapter Organization

Organize chapters with volume/chapter numbers and release dates.

Chapter Storage Structure

Important: Chapters are managed directly in S3/GCS

Chapter images are stored in your cloud storage (AWS S3, Google Cloud Storage, or MinIO). You must follow the folder structure below for the template to correctly display chapters.

# Required folder structure:
your-bucket/
├── series/
│   ├── {series-slug}/
│   │   ├── cover.jpg              # Main cover image
│   │   ├── banner.jpg             # Optional banner image
│   │   └── chapters/
│   │       ├── chapter-1/
│   │       │   ├── 001.jpg        # Pages numbered sequentially
│   │       │   ├── 002.jpg
│   │       │   ├── 003.jpg
│   │       │   └── ...
│   │       ├── chapter-2/
│   │       │   ├── 001.jpg
│   │       │   └── ...
│   │       └── chapter-N/
│   │           └── ...
│   └── {another-series-slug}/
│       └── ...

Naming Conventions

  • Series slug:solo-leveling, tower-of-god (lowercase, hyphen-separated)
  • Chapter folders:chapter-1, chapter-2, chapter-100 (must match DB chapter number)
  • Page images:001.jpg, 002.png, 003.webp (zero-padded, sequential)
  • Supported formats:JPG, PNG, WebP (WebP recommended for smaller file sizes)

Series Data Model

interface Series {
  id: string;
  title: { en: string; es?: string; pt?: string; ... }; // i18n support
  slug: string;
  description: { en: string; ... };
  author: string;
  artist?: string;
  coverImage: string;
  bannerImage?: string;
  status: 'ongoing' | 'completed' | 'hiatus' | 'cancelled';
  type: 'manga' | 'manhwa' | 'manhua' | 'webtoon' | 'comic';
  contentRating: 'safe' | 'suggestive' | 'mature' | 'explicit';
  genres: string[];
  tags: string[];
  viewCount: number;
  bookmarkCount: number;
  averageRating: number;
  isPublished: boolean;
  isFeatured: boolean;
  createdAt: Date;
  updatedAt: Date;
}

Admin Operations

All series management operations are available through the admin dashboard at /admin/series.

  • Create new series with full metadata
  • Upload and crop cover images
  • Manage chapters and volumes
  • Set release schedules
  • Bulk import from external sources
  • Delete series and associated chapters

API Endpoints

Authentication Required: Admin endpoints require the API_SECRET_TOKEN in the Authorization header.

GET/api/seriesList all series with pagination
GET/api/series/[slug]Get series by slug
POST/api/admin/seriesCreate new series
PUT/api/admin/series/[id]Update series
DELETE/api/admin/series/[id]Delete series

Admin API Examples

Create a New Series

POST /api/admin/series
Authorization: Bearer your-api-token

{
  "title": { "en": "Solo Leveling" },
  "slug": "solo-leveling",
  "description": { "en": "The story of Sung Jin-Woo..." },
  "author": "Chugong",
  "artist": "Dubu",
  "coverImage": "series/solo-leveling/cover.jpg",
  "status": "completed",
  "type": "manhwa",
  "genres": ["Action", "Fantasy", "Adventure"],
  "tags": ["dungeon", "system", "overpowered"]
}

Update Series

PUT /api/admin/series/6507a1b2c3d4e5f6a7b8c9d0
Authorization: Bearer your-api-token

{
  "status": "completed",
  "isFeatured": true,
  "description": { "en": "Updated description..." }
}

Create a New Chapter

POST /api/admin/chapters
Authorization: Bearer your-api-token

{
  "series": "6507a1b2c3d4e5f6a7b8c9d0",
  "number": 150,
  "title": "The Final Battle",
  "images": [
    "series/solo-leveling/chapters/chapter-150/001.jpg",
    "series/solo-leveling/chapters/chapter-150/002.jpg",
    ...
  ],
  "pageCount": 25,
  "isPremium": true,
  "tokenCost": 3,
  "freeAfterDays": 7
}

Delete Series

DELETE /api/admin/series/6507a1b2c3d4e5f6a7b8c9d0
Authorization: Bearer your-api-token

# Response: 204 No Content