# Main Directories in the Palmier Pro Project Structure: Complete Breakdown

> Explore the Palmier Pro project structure, detailing its main directories like Sources, Metal, Models, and mcpb. Understand the organization of this macOS video-editing codebase.

- Repository: [Palmier/palmier-pro](https://github.com/palmier-io/palmier-pro)
- Tags: deep-dive
- Published: 2026-06-30

---

**The Palmier Pro repository organizes its macOS video-editing codebase into eleven top-level directories, including `Sources/` for Swift implementation, `Metal/` for GPU shaders, `Models/` for ML assets, and `mcpb/` for the Node.js control panel bridge.**

Palmier Pro is a macOS video-editing application developed under the palmier-io/palmier-pro repository. Understanding the main directories in the Palmier Pro project structure is essential for navigating the Swift codebase, extending video effects, or modifying the machine learning pipeline. The layout follows conventional macOS app standards while accommodating specialized folders for Metal compute kernels and external service integration.

## Core Application Code

The foundation of Palmier Pro resides in two primary directories that handle source code and quality assurance.

### Sources/ - Swift Implementation

The **`Sources/`** directory contains the core Swift source files that power the application logic, UI theming, and data models. This is where the majority of development activity occurs, housing everything from view controllers to platform-specific glue code.

Key files within this directory include [`Sources/PalmierPro/UI/AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/UI/AppTheme.swift), which defines the central design-system constants for spacing, colors, and fonts, along with model definitions such as [`VideoLayout.swift`](https://github.com/palmier-io/palmier-pro/blob/main/VideoLayout.swift) and [`Timeline.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Timeline.swift) that manage the video editing state.

### Tests/ - XCTest Validation

The **`Tests/`** directory holds the XCTest-based unit and integration tests that ensure code reliability. This suite includes smoke tests to verify app launch stability, transcription accuracy checks, caption generation validation, and media handling integration tests.

You can find the entry point for sanity checks in [`Tests/PalmierProTests/SmokeTests.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Tests/PalmierProTests/SmokeTests.swift), which provides simple verification that the app initializes without crashing.

## Graphics Processing and Extensions

Video effects in Palmier Pro leverage GPU acceleration through custom Metal shaders and AppKit plugins.

### Metal/ - GPU Shader Kernels

The **`Metal/`** directory stores custom `*.metal` shader files used for real-time video effects, color grading, and image processing. These low-level GPU kernels power performance-critical visual features.

Notable files include `Metal/GradeCurves.metal` for color grading operations and `Metal/Vignette.metal` for vignette effects. Accessing these from Swift follows the standard bundle pattern:

```swift
// Loading a colour-grading shader from the Metal folder
let vignetteShader = try! Shader(bundle: .main, name: "Vignette")

```

### Plugins/ - AppKit Bridge Extensions

The **`Plugins/`** directory contains optional AppKit plugins that extend the editor's capabilities beyond standard SwiftUI components. The primary resident is `MetalCIKernelPlugin`, which bridges Metal compute kernels with Core Image filters to enable custom video effects within the AppKit environment.

## Machine Learning and External Services

Palmier Pro integrates on-device AI and external service communication through dedicated directories.

### Models/ - On-Device Inference Assets

The **`Models/`** directory stores pre-trained machine learning models and Python helper scripts for tasks like automatic caption generation and transcription. These assets enable local inference without external API calls.

Loading a tokenizer from this directory typically references the Python helper scripts bundled within:

```swift
// Loading a pre-trained model from the models folder
let tokenizer = try! Tokenizer(path: Bundle.main.path(forResource: "export_tokenizer", ofType: "py")!)

```

### mcpb/ - Control Panel Bridge

The **`mcpb/`** directory houses the "Mac Control Panel Bridge," a small Node.js server ([`index.js`](https://github.com/palmier-io/palmier-pro/blob/main/index.js)) that facilitates communication between the Palmier Pro application and external services. This bridge enables remote control capabilities and integration with external editing hardware or web-based control panels.

## Resources and Developer Tooling

Supporting directories manage static assets, documentation, and build automation.

### assets/ and docs/ - Static Content

The **`assets/`** directory contains static graphical resources including application icons, UI screenshots, and marketing badges used throughout the interface. The **`docs/`** directory maintains human-readable documentation, including multilingual README files and user guides.

### scripts/ - Build Automation

The **`scripts/`** directory provides helper shell scripts for common development workflows. Key utilities include [`dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/dev.sh) for local development builds, [`release.sh`](https://github.com/palmier-io/palmier-pro/blob/main/release.sh) for packaging and notarization, and [`bundle.sh`](https://github.com/palmier-io/palmier-pro/blob/main/bundle.sh) for distribution packaging.

Execute development builds directly from the repository root:

```bash

# Running the development script from the scripts folder

./scripts/dev.sh

```

The [`scripts/release.sh`](https://github.com/palmier-io/palmier-pro/blob/main/scripts/release.sh) file specifically automates the packaging and notarization process required for macOS distribution.

### .github/ - Continuous Integration

The **`.github/`** directory contains GitHub Actions workflow definitions and contribution guidelines that manage CI/CD pipelines, automated testing, and release creation.

## Package Configuration

At the repository root, **[`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift)** serves as the Swift Package Manager manifest that defines all build targets, dependencies, and linker settings for the Palmier Pro application. This file coordinates how the `Sources/` and `Tests/` directories relate to external packages and system frameworks.

## Summary

- **`Sources/`** contains the primary Swift codebase including UI themes ([`AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/AppTheme.swift)) and data models ([`VideoLayout.swift`](https://github.com/palmier-io/palmier-pro/blob/main/VideoLayout.swift), [`Timeline.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Timeline.swift)).
- **`Metal/`** provides GPU shaders like `GradeCurves.metal` and `Vignette.metal` for real-time video effects.
- **`Tests/`** houses XCTest suites including [`SmokeTests.swift`](https://github.com/palmier-io/palmier-pro/blob/main/SmokeTests.swift) for validation.
- **`Models/`** stores ML assets and Python scripts for on-device caption generation.
- **`mcpb/`** runs a Node.js bridge ([`index.js`](https://github.com/palmier-io/palmier-pro/blob/main/index.js)) for external service communication.
- **`Plugins/`**, **`assets/`**, **`docs/`**, **`scripts/`**, and **`.github/`** handle extensions, static resources, documentation, build automation, and CI/CD respectively.

## Frequently Asked Questions

### What directory contains the main Swift source code in Palmier Pro?

The **`Sources/`** directory contains all core Swift implementation files, including UI components, business logic, and model definitions. Key files like [`Sources/PalmierPro/UI/AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/UI/AppTheme.swift) and timeline management code reside here, making it the primary location for application development.

### Where are the GPU shaders located in the Palmier Pro project?

GPU shaders are stored in the **`Metal/`** directory, which contains `.metal` files such as `GradeCurves.metal` and `Vignette.metal`. These files provide the low-level compute kernels that power real-time color grading and video effects within the editing interface.

### How do I run the development build scripts for Palmier Pro?

Execute **[`./scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/./scripts/dev.sh)** from the repository root to trigger the development build script. The `scripts/` directory also contains [`release.sh`](https://github.com/palmier-io/palmier-pro/blob/main/release.sh) for distribution packaging and [`bundle.sh`](https://github.com/palmier-io/palmier-pro/blob/main/bundle.sh) for final app assembly, automating the entire build and notarization workflow for macOS.

### What is the purpose of the mcpb directory in Palmier Pro?

The **`mcpb/`** (Mac Control Panel Bridge) directory contains a Node.js server ([`index.js`](https://github.com/palmier-io/palmier-pro/blob/main/index.js)) that enables communication between Palmier Pro and external control surfaces or web services. This bridge allows the application to receive commands from hardware devices or remote interfaces beyond the native macOS environment.