← all projects
apps-toolsactive

DocShot

Local-first macOS capture for screenshots, recordings and lightweight annotation

what it proves

Proves native macOS product delivery where privacy is a construction constraint, not a policy line: explicit output decisions, cleanup on every exit path, bounded exports and a dual SwiftPM and Xcode test path kept in parity -- with the distribution gap named rather than hidden.

A local-first macOS capture utility for screenshots, screen recordings and lightweight annotation, built to remove the accounts, cloud and history-library overhead of existing options. Privacy holds by construction rather than policy: no output exists until an explicit Copy or Save, temporary recordings are removed on cancel, discard, failure, quit and next-launch cleanup, and there are no accounts, cloud upload, history library or analytics at any point. It currently ships as a signed Apple Development build for local testers and is not notarised or publicly distributed.

the journey

  1. 01 · where it started

    Existing macOS-adjacent screenshot tools force a trade-off. Lightshot's edit-in-place flow is fast but ageing and screenshot-only, ShareX has excellent window-aware selection but is Windows-only, and CleanShot X is a strong macOS-native option but paid and heavier than a five-second capture job needs. Nothing sat in the gap: fast, native, local-only and honest about not phoning home.

  2. 02 · the challenge

    Privacy had to hold by construction rather than policy: no output before an explicit Copy or Save, temporary recordings cleaned up on cancel, discard, failure, quit and next launch, audio strictly opt-in per recording, and a post-stop editor that renders a separate output while leaving the original file untouched.

  3. 03 · what changed

    The build now covers screenshot capture with automatic window detection or a precise region drag feeding a full annotation canvas, screen recording to local H.264 MP4, bounded GIF export for short clips with an MP4 fallback above the threshold, and a video editor for trimming, splitting and annotating completed recordings. It is native macOS throughout: no Electron, no web view, no backend.

  4. 04 · where it stands

    A signed Apple Development build, packaged as a drag-to-Applications DMG or ZIP for local testers. It is explicitly not notarised and not publicly distributed: recipients see macOS's unsigned-app warning and need Finder's Open override. That is a known, named gap, not an oversight.

proof points

product screenshots

DocShot screenshot editor with a captured window on the annotation canvas, an arrow annotation drawn on it, and toolbar controls for arrows, shapes, text, redaction and crop alongside Discard, Save and Copy PNG actions
Screenshot editor: annotation canvas with arrow, shape, text, redaction and crop tools -- nothing is written until Copy or Save
DocShot video editor showing a 29-second recording with playback controls, a timeline segment panel, trim in and out points, a Split control and a Save Edited MP4 button
Post-stop video editor: trim, split and annotate a completed recording, rendering a separate output while the original stays untouched
DocShot settings window with recording shortcut, opt-in system audio and cursor capture toggles, maximum frame rate, default save folder options, global capture shortcut and screen recording permission status
Settings: audio and cursor capture are explicit opt-ins, and the screen recording permission state is shown plainly

skills demonstrated

Native macOS developmentSwiftUI and AppKit interoperabilityMedia pipeline designPrivacy-first product designTest architecture

tech stack

swift 6swiftuiappkitscreencapturekitavfoundation

engineering hygiene

  • readme
  • docs
  • tests
  • ci
  • docker

Known gaps: ci, docker. Next step: notarise the build for public distribution and add CI so the dual test paths run on every push.

hygiene data updated 4 Aug 2026last pushed 31 Jul 2026

where to see it

Public repository. Read it directly: github.com/noel-q/docshot