Skip to content

Repository files navigation

🖥️ DesktopRecord

DesktopRecord icon

macOS app that continuously captures your screen activity with OCR-powered search and analytics

Swift SwiftUI macOS

Features · Getting Started · Tech Stack

Download DMG


Timeline View

Settings


✨ Features

  • Continuous Screen Capture — Automatically records screenshots of your desktop activity throughout the day
  • OCR-Powered Search (Pro) — Full-text search across all captured screens using Apple Vision + a local SQLite FTS5 index
  • Timeline View — Browse your activity chronologically with an interactive timeline interface
  • App Analytics — Pie charts (free) and weekly trend views (Pro) showing how you spend time across applications
  • Active App Tracking — Detects the frontmost application and window title via Accessibility APIs
  • Privacy Controls — Exclude specific apps, add blur regions, auto-pause during screen sharing, and Touch ID lock
  • Data Retention — Configurable retention policies automatically clean up old captures (3 days free, up to unlimited on Pro)
  • Menu Bar Access — Quick access from the macOS menu bar

Everything runs 100% on-device. Nothing is ever uploaded. See landing/src/app/privacy/page.tsx for the full privacy policy.

💳 Free vs. Pro

DesktopRecord is free to use; a one-time $7.99 in-app purchase (StoreKit 2, non-consumable) unlocks Pro. The paywall is enforced in the shipped build — see LicenseManager.swift. Local purchase testing uses DesktopRecord/Products.storekit (already wired into the Run scheme).

🚀 Getting Started

Prerequisites

  • macOS 14.0+
  • Xcode 15+
  • Screen Recording & Accessibility permissions

Installation

git clone https://github.com/your-username/DesktopRecord.git
cd DesktopRecord

Generate the Xcode project with XcodeGen and open it:

xcodegen generate
open DesktopRecord.xcodeproj

Then build and run (⌘R). On first launch, grant Screen Recording permission and relaunch.

Run the tests

xcodebuild test -project DesktopRecord.xcodeproj -scheme DesktopRecord \
  -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO

Build a distributable DMG

# Public freemium release (enforces the Pro paywall) — this is what ships:
bash scripts/build-release-dmg.sh

# Personal build with Pro permanently unlocked (FORCE_PRO):
bash scripts/build-pro-dmg.sh

Both produce a universal (arm64 + x86_64) .app in build/. For public distribution, sign with a Developer ID and notarize — see docs/APP_STORE_LISTING.md and scripts/build-release-dmg.sh for the exact commands.

Landing page

A static Next.js marketing site lives in landing/:

cd landing
npm install
npm run build   # static export to landing/out

The Download buttons serve landing/public/DesktopRecord.dmg; replace that file with a freshly notarized release before deploying.

🛠️ Tech Stack

Category Technology
Language Swift 5.9
UI SwiftUI
OCR Apple Vision Framework
Database SQLite
Build XcodeGen (project.yml)
Platform macOS 14.0+

📁 Project Structure

DesktopRecord/
├── DesktopRecord/            # macOS app source
│   ├── App/                 # App entry point + AppDelegate
│   ├── Models/              # CaptureRecord, AppInfo, UserSettings
│   ├── Services/            # CaptureEngine, OCRService, SearchEngine,
│   │                        # DatabaseManager (SQLite/FTS5), LicenseManager
│   │                        # (StoreKit 2), Privacy/Retention/Storage managers
│   ├── ViewModels/          # Timeline / Search / Analytics view models
│   ├── Views/               # SwiftUI views (Timeline, Search, Analytics,
│   │                        # Settings, Onboarding, MenuBar)
│   ├── Utilities/           # Constants & helpers
│   ├── Products.storekit    # Local StoreKit config for paywall testing
│   └── Info.plist / *.entitlements
├── DesktopRecordTests/      # XCTest unit tests (pure logic)
├── scripts/
│   ├── build-release-dmg.sh # Public freemium DMG (ships to users)
│   └── build-pro-dmg.sh     # Personal Pro-unlocked DMG (FORCE_PRO)
├── docs/APP_STORE_LISTING.md# App Store / release marketing copy
├── landing/                 # Next.js static marketing site + privacy policy
└── project.yml              # XcodeGen configuration

📄 License

MIT License © 2025 Mark Santos

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages