🧵 Тетрадка, три машинки и одна программа: как я сделала учёт для ателье
💡 Моя знакомая держит маленькое ателье. Она спросила меня: «Ты же пишешь программы. Сделай мне что-нибудь, чтобы заказы не терялись — и чтобы без интернета». Я сделала. Так появилась 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.
🚀 Скачать демо и написать
- 🎁 Демо Atelier Offline ULTIMATE (бесплатно): automationportfolio-4.netlify.app
- 📸 Instagram — покупка и вопросы: @yurdesktop_studio
А вы бы отдали учёт ателье «на компьютер», а не в облако? Расскажите в комментариях — мне правда интересно.