Skip to content

Publisher Studio Workflow

This flowchart illustrates the complete workflow for content creators using Publisher Studio to create, configure, and publish content catalogs.

Overview

Publisher Studio is a desktop tool that enables content creators to become publishers without manually writing JSON files. It guides users through project creation, content management, release configuration, artifact upload, and catalog publishing.

Flow Diagram

Key Components

Publisher Studio ViewModel

  • File: PublisherStudioViewModel.cs
  • Responsibilities:
    • Project lifecycle management
    • Navigation between views
    • State persistence
    • Validation orchestration

Content Library

  • ViewModel: ContentLibraryViewModel.cs
  • Features:
    • Add/edit/delete content items
    • Manage releases and versions
    • Configure dependencies
    • Upload metadata (images, descriptions)

Publish & Share

  • ViewModel: PublishShareViewModel.cs
  • Features:
    • Artifact upload progress tracking
    • Catalog generation and upload
    • Definition generation and upload
    • Subscription link generation
    • QR code generation

Hosting Provider Abstraction

  • Interface: IHostingProvider.cs
  • Implementations:
    • GoogleDriveHostingProvider.cs
    • GitHubHostingProvider.cs
    • DropboxHostingProvider.cs
    • ManualHostingProvider.cs

Hosting Provider Factory

  • File: HostingProviderFactory.cs
  • Purpose: Create appropriate hosting provider based on user selection
  • Features:
    • OAuth flow management
    • State persistence
    • URL generation

Validation Checks

Project Validation

  • Publisher ID uniqueness
  • Required fields present
  • Valid URLs
  • Avatar image format

Content Validation

  • Content ID uniqueness within project
  • Valid content type
  • Target game specified
  • At least one release

Release Validation

  • Valid SemVer version
  • At least one artifact
  • Artifact files exist
  • Valid dependency references

Dependency Validation

  • No circular dependencies
  • Valid publisher IDs
  • Valid content IDs
  • Valid version constraints

Catalog Validation

  • Schema version compatibility
  • Size limit (5 MB recommended)
  • Valid JSON syntax
  • All URLs accessible

Publishing Workflow

Pre-Publish Checklist

  1. All artifacts have files selected
  2. All releases have versions
  3. All dependencies are valid
  4. No circular dependencies
  5. No conflicts detected
  6. Hosting provider configured

Upload Process

  1. Artifacts: Upload to hosting (Tier 3)
  2. Catalogs: Generate and upload (Tier 2)
  3. Definition: Generate and upload (Tier 1)

Post-Publish

  1. Generate subscription link
  2. Test subscription link
  3. Share with community
  4. Monitor subscriptions (future feature)

Error Handling

Authentication Errors

  • OAuth token expired
  • Invalid credentials
  • Network timeout

Upload Errors

  • File too large
  • Network interruption
  • Quota exceeded
  • Permission denied

Validation Errors

  • Schema violations
  • Circular dependencies
  • Missing required fields
  • Invalid references

User Experience

  • Progress indicators for uploads
  • Detailed error messages
  • Retry mechanisms
  • Rollback on failure

Project File Structure

Project File

  • Location: User-selected directory
  • Filename: {project-name}.genhub-project
  • Format: JSON
  • Contents:
    • Publisher information
    • Hosting configuration
    • Content library
    • Releases and artifacts
    • OAuth tokens (encrypted)

Project Directory

MyPublisher/
├── MyPublisher.genhub-project
├── artifacts/
│   ├── mod-v1.0.0.zip
│   ├── mod-v1.1.0.zip
│   └── map-pack-v1.0.0.zip
├── images/
│   ├── avatar.png
│   ├── banner-mod.jpg
│   └── screenshot-1.jpg
└── generated/
    ├── catalog.json
    ├── catalog-maps.json
    └── publisher_definition.json
  • GenHub/Features/Tools/ViewModels/PublisherStudioViewModel.cs
  • GenHub/Features/Tools/ViewModels/ContentLibraryViewModel.cs
  • GenHub/Features/Tools/ViewModels/PublishShareViewModel.cs
  • GenHub/Features/Tools/Services/PublisherStudioService.cs
  • GenHub/Features/Tools/Services/Hosting/HostingProviderFactory.cs
  • GenHub/Features/Tools/Services/Hosting/GoogleDriveHostingProvider.cs
  • GenHub.Core/Models/Providers/PublisherDefinition.cs
  • GenHub.Core/Models/Providers/PublisherCatalog.cs

GeneralsHub Docs