Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

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

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Sortie Logo

Sortie

A native video organizer built with Tauri and React
Speed up your editing workflow with swipe-to-organize

Sortie is an open-source, cross-platform video organizer designed to help content creators, editors, and filmmakers rapidly categorize hundreds of raw clips using intuitive swipe gestures.

Organize your footage across folders, separate A-roll from B-roll, and identify trash takes in minutes rather than hours. Built with a performance-first mindset on Rust and Tauri.

The Problem

Modern content creation generates massive amounts of raw footage. Professional editors and creators spend hours manually scrubbing through clips in traditional NLEs (Non-Linear Editors) just to perform the initial "selects" process.

Current media management tools are either too complex (overkill for simple sorting) or too slow (lack of hardware acceleration or intuitive UX). The cognitive load of switching between files, folders, and a player makes the first stage of editing—sorting—the most tedious.

The Vision

Sortie is the "Tinder for Media"—a high-performance desktop application that turns the tedious task of sorting footage into a rapid-fire session. By mapping simple gestures or keys to file operations, Sortie enables editors to "flow" through their footage.

Our goal is to build a lightweight, native utility that lives outside the heavy NLE environment but integrates seamlessly with existing workflows by handling the file organization on disk before you even import the first clip into your project.

How It Works

Sortie treats your raw footage as a queue. Each clip is presented one-by-one with hardware-accelerated playback. You make a decision, and Sortie handles the rest:

  • Gesture-based Sorting - Swipe or key-bind to move files into categorized subfolders.
  • Hardware Acceleration - Instant seeking and smooth 4K playback via native webview and Rust backend.
  • Atomic Operations - Files are moved or managed via the Rust filesystem API for safety and speed.
  • Undo Stack - Full history of every decision, allowing you to backtrack instantly.

Core Features

FeatureDescription
Swipe-to-OrganizeIntuitive gestures (Up, Down, Left, Right) mapped to custom actions.
Cross-PlatformmacOS, Windows, and Linux support via Tauri.
Performance PlayerHardware-accelerated video playback with speed control (0.25x - 2.0x).
Custom ConfigurationMap any swipe direction to any target folder path.
Undo StackRevert any sorting action instantly with full filesystem restoration.
Keyboard FocusedComplete control via arrow keys, space, and numpad for power users.
I18n SupportFully localized interface (English, French, etc.).

Tech Stack

Core (Backend)

  • Rust - High-performance filesystem operations and application logic.
  • Tauri 2 - Secure, lightweight cross-platform desktop shell.
  • Specta - Type-safe communication between Rust and TypeScript.

Interface (Frontend)

  • React 19 - Modern UI framework with Concurrent Mode.
  • Tailwind CSS v4 - Styling with utility-first classes and CSS variables.
  • Zustand - Lightweight state management for UI and organizer state.
  • shadcn/ui - Highly accessible, unstyled components.
  • Lucide React - High-quality icon set.
  • i18next - Localization and internationalization framework.

Development Patterns

  • Local-first - All data and operations remain on your machine.
  • Separation of Concerns - Clean split between UI logic and native system commands.
  • Safe I/O - Atomic file moves and error handling on the Rust side.

Project Structure

sortie/
├── src-tauri/ # Rust Backend (Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri command implementations
│ │ ├── lib.rs # Application entry and setup
│ │ └── types.rs # Shared data models
│ └── tauri.conf.json # Application configuration
├── src/ # React Frontend
│ ├── components/ # UI Components (Layout, Organizer, etc.)
│ ├── hooks/ # Custom React Hooks
│ ├── lib/ # Utility functions and bindings
│ ├── store/ # Global state (Zustand)
│ └── main.tsx # Frontend entry point
├── locales/ # I18n translation files
├── docs/ # Documentation and PRDs
└── public/ # Static assets

Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/fav-devs/sortie
cd sortie
# Install dependencies
npm install
# Run the app in development mode
npm run tauri dev

Development Commands

# Run lints
npm run lint
# Run type checks
npm run type-check
# Generate Rust bindings
npm run rust:bindings

Privacy & Security

Sortie is offline-first. Your media does not leaves your device.

  • No Tracking: Zero telemetry or analytics.
  • No Cloud Required: Works entirely with local folders.
  • Secure Commands: All filesystem operations are gated through Tauri's scoped IPC.

Get Involved

  • Star the repo to show your support.
  • Open an issue for bugs or feature requests.
  • Contribute - Check out our Contributing Guide.

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages