Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions MONETIZATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Монетизация Offload

План от 27.09.2026. Что уже сделано в коде — в конце.

## Исходные условия

- **Продукт** — офлайн-утилита для Mac (и Windows): освободить место без риска потерять данные, зашифрованный сейф на внешнем диске, бэкап проектов и ключей. Никаких серверов и сетевых запросов, код под MIT, интерфейс на русском.
- **Кто платит.** Владельцы Mac с диском на 256–512 ГБ, которым тесно, в первую очередь разработчики: Docker, Xcode, проекты, ключи. Им важны деньги за время и за спокойствие, а не «ещё одна чистилка».
- **Конкуренты.** CleanMyMac — около $40 в год (в России официально не продаётся), DaisyDisk — $10 разово, Gemini 2 (поиск дубликатов) — около $20. Бесплатные анализаторы (GrandPerspective, OmniDiskSweeper) ничего не переносят и не проверяют.
- **Ограничения.** Сети в программе нет и не будет: это часть обещания в SECURITY.md. Продавец — частное лицо, гражданин РФ, живёт в Таиланде: Stripe напрямую недоступен, из MoR-сервисов реалистичен Polar (см. `AuditAI/LEGAL.md`). Покупатели в основном из России: иностранные карты у многих не работают.

## Модель: бесплатное ядро + Offload Pro разовой покупкой

**Почему не подписка.** Утилита работает офлайн и не несёт серверных расходов; подписка на программу, которую открывают раз в месяц, отпугивает, а русскоязычная аудитория подписки на утилиты не любит особенно. **Почему не пожертвования.** Обычно платит меньше 0,5% пользователей, этого не хватит даже на подпись Apple. **Почему не реклама и не данные** — очевидно: это программа, которой доверяют пароль от сейфа.

**Разовая покупка с годом обновлений** (как у Sketch и Tower): ключ работает всегда; версии, вышедшие в течение года, открываются им навсегда; дальше — продление за полцены или остаётесь на последней версии того года. Это честно для покупателя и даёт повторную выручку от тех, кому нужны новые версии.

### Что бесплатно всегда, а что в Pro

Главный принцип: **Pro никогда не стоит между человеком и его данными.** Всё, что нужно, чтобы убрать данные в безопасное место и вернуть их обратно, — бесплатно навсегда, в том числе после конца пробы и с просроченным ключом.

| Бесплатно всегда | Offload Pro |
|---|---|
| Сейф: создание, открытие, смена пароля, копия заголовка | **Лишние копии** — поиск одинаковых файлов по SHA-256 |
| Перенос в сейф со сверкой, «Освободить место» | **Привычки** — похожее само попадает в нужный вопрос |
| Возврат перенесённого, возврат тома Docker | **Бэкап проектов** — обновляемая копия в сейф |
| Разбор: мусор, Docker, установщики, крупное в сейф | **Тома Docker в сейф** — упаковка со сверкой |
| Ключи и токены в сейф, восстановление из iCloud | |

Логика раздела: бесплатное освобождает место и держит данные в безопасности, Pro — это инструменты для тех, у кого Mac — рабочий инструмент. Всё найденное видно и без Pro: вопрос «Удалить лишние копии? 4,8 ГБ» показывается, но на «да» открывается окно Pro. Это и есть момент продажи, когда ценность видна в гигабайтах.

Если распределение не понравится, его меняют в одном месте — `ProFeature` и `CleanupQuestion.Kind.proFeature` в `Sources/OffloadCore/License.swift` и `CleanupQuestions.swift`.

### Цена

- **1 490 ₽ или $19** разово, год обновлений. Продление — **750 ₽ / $9**.
- **14 дней пробы** всего Pro с первого запуска версии с Pro — без ключа и без регистрации.
- **Ранние пользователи** (у кого есть журнал, база решений или настройки от прежних версий) получают всё открытое навсегда: забирать то, чем человек уже пользовался бесплатно, нечестно, и это же лучшие распространители.
- На одного человека — на все его Mac. Команды и компании — тот же ключ на каждого, скидка по договорённости.

Ориентиры: вдвое дешевле года CleanMyMac, на уровне Gemini 2. Поднять цену проще, чем опустить: пересмотреть после первых 50 продаж.

### Защита от копирования — честная

Ключ — строка `OFFLOAD-…`, подписанная Ed25519; программа проверяет подпись встроенным открытым ключом, без сети. Подделать ключ нельзя, но можно: поделиться своим ключом, сбросить пробу, удалив настройки, или собрать программу из исходников без проверки — код под MIT. Это сознательно: Offload продаётся тем, кому он полезен и кто готов заплатить автору, а DRM в программе для безопасности данных стоил бы доверия дороже, чем сэкономил бы. В ключе — имя покупателя, оно видно в окне «Offload Pro»: делиться ключом со своим именем охотников мало.

Если распространение сборок без проверки станет заметным, есть рычаг, который решает владелец: будущие версии под Functional Source License (исходники открыты, коммерческое распространение запрещено два года, потом MIT). Уже выпущенные версии остаются под MIT.

## Оплата и выдача ключа

**Решение 27.09:** продаём через отдельный бот [@OffLoadmg_bot](https://t.me/OffLoadmg_bot) на платёжной части SHILLVPN — там уже работают Stars, CryptoBot, xRocket, USDT TRC20/TON, TON и (скоро) СБП Platega. Бот выдаёт ключ сразу после оплаты; закрытый ключ подписи создаётся и хранится только на сервере бота, ручная выдача — командой админа `/offload_key Имя`. Кнопка «Купить…» ведёт на `t.me/OffLoadmg_bot?start=pro`. Новости и релизы — канал [@offload_dmg](https://t.me/offload_dmg), бот в нём администратор. Ниже — как было задумано до этого решения; `OffloadLicense` остаётся для проверки ключей и на случай выдачи без бота.

**Этап 1 — вручную, пока продаж меньше ~10 в день.** Выдача ключа — одна команда:

```bash
swift run OffloadLicense issue "Имя покупателя" --note "USDT, заказ 17"
```

Ключ печатается и дописывается в `~/.config/offload-license/issued.tsv` (номер, имя, даты, заметка) — по нему возвраты и замены. Способы оплаты — решение владельца; реалистичные:

1. **Криптовалюта** (USDT, TON) по счёту — так же, как услуги AuditAI. Работает для России и остального мира.
2. **Карты мира** — Polar: Таиланд в списке стран продавцов, софт разрешён (в отличие от ручных услуг). Заявка по AuditAI уже подаётся; Offload — отдельный продукт в той же организации или отдельная организация. Polar сам выдаёт ключи, но свои, неподписанные; нам нужен наш — выдаём вручную по письму о покупке, потом webhook.
3. **Рубли** — через Telegram-бота с оплатой в Stars или счётом; решить, какой канал для рублей у вас уже есть.

**Этап 2 — автоматическая выдача**: webhook Polar или платёжного бота вызывает `OffloadLicense issue` и отправляет ключ письмом. Для этого закрытый ключ окажется на сервере — делать это стоит, только когда ручная выдача начнёт мешать, и с отдельным ревью безопасности.

**Возврат** — 14 дней без вопросов. Отозвать ключ офлайн нельзя (программа никуда не ходит); это принимаем: возвратов у утилиты за $19 единицы.

## Как понять, работает ли

Телеметрии нет и не будет. Считаем снаружи программы:

- скачивания релизов на GitHub (`gh api repos/audit0/Offload/releases` → `download_count`) — верх воронки;
- выданные ключи из `issued.tsv` — низ воронки; их отношение — конверсия;
- продления через год — удержание.

Ориентир: 2–4% скачавших покупают. Меньше 1% через месяц после выхода — пересмотреть, что в Pro (скорее всего, в Pro должен уйти более частый сценарий) или цену.

## Запуск

1. Сделать копию закрытого ключа `~/.config/offload-license/signing.key` в сейф. Потеряется — выданные ключи продолжат работать, но новых не выпустить; утечёт — кто угодно выпустит ключи, и придётся менять открытый ключ в новой версии.
2. Выбрать способы оплаты и вписать их в раздел README «Offload Pro → Как купить» (кнопка «Купить…» в программе ведёт туда).
3. Поднять версию до 0.4.0, выпустить релиз. Анонс в Telegram-канале по шаблонам `.hub/templates/telegram`: главное — «всё, чем вы пользовались, остаётся бесплатным навсегда».
4. Перенести то же на Windows (формат ключа тот же; Ed25519 в .NET — через NSec или BouncyCastle), иначе ключ, купленный на Mac, на Windows не пригодится.
5. Через месяц — посмотреть конверсию и решить про цену и состав Pro.

## Что сделано в коде (Mac)

- `Sources/OffloadCore/License.swift` — формат ключа, проверка подписи Ed25519 (CryptoKit), что входит в Pro, расчёт статуса: ключ, проба, ранний пользователь, просроченные обновления.
- `Sources/OffloadLicense` — выпуск ключей: `keygen`, `issue`, `verify`, журнал выданных.
- `Sources/Offload/ProModel.swift`, `Views/ProView.swift` — статус на этом Mac, окно «Offload Pro» (меню «Offload» → «Offload Pro…» и строка над панелью диска), ввод и удаление ключа.
- Ограничения на «да»: лишние копии и проекты в бэкап в разборе, «Обновить бэкап», «Архивировать» в Docker, привычки. «Разрешить всё» вопросы из Pro пропускает. Начатое не прерывается; возврат не ограничен нигде.
- `scripts/build-app.sh` пишет в Info.plist день выхода версии (`OffloadReleaseDate`, по дате последнего коммита).
- `OffloadChecks` — проверки ключа: подделка, чужая подпись, мусор, переносы строк, сроки, проба.
- Демо-режим: `OFFLOAD_DEMO_PRO=free` или `trial` показывает программу без ключа; `OFFLOAD_SNAPSHOT_PRO=1` снимает окно «Offload Pro».
3 changes: 3 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ let package = Package(
// XCTest и swift-testing есть только в Xcode, поэтому проверки — отдельная программа:
// swift run OffloadChecks
.executableTarget(name: "OffloadChecks", dependencies: ["OffloadCore"]),
// Выпуск ключей Offload Pro — только у автора, с закрытым ключом вне репозитория:
// swift run OffloadLicense issue "Имя"
.executableTarget(name: "OffloadLicense", dependencies: ["OffloadCore"]),
],
swiftLanguageModes: [.v5]
)
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,25 @@ less install.sh && zsh install.sh

Подробности, модель угроз и известные ограничения — в [SECURITY.md](SECURITY.md).

## Offload Pro

Всё, что нужно, чтобы освободить место и не потерять данные, бесплатно навсегда: сейф, перенос со сверкой, возврат перенесённого, разбор (мусор, Docker, установщики, крупное в сейф), ключи и токены в сейф, восстановление из iCloud. Вернуть своё Offload не мешает никогда — ни без ключа, ни после пробы.

Offload Pro добавляет инструменты для тех, у кого Mac — рабочий инструмент:

- **Лишние копии** — одинаковые файлы по SHA-256; одна копия остаётся всегда, лишние уходят в Корзину.
- **Привычки** — Offload учится на ваших ответах и сам кладёт похожее в нужный вопрос.
- **Бэкап проектов** — обновляемая копия папок с проектами в сейф.
- **Тома Docker в сейф** — упаковка неиспользуемых томов со сверкой каждого файла.

**1 490 ₽ или $19, один раз.** Ключ работает всегда; новые версии — год, дальше продление за полцены, а не продлили — остаётся последняя версия того года. Первые 14 дней Pro открыт целиком, без ключа и регистрации. Если вы пользовались Offload до появления Pro, всё открыто навсегда.

Ключ проверяется на самом Mac подписью, без сети: Offload по-прежнему не ходит в интернет. Ввести ключ — меню «Offload» → «Offload Pro…».

### Как купить

В Telegram-боте [@OffLoadmg_bot](https://t.me/OffLoadmg_bot?start=pro) (кнопка «Купить…» в окне «Offload Pro» ведёт туда же): оплата Telegram Stars, криптовалютой (CryptoBot, xRocket, USDT TRC20/TON, TON) или по СБП. Ключ приходит сообщением сразу после оплаты; вставьте его в окне «Offload Pro». Возврат — 14 дней, напишите в том же боте. Новости и релизы — в канале [@offload_dmg](https://t.me/offload_dmg).

## Полный доступ к диску

Без него Offload не видит «Документы», «Рабочий стол», Почту и данные многих приложений. Откройте «Системные настройки → Конфиденциальность и безопасность → Полный доступ к диску», включите Offload и перезапустите его. Кнопка для перехода в настройки есть в самом приложении.
Expand Down Expand Up @@ -192,6 +211,8 @@ GitHub Actions прогонит проверки, соберёт universal-сб

Offload frees up space on a Mac without risking data loss. It shows what takes up disk space, moves selected items to an external drive, keeps an incremental backup of projects, stores keys and tokens in an encrypted container and restores files from restic backups in iCloud Drive. The original is deleted only after the copy has been re-read from disk and matched byte for byte (SHA-256).

Everything needed to free up space and keep data safe is free forever; Offload Pro (a one-time $19 with a year of updates, 14-day trial, free for users of earlier versions) adds duplicate removal, learned habits, project backup and Docker volume archiving. The license key is verified offline with an Ed25519 signature — the app still makes no network requests.

It refuses to move things that would break apps — virtual machines and media libraries (even nested deep inside a folder), app data in `~/Library`, `~/.ssh` — and handles exFAT pitfalls (permissions, AppleDouble `._*` files, sparse files) and a Docker trap where the archive stream fills `Docker.raw` via container logs.

Install:
Expand Down
Loading