🧵 Тетрадка, три машинки и одна программа: как я сделала учёт для ателье

💡 Моя знакомая держит маленькое ателье. Она спросила меня: «Ты же пишешь программы. Сделай мне что-нибудь, чтобы заказы не терялись — и чтобы без интернета». Я сделала. Так появилась Atelier Offline ULTIMATE — программа для учёта швейного дела, которая живёт на компьютере и не просит подписку.

📖 С чего всё началось

У моей знакомой — маленькое ателье. Три швейные машинки, комната с манекенами, запах ткани и горячего утюга. Заказы она записывала в общую тетрадку: номер, мерки, срок, предоплата. Мерки — на клочках бумаги, которые вечно терялись. Деньги — в отдельном блокноте, «кто сколько занёс».

Однажды она попробовала облачную программу для учёта. Красивую, с графиками и дашбордами. Три месяца платила подписку — а потом интернет в мастерской начал пропадать. И она бросила:

💬 «Я не могу ждать, пока загрузится страница. У меня клиент стоит с тканью в руках».

А потом спросила меня:

💬 «Слушай, ты же пишешь программы. Сделай такую, но на моём компьютере. Чтобы без интернета. И чтобы не платить каждый месяц».

Тогда мне казалось, что я делаю одному человеку удобную штуку. Оказалось — это начало большой истории.

🖥 Что получилось

Программа называется Atelier Offline ULTIMATE. Вот как выглядит её главный экран:

Atelier Offline ULTIMATE
Atelier Offline ULTIMATE

Обзор бизнеса: выручка, расходы, прибыль, заказы в работе и остатки материалов — всё на одном экране.

Это не «таблица с заказами». Это всё хозяйство ателье в одном месте:

  • 🧾 заказы — с описанием, сроком, предоплатой и позициями (услуга, материал, количество, цена);
  • 👤 клиенты — с контактами, мерками, историей и балансом;
  • 🧵 материалы — с остатками и минимальным порогом, чтобы вовремя увидеть, что ткань заканчивается;
  • ✂ услуги — с ценой и нормой времени;
  • 👥 сотрудники и должности — с окладом и процентом от заказа;
  • 💰 зарплаты — оклад плюс комиссия, премии и удержания, за период;
  • 📊 финансы — доходы и расходы по категориям;
  • 📦 закупки — заказы поставщикам с позициями;
  • 📈 отчёты — выручка, прибыль, графики.

А ещё — напоминания: сроки заказов, низкие остатки, зарплаты к выплате.

Вот тот же проект, но в деталях — экран с заказами и материалами:

Atelier Offline ULTIMATE 
Atelier Offline ULTIMATE 

Заказы, сроки и остатки материалов — то, что раньше жило в тетрадке и на клочках бумаги.

💾 Почему я сделала её без интернета

Меня часто спрашивают: «А почему не облако?». Отвечу честно — потому что моей знакомой оно не подходило, и я подозреваю, что она не одна такая.

Дело даже не только в деньгах, хотя три-пять тысяч в месяц за программу для десяти заказов — это ощутимо, когда у тебя маленькое дело. Дело в ощущении, что ты в гостях. Ты работаешь в чужой программе, на чужом сервере, по чужим правилам. Пропал интернет — ты пропал. Кончилась оплата — потерял доступ к своим же данным, которые сам же и занёс.

Поэтому все данные Atelier хранятся в одном файле на компьютере — в папке вашего пользователя. Не «где-то в облаке», а вот здесь, рядом.

Из этого следует несколько приятных вещей:

  • ✅ Резервная копия — это копирование файла. В программе есть кнопка: она сама сохраняет копии и держит их за последние 7 дней. А перед восстановлением делает страховочную копию текущей базы — на случай, если восстановили не то.
  • 🔒 Никуда ничего не уходит. Не потому, что я такая хорошая, а потому, что программе физически некуда отправлять данные — связи с моими серверами у неё нет.
  • ⚡ Отвечает мгновенно. Поиск по клиентам, переключение экранов, отчёты — всё считается на вашем компьютере, без ожидания сети.

⚙ Пара технических решений, которыми я довольна

Программа написана на Kotlin и JavaFX, данные — в SQLite. Расскажу про две вещи, которые я считаю важными.

💵 Деньги считаются в копейках, целыми числами. Не в «примерных» дробных числах, а в копейках: price_kopecks, salary_kopecks, total_kopecks. Это скучная деталь, но именно из-за неё в документах не появляются хвосты вида 149999.99999999997, которые потом краснеют в договоре. Я один раз увидела такое в чужой программе — и решила, что у меня так не будет.

🔎 Индексы под реальные запросы. В базе больше тридцати индексов — по статусу заказа, дедлайну, клиенту, сотруднику, категории услуг, остаткам материалов. Для локальной базы это не «преждевременная оптимизация», а разница между мгновенным фильтром и заметной паузой, когда заказов становится много.

💡 И ещё: база открывается в режиме WAL — это значит, что интерфейс читает данные, пока в фоне идёт запись, и окно не «залипает» на сохранении.

🛒 Как это продаётся (и почему без кнопки «Купить»)

На сайте нет ни корзины, ни платёжной формы. Единственное действие — скачать демо. А полную версию мы обсуждаем лично, в сообщениях Instagram. Это осознанно.

Во-первых, цена зависит от дела. Мастерская на три машинки и небольшое производство — разные масштабы. Ставить на сайте одну цифру для всех — значит либо отпугнуть маленьких, либо продешевить с большими.

Во-вторых, такие программы продаются через доверие. Человеку важно знать, что если что-то не получится, ему помогут, а не отправят в раздел «Частые вопросы».

✅ А главное — демо-версия у меня честная. В ней работает вообще всё: те же экраны, отчёты, расчёты, печать. Отличие ровно одно — данные не сохраняются. Поработали, закрыли — в следующий раз всё начинается заново. Так человек заводит своих клиентов, считает свои заказы и сам видит, подходит ему программа или нет. Без обещаний с моей стороны.

🧪 Тесты и покрытие

Программу я сдавала не «на глаз». В сборке стоит проверка покрытия: если бизнес-логика покрыта меньше чем на 80%, сборка падает. Порог я подняла с 20% до 80% — не потому, что люблю цифры, а потому, что в ателье считаются деньги, а ошибка в зарплате или остатке ткани — это чей-то реальный вечер.

Что в цифрах:

  • 487 тестов, все зелёные (0 падений);
  • по модулям: ядро — 175, данные — 132, финансы — 116, склад — 43, интерфейс — 21;
  • покрытие строк в модулях ядра: 96% (core), 96% (data), 98% (finance), 96% (inventory).

Интерфейс — экраны и диалоги — я из замера исключила осознанно: проверять клики по кнопкам смысла мало, а вот расчёты, остатки и работу с базой — обязательно. Тесты идут на базе в памяти, поэтому прогоняются быстро и не трогают рабочие данные.

❓ Частые вопросы

Программа работает без интернета? Да, полностью. Заказы, расчёты, отчёты и печать — всё на вашем компьютере. Интернет нужен только чтобы скачать установщик.

Где хранятся мои данные? В одном файле на вашем компьютере. Ничего не уходит наружу. Файл можно скопировать на флешку — в программе есть резервное копирование.

Чем демо отличается от полной версии? Только сохранением. В демо работает всё, без ограничений по времени — просто изменения не сохраняются.

Считает ли программа себестоимость и зарплаты? Да. Есть материалы с закупочной ценой, услуги с нормой времени, сотрудники с окладом и процентом от заказа — и расчёт зарплат за период.

Как купить полную версию? Написать мне в личные сообщения Instagram — там же обсудим цену и условия. На сайте покупка не оформляется: там только демо.

Есть версия для Mac или Linux? Пока только Windows 10/11.

🚀 Скачать демо и написать

А вы бы отдали учёт ателье «на компьютер», а не в облако? Расскажите в комментариях — мне правда интересно.

11