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.csGitHubHostingProvider.csDropboxHostingProvider.csManualHostingProvider.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
- All artifacts have files selected
- All releases have versions
- All dependencies are valid
- No circular dependencies
- No conflicts detected
- Hosting provider configured
Upload Process
- Artifacts: Upload to hosting (Tier 3)
- Catalogs: Generate and upload (Tier 2)
- Definition: Generate and upload (Tier 1)
Post-Publish
- Generate subscription link
- Test subscription link
- Share with community
- 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.jsonRelated Files
GenHub/Features/Tools/ViewModels/PublisherStudioViewModel.csGenHub/Features/Tools/ViewModels/ContentLibraryViewModel.csGenHub/Features/Tools/ViewModels/PublishShareViewModel.csGenHub/Features/Tools/Services/PublisherStudioService.csGenHub/Features/Tools/Services/Hosting/HostingProviderFactory.csGenHub/Features/Tools/Services/Hosting/GoogleDriveHostingProvider.csGenHub.Core/Models/Providers/PublisherDefinition.csGenHub.Core/Models/Providers/PublisherCatalog.cs
