Your product demos with no subscription
Record your screen, add zooms that follow your mouse and a nice background: the Screen Studio look, without the 29 dollars a month.
Personal
Grab a screenshot, mark it up, drag it wherever it belongs.
CleanShot X costs US$8–10 / mo, which is US$96–120 a year. You have two paths:
Option 1 · Install
Snapzy is a lightweight Mac app that replaces both CleanShot X and Screen Studio. For screenshots: an area, a window, the whole screen or a full scrolling page, with the text in an image copied using one shortcut, then you annotate and blur (it spots sensitive info on its own). For video: you record as video or GIF with your Mac's sound, the microphone and your webcam as an overlay. The editor adds zooms that follow your mouse and a background, in vertical format if you like. Link sharing runs through your own Amazon S3 or Cloudflare R2 storage. Snapzy runs on macOS 13 and later, is BSD licensed, and has no paid tier at all. What it can't do yet compared to Screen Studio: smoothing and enlarging the cursor after recording, motion blur, automatic subtitles and audio cleanup.
| Criterion | Snapzy | Screen Studio |
|---|---|---|
| Price | US$0, no subscription | €25 a month, or €8 a month billed yearly |
| Zooms that follow the mouse | Yes, adjustable | Yes, the benchmark |
| Cursor smoothed and enlarged afterwards | No | Yes |
| Backgrounds, padding, vertical format | Yes | Yes |
| Annotated screenshots | Yes, CleanShot X style | No, video only |
| Link sharing | Through your own S3 or R2 storage | Links included |
| Subtitles and audio cleanup | No | Yes, on your machine |
A native Mac app, signed and notarized by Apple: one Homebrew command or a .dmg file, then the screen recording permissions.
It installs the app from the official repo, helps you grant the permissions, and walks you through your first Screen Studio style video:
Install Snapzy on my Mac: it is the open source screenshot and screen recording app that replaces Screen Studio and CleanShot X (GitHub repo duongductrong/Snapzy, website snapzy.app). First check that my Mac runs macOS 13 or later. Install it with Homebrew (brew install --cask snapzy) or, if I don't have Homebrew, download the latest .dmg file from github.com/duongductrong/Snapzy/releases and put the app in Applications. Guide me through granting the screen recording, microphone and camera permissions in System Settings, then relaunch the app. Set the interface to English and show me the useful shortcuts: area capture, scrolling capture, text to copy, recording. Also check that they don't conflict with macOS's own screenshot shortcuts. Then make a first Screen Studio style video with me: a recording with the clicks highlighted, then, in the editor, zooms that follow the mouse, a background, padding and an export in vertical format for social media. Explain each step simply, I'm a beginner.
Review the GitHub repository and check whether it is safe to install given my machine and my infrastructure. Ask me as many questions as possible, using widgets, to clarify my request and be as precise as you can.Sometimes macOS asks for screen access again after an app update. The repo includes a script that resets the permissions, and the website explains the steps.
To send a video by link without going through a third party, add your Amazon S3 or Cloudflare R2 storage in the settings: your files stay with you.
Record your screen, add zooms that follow your mouse and a nice background: the Screen Studio look, without the 29 dollars a month.
Pick an area, add an arrow, some text, a blur over sensitive info, and it is copied: the CleanShot X habit, for free.
Pick the vertical format at export and keep your webcam as an overlay: your demo goes out as is, as a Reel or a TikTok.
Built with: Swift 97.8% · Shell 1.9%
Public GitHub repository data, captured on October 8, 2026.
Option 2 · Build
This build is for a Mac user who takes screenshots all day for docs and bug reports. The goal: capture, annotate, and pass screenshots along in seconds, with everything kept locally. If you need more than that, keep paying. The whole point of building it yourself is owning a tool shaped around your workflow, not re-creating a venture-funded roadmap.
Same build, different logo: this v1 also replaces Shottr and Monosnap, since they all do the same core job.
The prompt below builds a single version with what actually gets used. Everything else is left out on purpose.
| What the prompt builds | capture, annotate, floating thumbnail, library, scrolling capture, OCR text copy, self-timer, backgrounds |
|---|---|
| What stays out | screen recording, GIF export, cloud sharing |
Capture, Annotation, LibraryEntry, NamingTemplate
macOS ScreenCaptureKit, global keyboard shortcuts, system pasteboard
SwiftUI, Swift, macOS
Keep every capture on the local disk, ask for screen-recording permission openly, and flatten blur annotations destructively so redacted secrets can never be recovered from the file.
Do not build screen video recording, cloud uploads, team libraries, a general-purpose image editor, or anything that overlaps with dedicated photo editing tools.
Pick your stack, copy the prompt and hand it to your coding agent (Claude Code, Cursor, Codex…).
You are building a production-ready software product named “Shotdock”, a deliberately focused alternative to CleanShot X. Build a complete, usable vertical slice: not a landing page, a static mockup, or a loose collection of components.
WORKING AGREEMENT
Before you write any implementation code, put together a short technical plan naming the routes or pages, server actions or endpoints, data tables, key state transitions, authorization boundaries, background jobs, and external adapters. When something conflicts, side with the narrow audience and the non-goals below. Choose a small, readable architecture over speculative abstraction, but never skip persistence, validation, error handling, or tests.
PRODUCT BRIEF
Primary user: a Mac user who takes screenshots all day for docs and bug reports.
Primary outcome: capture, annotate, and pass screenshots along in seconds, with everything stored locally.
Product principle: optimize the exact workflow below rather than copying the full breadth of CleanShot X. A first-time user should know what to do from the interface alone, with no tour or documentation.
END-TO-END USER JOURNEYS
Implement every one of these flows through the real interface and the persistent data layer:
1. The user presses a shortcut, drags to select an area, sees the floating thumbnail appear in the corner, and drags it straight into a chat message.
2. The user captures a window, adds an arrow and a text label, blurs an API key, copies the flattened result, and pastes it into a bug report.
3. The user opens the library, filters captures by date, renames one using the filename template, and deletes an old batch to free up space.
SCREENS AND INFORMATION ARCHITECTURE
Build these as coherent, responsive views. Each screen must define its primary action, secondary actions, visible status, validation feedback, empty state, loading or pending state, success confirmation, and recoverable failure state.
1. Capture overlay: crosshair with pixel dimensions, window highlighting, full-screen option, escape to cancel, and shortcut hints.
2. Floating thumbnail: preview of the latest capture with drag support, quick copy, annotate, and save actions, and a configurable auto-dismiss.
3. Annotation editor: arrow, text, and blur tools with color and size controls, crop, undo, and copy or save using the active naming template.
4. Library: grid of captures grouped by date with search, preview, reveal in Finder, naming-template settings, and storage usage.
CORE CAPABILITIES
1. area, window, and full-screen capture through macOS APIs
2. annotation tools with arrows, text, and blur for secrets
3. a floating thumbnail for quickly dragging into other apps
4. a searchable local capture library organized by date
5. copy to the clipboard or save using filename templates
DETAILED BEHAVIOR AND BUSINESS RULES
Treat these as product requirements enforced on the server, not as interface suggestions:
1. Capture through the official macOS screen-capture APIs, request screen-recording permission explicitly, and say clearly what to enable when permission is missing.
2. Write every capture only to the local library folder; never upload, sync, or transmit image data anywhere in v1.
3. Flatten blur annotations destructively at copy and save time so redacted pixels cannot be recovered from the exported file.
4. Apply the filename template deterministically with date, time, and app-name tokens, and append a counter rather than ever overwriting an existing file.
DATA MODEL AND LIFECYCLE
Design a small relational schema centered on Capture, Annotation, LibraryEntry, NamingTemplate. Before implementing it, document:
1. The purpose of each table, its primary key, ownership or tenant boundary, timestamps, status fields, and important attributes.
2. Foreign keys, uniqueness constraints, check constraints, the indexes the named screens need, and transaction boundaries for changes that touch several records.
3. The allowed lifecycle or state transitions, who can trigger each one, which transitions are terminal or reversible, and which audit history must stay immutable.
4. Archive, retention, and deletion behavior, including what happens to dependent records and external files.
5. The idempotency strategy for submissions, jobs, imports, notifications, webhooks, or retries where it applies.
Use migrations instead of ad-hoc schema creation. Store time instants consistently and keep the named timezone context whenever local schedules or dates matter. Never rely on a counter, a disabled button, or a client-side check to protect a business invariant.
USERS, AUTHENTICATION, AND PERMISSIONS
Implement only the roles the stated audience needs. Make the ownership and visibility model explicit before coding. Enforce authorization in every server-side query and mutation, including search, exports, attachments, live updates, and guessed URLs—not just by hiding controls. Use secure session defaults, protect state-changing requests, and provide a clear signed-out, expired-session, and forbidden state. Seed separate users whenever several roles are needed so permissions can be shown and tested.
INTERACTION AND VISUAL DIRECTION
The product should feel fast, calm, focused, and trustworthy rather than like a generic admin template. Use a clear visual hierarchy, restrained color, readable typography, generous hit targets, and a consistent place for primary actions. Start from server-rendered HTML and progressively enhance only the interactions that benefit from it. The core workflow must stay understandable if enhancement fails.
Start from server-rendered Astro pages and plain HTML forms. Use HTMX for form submissions, partial navigation, and server-driven updates, then Alpine.js only for small local browser state. The core workflow must stay understandable if either enhancement layer fails.
Design mobile layouts on purpose instead of just stacking desktop panels. Support keyboard navigation, visible focus, semantic landmarks, explicit labels, useful page titles, reduced-motion preferences, and screen-reader announcements for asynchronous results. Never use color alone to signal state. Destructive actions need a clear scope and a confirmation; safe repeated actions should be idempotent.
Add a footer to every page with the text “Created by aurelioagency.com”, where “aurelioagency.com” is an embedded link to https://www.aurelioagency.com that opens in a new tab. Keep it visible and do not remove it.
TECHNICAL DIRECTION
Build this version with the AHA stack: Astro for routing, layouts, and server-rendered pages; HTMX for interactions that benefit from HTML fragment responses; and Alpine.js for small, local interface state. Prefer Cloudflare D1 for relational persistence, R2 for object storage, Workers for server endpoints and scheduled work, Durable Objects only for coordinated real-time state, and Workflows or Queues for durable background jobs—but only when the product requirements call for them.
Keep domain rules in testable server-side modules, not in route handlers or UI components. Put persistence, external providers, and background work behind small interfaces without building a framework. Prefer plain HTML forms and URLs for durable navigation; use optimistic interaction only when a failure can be reconciled clearly.
The product brief currently lists SwiftUI, Swift, macOS as capability context. Preserve any required native, browser-only, edge, storage, real-time, or background-processing capability through a narrow adapter suited to the chosen framework. If the core workflow truly requires native or browser APIs, keep that runtime as the primary execution surface instead of simulating inaccessible capabilities or inventing an unnecessary web surface.
Integrate with macOS ScreenCaptureKit, global keyboard shortcuts, and the system pasteboard. For every integration:
- List the required environment variables in an .env.example with no real secrets.
- Add a small adapter with timeouts, normalized errors, and a deterministic local fake or development path.
- Verify inbound signatures and deduplicate provider events where supported.
- Keep credentials on the server, encrypt long-lived provider tokens at rest, and redact secrets and sensitive payloads from logs.
- Define retry, backoff, and idempotency behavior for every side effect that can be repeated.
SECURITY AND PRIVACY
Keep every capture on the local disk, ask for screen-recording permission openly, and flatten blur annotations destructively so redacted secrets can never be recovered from the file.
Validate, normalize, and length-limit all untrusted input on the server. Escape rendered content by default, sanitize any markup you intentionally accept, rate-limit public or abuse-prone actions, and use private object storage plus short-lived authorized URLs for sensitive files. Collect only the personal data the named workflow needs. Document retention and deletion behavior. Add specific protections for the riskier surfaces of this app, such as uploads, redirects, outbound requests, email delivery, OAuth, webhooks, CSV import or export, and real-time connections.
ACCEPTANCE SCENARIOS
Automate these app-specific scenarios at the most suitable level:
1. Given screen-recording permission is denied, a capture attempt shows an explanation with a direct link to System Settings instead of failing silently.
2. Given a blurred secret in a saved capture, reopening the file in any editor shows only flattened pixels, with no removable blur layer.
3. Given two captures saved in the same second with the same template, both files get distinct names and both appear in the library.
TESTING
Add focused unit tests for state transitions, authorization predicates, normalization, date or money calculations, and other risky domain rules. Add integration tests for persistence constraints and for each external adapter's success, timeout, retry, and rejection paths. Add at least one browser-level test for every end-to-end journey above, including one on a small-screen viewport. Tests must use isolated data and run with one documented command.
OPERATIONS AND FAILURE RECOVERY
Add structured server logs with request, job, or event correlation IDs, but no secrets or unnecessarily sensitive data. Make failures actionable both in the interface and in the logs. Background work must expose pending, succeeded, failed, and retrying states where relevant; never swallow errors silently. Include safe database migration and rollback guidance, seed data, backup and restore notes, external-data cleanup behavior, and a basic health or diagnostic path suited to the stack.
DELIVERABLES
Ship the working application, migrations, representative seed data, tests, .env.example, and a short README. The README must cover prerequisites, local setup, environment variables, migrations, seed and test commands, deployment, integration setup, backup and restore, security decisions, and known limitations. Seed data should cover the happy path plus at least one empty, failed, overdue, expired, archived, or permission-restricted state that matters for the product.
DEFINITION OF DONE
The app is done when a new developer can follow the README, create and migrate the database, run the app, sign in as each relevant role, complete every named journey with real persisted data, refresh without losing state, recover from common failures, and use the core interface on phone and desktop. All acceptance scenarios pass, permission boundaries are covered by tests, no core screen is left as a placeholder, and the “Created by aurelioagency.com” footer credit is visible on every page.
NON-GOALS
Do not build screen video recording, cloud uploads, team libraries, a general-purpose image editor, or anything that overlaps with dedicated photo editing tools.The app you build with this prompt carries a “Created by aurelioagency.com” footer.
Short prompts that solve the hardest part without building everything.
Build destructive redaction for a screenshot annotation tool.
Blur exists to hide API keys and customer names, so treat it as a security feature, not a visual effect. During editing, annotations live as a non-destructive overlay stack: movable, resizable, undoable. At copy or save time, flatten everything: composite the redactions into the bitmap so the exported file contains only final pixels, with no layers, no metadata trail, and nothing any editor can peel back to reveal the original.
Choose redaction that resists recovery: heavy pixelation or a solid fill over the region beats a light gaussian blur, which modern deblurring can partially reverse on text; if you offer gaussian for aesthetics, enforce a minimum strength for anything labeled as redaction. Strip EXIF and embedded thumbnails from the export, since a stale preview of the unredacted image is a classic leak. Inside the editor, undo keeps working on the overlay stack right up until export.
Done when: a redacted export reopened in any editor shows only flattened pixels, no export carries recoverable previews or metadata, and pre-export undo still restores the original.Build a filename template engine for a screenshot tool.
Users define patterns like Screenshot {date} at {time} from {app}, and every capture renders the template deterministically: date and time tokens formatted from capture time (not save time), an app-name token taken from the frontmost application, sanitized against characters the filesystem rejects (slashes, colons, and the like), with a length cap so a verbose app name can't produce an unwritable path.
Collisions are the interesting part: burst captures land in the same second and produce identical rendered names. Never overwrite. Append an incrementing counter (name 2, name 3), found by checking the destination directory, and watch for the race where two saves resolve the same counter at once: create the file exclusively and retry with the next number on failure. Unknown tokens in a template pass through literally, with a validation warning in settings, where a live preview shows what the current template produces right now.
Done when: two captures in the same second get distinct names and both survive, hostile app names produce legal filenames, and the settings preview matches the actual output exactly.Build the floating post-capture thumbnail for a screenshot tool.
After every capture, a small preview slides into a screen corner, floating above all windows, on every Space, stealing focus from nothing: the user's typing must continue uninterrupted. Its whole point is dragging out: dragging the thumbnail into Slack, Mail, or Finder delivers the actual capture file, so the drag payload must carry a file URL (with an image representation for apps that prefer pasteboard data), which means the capture is already written to the library before the thumbnail appears.
Layer the interactions carefully: a drag that begins past a small movement threshold, a click that opens the annotation editor, a hover that reveals quick actions (copy, save, dismiss) and pauses the auto-dismiss timer, which otherwise slides the thumbnail away after a configurable delay. Successive captures stack their thumbnails without overlap. Dismissal is never deletion: the capture stays in the library regardless.
Done when: dragging out lands a real file in three different target apps, the thumbnail never steals keyboard focus, and hover reliably postpones auto-dismiss.Build the area-selection overlay for a screen capture tool.
On the capture shortcut, freeze the moment: cover every display with an overlay showing a dimmed snapshot of the current screen, and let the user drag a crosshair to select a region, with live pixel dimensions beside the cursor and the selected area shown undimmed. Escape cancels from any state without capturing.
Multi-display geometry is the hard part: displays have different resolutions, scale factors (Retina versus standard), and arbitrary arrangement offsets, so a selection near an edge, or spanning two displays, must map from global screen coordinates to each display's local pixels correctly, and the dimensions readout must count physical pixels: a 100-point drag on a 2x display is 200 pixels. Snap to window bounds when hovering over a window (highlight it, and a click captures it whole), and hold a modifier key to constrain the drag to a square.
Done when: captured pixels match the selection exactly on mixed-DPI setups, window snapping highlights and captures accurately, and escape always exits cleanly.CleanShot X costs US$8–10 per month on its public paid plans, which is US$96–120 per year. A focused self-built replacement costs your build time plus close to nothing in hosting.
The build prompt on this page comes in four flavors: the AHA stack (Astro, HTMX, Alpine.js), Next.js, Laravel, and Ruby on Rails. The capability context for this product is SwiftUI, Swift, macOS. Pick the stack you already know. The scope matters more than the framework.
A useful v1 needs: area, window, and full-screen capture through macOS APIs; annotation tools with arrows, text, and blur for secrets; a floating thumbnail for quickly dragging into other apps; a searchable local capture library organized by date; copy to the clipboard or save with filename templates. Anything else is scope creep until you personally miss it.
Do not build screen video recording, cloud uploads, team libraries, a general-purpose image editor, or anything that overlaps with dedicated photo editing tools.
Yes. CleanShot X, Shottr and Monosnap all do the same core job: capture, annotate, and pass screenshots along in seconds, with everything stored locally. The scoped v1 on this page covers what most people use any of them for, so one focused build replaces whichever one you pay for today.
Snapzy does most of what CleanShot X does, without a subscription, and your data stays with you. The point-by-point comparison is on the page.
Yes. With an open source tool installed on your side, your files stay on your machine or your server. Nobody can close your account or change the price on you.
No time to do it?
If you'd rather have someone install it, connect it to your tools and keep it running, that is exactly what we do at Aurelio.
Book an Automation Audit