Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

PNGAPI

.NETASP.NET CoreBlazorDockerLicense

ASP.NET Core asset storage service for the Mockup Workflow Platform, providing secure file management, shared workflow storage, and a browser-based asset explorer.

Overview

PNGAPI is an ASP.NET Core service that provides centralized storage and retrieval of workflow assets for the Mockup Workflow Platform.

The service exposes REST endpoints for uploading, downloading, browsing, and managing workflow assets while storing files within a shared Docker volume. In addition to its REST API, it includes a built-in Blazor interface for browsing workflow folders and previewing generated assets during development and testing.

PNGAPI

PNGAPI was created to provide a lightweight, secure asset storage service for the Mockup Workflow Platform, enabling workflow components to exchange generated artwork through a shared storage layer.


Contents

Features

  • Upload workflow assets through a REST API
  • Download generated assets
  • Browse files and folders using a built-in Blazor interface
  • Preview generated PNG assets
  • Create workflow folders through the API
  • Delete workflow assets
  • Safe path validation to prevent directory traversal
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Technologies

  • Language: C#
  • Framework: ASP.NET Core (.NET 10)
  • UI: Blazor Interactive Server
  • API: Minimal APIs
  • Documentation: Swagger / OpenAPI
  • Containerization: Docker
  • Storage: Shared Docker volume

Platform Architecture

PNGAPI serves as the shared asset storage service for the Mockup Workflow Platform. It provides a centralized location where workflow assets are uploaded, retrieved, and managed throughout the mockup generation pipeline.

 Mockup Workflow Platform
BuildUploader
│
▼
PhotoshopAutomation.Api
│
Coordinates workflow execution
│
▼
Photoshop UXP Batch Plugin
│
Downloads input assets / Uploads mockups
│
▼
PNGAPI
│
Shared Build Storage Volume
│
┌────────────┴────────────┐
▼ ▼
MockupWorkflow.Admin Other Platform Services
Browse workflow assets Consume generated files

Responsibilities

PNGAPI is responsible for:

  • Storing workflow assets within the shared build storage.
  • Providing REST endpoints for uploading and downloading files.
  • Managing workflow folder structures.
  • Browsing stored assets through a built-in Blazor interface.
  • Protecting the storage volume through safe path validation.

REST API

PNGAPI exposes REST endpoints for managing workflow assets stored within the shared build storage.

Files

MethodEndpointDescription
GET/api/filesLists every file stored under the configured build root.
GET/api/files/{path}Downloads a file from the shared storage.
POST/api/files/{path}Uploads a file to the specified path, creating parent directories if necessary.
DELETE/api/files/{path}Deletes the specified file.
GET/api/files/list/{path}Lists the folders and files within a specific directory.

Folders

MethodEndpointDescription
GET/api/foldersLists every folder beneath the configured build root.
POST/api/folders/{path}Creates a folder within the shared storage.

Example Upload

POST /api/files/1783449343700/tshirt/input_folders/example/design.pngContent-Type: image/png

Uploads a PNG into the specified workflow folder.


Example Download

GET /api/files/1783449343700/tshirt/mockup_folders/example/design-Group.1.png

Returns the requested image.


Example Create Folder

POST /api/folders/1783449343700/tshirt/input_folders/example

Creates the folder if it does not already exist.


Path Safety

All file and folder operations are validated before accessing the file system.

PNGAPI resolves every requested path relative to the configured storage root and rejects requests that attempt to access locations outside the shared workflow directory. This prevents directory traversal attacks while allowing clients to work with relative workflow paths.

Storage Layout

PNGAPI stores workflow assets beneath a configurable build root.

By default:

/data/builds

Each workflow batch is organized by batch identifier and product type, providing a predictable structure that all platform services can share.

Example Layout

/data/builds/
└── 1783449343700/
└── tshirt/
├── input_folders/
│ ├── Awaiting.Further.Instructions/
│ │ └── duck-design.png
│ └── Coffee.Until.Further.Notice/
│ └── coffee-design.png
│
└── mockup_folders/
├── Awaiting.Further.Instructions/
│ ├── duck-design-Group.1.png
│ ├── duck-design-Group.2.png
│ └── ...
│
└── Coffee.Until.Further.Notice/
├── coffee-design-Group.1.png
├── coffee-design-Group.2.png
└── ...

Configuration

The storage root is configured through appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The location can be overridden for different environments using standard ASP.NET Core configuration providers, making the application suitable for local development, Docker deployments, and production environments.

Running Locally

Prerequisites

  • .NET 10 SDK
  • Docker Desktop (recommended for containerized development)

Clone the Repository

git clone https://github.com/swisherman/PNGAPI.git
cd PNGAPI

Run from Visual Studio

Open:

PNGAPI.slnx

Then start the PNGAPI project.

Run from the Command Line

From the repository root:

dotnet run --project src/PNGAPI/PNGAPI.csproj

The application will start using the URLs defined in your launch profile.

Browse the Application

Once running, open:

PagePurpose
/Project home page
/filesBrowse and preview workflow assets
/swaggerExplore and test the REST API

Configuration

The storage location is configured in appsettings.json:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

The configured storage directory is automatically created during application startup if it does not already exist.

Docker

PNGAPI includes Docker support for running the service in a Linux container with access to shared workflow storage.

Build and Start

From the repository root:

docker compose up --build

To run the containers in the background:

docker compose up --build -d

To stop the application:

docker compose down

Shared Storage

Inside the container, PNGAPI uses the configured build root:

/data/builds

The Docker configuration mounts shared storage at this location so PNGAPI and other Mockup Workflow Platform services can access the same workflow assets.

PNGAPI container
│
▼
/data/builds
│
▼
Shared Docker volume
│
├── input_folders
└── mockup_folders

This shared-volume design allows:

  • MockupWorkflow.BuildUploader to upload prepared input assets.
  • The Photoshop UXP plug-in to download source artwork.
  • The Photoshop UXP plug-in to upload generated mockups.
  • MockupWorkflow.Admin and other services to browse or consume workflow output.

Environment Overrides

The storage root can be overridden through ASP.NET Core configuration.

For example:

environment:
Storage__BuildRoot: /data/builds

ASP.NET Core uses double underscores to represent nested configuration keys, so:

Storage__BuildRoot

maps to:

{
"Storage": {
"BuildRoot": "/data/builds"
}
}

Rebuild After Changes

After changing application code or the Dockerfile, rebuild the image:

docker compose up --build

Swagger and the Blazor interface are available through the host port configured in docker-compose.override.yml.

Screenshots

Home Page

Screenshot coming soon

Swagger API

PNGAPI Swagger

Workflow Asset Browser

PNGAPI Files

Project Status

PNGAPI is under active development as part of the Mockup Workflow Platform.

Current capabilities include:

  • REST API for workflow asset management
  • Browser-based asset explorer
  • Safe file and folder operations
  • Shared Docker volume storage
  • Swagger/OpenAPI documentation

Future enhancements include:

  • Asset metadata support
  • Improved file search and filtering
  • Thumbnail generation
  • Additional administrative tooling

Related Repositories

PNGAPI is one component of the Mockup Workflow Platform.

RepositoryPurpose
MockupWorkflow.PlatformPlatform overview and architecture
PhotoshopAutomation.ApiWorkflow orchestration and batch processing
photoshop-uxp-batch-mockup-pluginPhotoshop workflow execution
MockupWorkflow.AdminAdministrative dashboard
FolderCreator.APICreates standardized workflow folder structures
MockupWorkflow.BuildUploaderUploads prepared workflow assets
MockupWorkflow.SharedShared domain models and contracts

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Shared asset storage service for the Mockup Workflow Platform, providing secure file management, image previews, and REST APIs for workflow assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages