Repository files navigation

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

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

FolderCreator.Api

.NET 10ASP.NET CoreDockerREST APIStatus

FolderCreator.Api is an ASP.NET Core REST service that prepares and manages production folders for the Mockup Workflow Platform.

The service creates standardized directory structures, manages workflow assets, and exposes REST endpoints for folder and file management used throughout the Mockup Workflow Platform.

The API accepts phrase records, groups them by batch and product type, sanitizes folder names, and prepares the input and output directories required by downstream Photoshop automation workflows.

Screenshots

Create Folders from JSON

The primary workflow accepts a JSON file containing batch records and creates the corresponding production directory structure.

Create folders from uploaded JSON

Dashboard

The built-in landing page provides quick access to the API documentation and operational endpoints.

FolderCreator.Api Dashboard

Swagger API Overview

The OpenAPI documentation provides an interactive interface for exploring and testing the REST endpoints.

FolderCreator.Api Swagger Overview

Features

  • Create batch-based production directories
  • Organize assets by batch ID and product type
  • Create one folder for each phrase record
  • Sanitize phrase text for safe folder names
  • Prepare input_folders and mockup_folders
  • Support shared Docker volumes
  • Validate incoming folder-creation requests
  • Integrate with MockupWorkflow.Admin and supporting workflow services
  • Provide Swagger/OpenAPI documentation during development

Role in the Platform

FolderCreator.Api is the file-system preparation service within the Mockup Workflow Platform.

Production Manifest
|
v
MockupWorkflow.Admin
|
v
FolderCreator.Api
|
v
/data/builds/{batchId}/{productType}/
|
+-- input_folders/
|
+-- mockup_folders/
|
v
Photoshop UXP Workflow

Before Photoshop processing begins, the service creates the predictable directory structure used by the platform’s APIs, administration dashboard, upload tools, and Photoshop UXP plug-in.

Directory Structure

A request for batch 1782398933192 and product type tshirt produces a structure similar to:

/data/builds/
└── 1782398933192/
└── tshirt/
├── input_folders/
│ ├── Coffee.Until.Further.Notice/
│ └── Another.Phrase/
└── mockup_folders/
├── Coffee.Until.Further.Notice/
└── Another.Phrase/

The physical root directory is configured using the OUTPUT_ROOT environment variable.

Technology Stack

TechnologyPurpose
.NET 10Application runtime
ASP.NET Core Web APIREST endpoint hosting
C#API and folder-processing logic
DockerContainerized deployment
OpenAPI / SwaggerInteractive API documentation
Shared Docker volumesFile exchange between workflow services

REST API

MethodEndpoint
GET/dashboard
POST/api/files/upload/{*path}
GET/folders
GET/folders/status
GET/folders/{name}
POST/folders/create
POST/folders/create-from-file
PUT/folders/{name}
DELETE/folders/{name}
GET/folders/{name}/files
POST/folders/{name}/files
GET/folders/{name}/files/{fileName}
DELETE/folders/{name}/files/{fileName}

Request File

The uploaded JSON file contains an array of phrase records:

[
{
"phrase": "Coffee Until Further Notice",
"batchId": "1782398933192",
"productType": "tshirt"
},
{
"phrase": "Another Phrase",
"batchId": "1782398933192",
"productType": "tshirt"
}
]

A sample request is available at:

examples/create-folders-request.json

cURL Example

The following example uploads the JSON file using the multipart upload endpoint.

curl -X POST \
"http://localhost:27020/folders/create-from-file" \
-H "accept: application/json" \
-F "file=@examples/create-folders-request.json"

PowerShell JSON Request

The repository includes a reusable PowerShell script that reads the sample request file and sends it as a JSON request body to the POST /folders/create endpoint.

scripts/test-create-folders.ps1

Run it from the repository root:

.\scripts\test-create-folders.ps1

The script uses the sample request file in:

examples/create-folders-request.json

to demonstrate creating the production folder structure using the JSON request endpoint.

Running Locally

Prerequisites

  • .NET 10 SDK
  • PowerShell, cURL, or another HTTP client
  • Docker Desktop for containerized execution

Start the API

From the repository root:

dotnet restore
dotnet run

The console output will show the local addresses assigned to the application.

When the application is running, Swagger is available at:

For example:

http://localhost:<port>/swagger

Configuration

OUTPUT_ROOT

FolderCreator.Api reads the target build directory from the OUTPUT_ROOT environment variable.

Example Windows configuration:

$env:OUTPUT_ROOT="C:\MockupWorkflow\Builds"
dotnet run

Example Docker configuration:

environment:
- OUTPUT_ROOT=/data/builds

The configured directory must be writable by the application.

Docker

Build the image from the repository root:

docker build -t foldercreator-api .

Run the container with a local directory mounted as the build root:

docker run --rm `-p 27020:8080`-e OUTPUT_ROOT=/data/builds `-v foldercreator-builds:/data/builds `
foldercreator-api

The service can then be accessed at:

http://localhost:27020

Docker Compose

Within the Mockup Workflow Platform, FolderCreator.Api shares a named volume with the other file-processing services:

services:
foldercreator-api:
build:
context: .ports:
- "27020:8080"environment:
- OUTPUT_ROOT=/data/buildsvolumes:
- build-directories:/data/buildsvolumes:
build-directories:

This allows FolderCreator.Api, PNGAPI, MockupWorkflow.Admin, and related services to work with the same production files.

Repository Structure

FolderCreator.API/
├── examples/
│ └── create-folders-request.json
├── scripts/
│ └── test-create-folders.ps1
├── Properties/
├── .gitignore
├── Dockerfile
├── FolderCreatorApi.csproj
├── Program.cs
└── README.md

The exact source layout may expand as endpoint, service, validation, and test classes are separated into dedicated directories.

Folder-Name Handling

Phrase text may contain characters that are unsuitable for directory names.

FolderCreator.Api normalizes phrase values before using them as folder names. This provides:

  • Predictable directory paths
  • Reduced risk from invalid path characters
  • Consistent naming across workflow services
  • Separation between configured root paths and user-provided values

The configured OUTPUT_ROOT remains the authority for where files may be created.

What This Project Demonstrates

This repository demonstrates experience with:

  • ASP.NET Core Web API development
  • REST API design
  • Multipart file uploads
  • JSON request processing
  • File-system automation
  • Input validation
  • Safe path construction
  • Docker containerization
  • Shared-volume architecture
  • Distributed workflow integration

Related Projects

MockupWorkflow.Platform

The umbrella repository containing platform architecture, documentation, and orchestration resources.

MockupWorkflow.Admin

The Blazor administration application that imports workflow data and invokes supporting services.

PhotoshopAutomation.Api

The central workflow orchestration API responsible for batches, processing state, and workflow records.

PNGAPI

The storage service used to upload and retrieve source images and generated mockups.

Photoshop UXP Batch Mockup Plugin

The Photoshop execution engine that consumes prepared batch directories and generates production assets.

MockupWorkflow.BuildUploader

A command-line utility for uploading prepared input and mockup folders into the shared build structure.

Project Status

Active development

The core folder-generation workflow is operational and integrated with the Mockup Workflow Platform.

Current portfolio work focuses on:

  • Improving API documentation
  • Adding verified request and response examples
  • Expanding automated tests
  • Documenting security and validation behavior
  • Maintaining consistent presentation across platform repositories

License

See the repository’s LICENSE file for licensing information.

About

ASP.NET Core REST API for creating and managing production folder structures, file uploads, and workflow assets for the Mockup Workflow Platform.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages