Skip to content

zeusmx/SkyCopy

Repository files navigation

SkyCopy ✈ — From Kapowsin to the World

A Windows desktop app for skydivers to quickly copy and organize jump videos from SD cards to their computer.

How It Works

  1. Insert SD card — SkyCopy auto-detects removable drives and shows the file tree with video thumbnail previews
  2. Fill in the fields:
    • Date — Pre-filled with today's date (MM-dd-yyyy)
    • Jump Number — The jump number for the current load
    • Diver — Pick from saved presets or type a new name (saved automatically for next time)
  3. Select a video — Videos are sorted newest-first; click one to see a larger preview
  4. Click 📥 Download — The video is copied to: Desktop/<Date>/Jump<Number>/<Diver>.<ext>

Fields persist while the app is running, so you can swap SD cards and just change the Diver name to quickly copy each diver's video. The original files on the SD card are never modified or deleted.

Features

  • Auto SD card detection — Scans for removable drives on startup and via the Refresh button
  • Video thumbnail previews — Shows thumbnails in the file tree and a larger preview panel
  • Diver presets — Saves diver names for quick reuse across sessions
  • Progress tracking — Real-time copy progress with file size display
  • Safe copying — Read-only access to source; incomplete files are cleaned up on failure
  • Overwrite protection — Warns before overwriting existing files
  • Date validation — Ensures the date field is in MM-dd-yyyy format
  • In-app help — Click the ❓ Help button for usage instructions

Output Folder Structure

Desktop/
└── 02-16-2026/
    ├── Jump1/
    │   ├── Alice.mp4
    │   ├── Bob.mp4
    │   └── Charlie.mp4
    └── Jump2/
        ├── Alice.mp4
        └── Bob.mp4

Repository Structure

SkyCopy/
├── App.xaml / App.xaml.cs         # WPF application entry point
├── MainWindow.xaml                # Main UI layout (XAML)
├── MainWindow.xaml.cs             # Main window code-behind (event handlers, file copy logic)
├── SkyCopyHelpers.cs              # Testable helper methods (sanitize, format, validate, presets)
├── ThumbnailExtractor.cs          # Windows Shell API thumbnail extraction
├── app.ico                        # Application icon (parachute)
├── SkyCopy.csproj                 # Project file (.NET 8, WPF)
├── SkyCopy.sln                    # Solution file
├── README.md                      # This file
├── .gitignore                     # Git ignore rules
└── SkyCopy.Tests/                 # Unit tests
    ├── SkyCopy.Tests.csproj       # Test project (xUnit)
    └── SkyCopyHelpersTests.cs     # 70 tests for helper methods

Build

Requires .NET 8 SDK.

# Build
dotnet build -c Release

# Run tests
dotnet build SkyCopy.Tests\SkyCopy.Tests.csproj -c Release
dotnet test SkyCopy.Tests\SkyCopy.Tests.csproj -c Release --no-build

The executable will be at bin\Release\net8.0-windows\SkyCopy.exe.

Self-Contained Publish (no .NET required on target machine)

Creates a single .exe that runs on any Windows x64 machine without needing .NET installed:

dotnet publish SkyCopy.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

The standalone executable will be at bin\Release\net8.0-windows\win-x64\publish\SkyCopy.exe.

Credits

By @gecaso based on @outcoldman original idea, credit to Denis.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors