Кейс SimpleIT · 2024

NECCO
INVENTORY

Система управления складом, продажами и финансами для оптовой овощной базы. Работает без интернета, устанавливается на телефон без App Store, генерирует документы на русском и турецком.

3,5 Месяца до продакшна
8 Модулей учёта
PWA Без App Store
1,5+ Года в продакшне
Клиент
Оптовая база
Овощи, турецкие поставщики
Период
Дек 2023 — Март 2024
+ поддержка 2024–2025
Тип работы
С нуля
Корпоративная система учёта
Продукт
В продакшне с марта 2024
01

Склад за городом.
Интернет зависает.

Ситуация
Ручной учёт + нестабильная связь
Компания по оптовой торговле овощами. Работает с поставщиками из Турции — принимает партии мандаринов, лимонов, клубники, кабачков, продаёт оптом российским покупателям. База расположена за городом — интернет постоянно зависает. Учёт вели вручную. Облачные решения не работали: при обрыве связи данные терялись или дублировались.
Задача для SimpleIT
Система, которая работает без интернета
Разработать веб-приложение для полного складского учёта: партии, продажи, касса, платежи, долги клиентов. Обязательно: работа без интернета с синхронизацией, установка на телефон без магазинов приложений, двуязычный экспорт документов — русский интерфейс и турецкоязычные накладные для партнёров.
02

С чем столкнулись
и как справились

Вызов 1
Работа без интернета
База за городом с нестабильным соединением. При обрыве связи данные не сохранялись или дублировались — одна и та же партия записывалась дважды, что ломало учёт.
Решение
PWA + Service Worker + защита от дублей
Всё состояние хранится локально — данные не теряются при отключении. Service Worker обслуживает приложение из кеша. При восстановлении интернета — автоматическая синхронизация. Защита от дублей на уровне логики сохранения.
Вызов 2
Двуязычные документы
Компания работает с турецкими поставщиками. Накладные и отчёты нужны на турецком — российский интерфейс для сотрудников, турецкоязычные документы для партнёров.
Решение
Два названия + TIR SATIŞ RAPORU
Товары хранятся с двумя названиями — русским и турецким. PDF по партиям генерируется в формате TIR SATIŞ RAPORU на турецком: названия товаров, полей и заголовков. Отдельный экспорт на русском.
Вызов 3
Мобильная доступность без App Store
Сотрудники работают с телефонов. Публикация в App Store и Google Play — долго, дорого и требует регулярного обслуживания.
Решение
PWA — иконка на рабочем столе
Устанавливается на телефон и компьютер прямо из браузера. Иконка на рабочем столе, открывается как нативное. Интерфейс адаптирован: горизонтальный скролл таблиц, прокручиваемые вкладки.
Вызов 4
Производительность на больших объёмах
Тысячи строк продаж, партий, кассовых операций. Стандартный рендеринг таблиц при таких объёмах работает медленно.
Решение
Виртуализация таблиц
Все таблицы реализованы с виртуализацией — в DOM отрисовываются только видимые строки. Прокрутка больших списков остаётся быстрой вне зависимости от объёма данных.
Вызов 5
Экспорт в несколько форматов
Разным получателям нужны документы в разных форматах: бухгалтерия — Excel, партнёры — PDF, мессенджеры — картинки.
Решение
PDF, XLS и PNG одной кнопкой
Ключевые разделы поддерживают экспорт в PDF, XLS и PNG. Счёт для клиента выгружается в любом из трёх форматов одной кнопкой — без копирования данных вручную.
03

8 модулей
учёта

Склад
Партии
Входящие партии от поставщиков: компания, номер, госномер авто, таможня, доставка (РФ + Турция), комиссия. Внутри — список товаров с ящиками и весом в кг.
Торговля
Продажи
Отгрузки покупателям с привязкой к партии и контрагенту. Ящики, кг, цена, сумма. Фильтрация и выделение строк с автоподсчётом суммы по выборке.
Финансы
Должники
Автоматический расчёт задолженности по каждому клиенту из данных продаж, кассы и платежей. Цветовая индикация. Экспорт в PDF и XLS.
Финансы
Касса
Приход и расход с привязкой к контрагенту. Автозаполнение «кто заполнял» по залогиненному пользователю. Архив отдельно.
Финансы
Платежи
Безналичные платежи: дата, контрагент, номер, сумма, банк, отправитель. Архив отдельно.
Документы
Счета
Генерация счёта за выбранный день. Экспорт в PDF, XLS и PNG одной кнопкой.
Справочники
Контрагенты
Клиенты, сотрудники, прочие — с телефонами, типами и ответственными менеджерами. Редактирование, архивация.
Справочники
Товары
Номенклатура с двуязычными названиями — русским и турецким. Используется во всех разделах.
04

Живые экраны
продукта

05

Офлайн-режим
с защитой от дублей

Главная техническая сложность — не функциональность, а надёжность в условиях плохой связи. Стандартный подход «отправил запрос — получил ответ» не работает, когда интернет обрывается в середине операции. Пользователь нажимает «сохранить», соединение пропадает, он нажимает ещё раз — и в базе появляются два одинаковых поступления.
  1. Все действия сохраняются локально — данные не теряются даже при полном отключении от сети
  2. Service Worker перехватывает запросы и обслуживает приложение из кеша — страницы работают без интернета
  3. При восстановлении соединения — автоматическая синхронизация с сервером
  4. Защита от дублей на уровне логики сохранения — повторное нажатие не создаёт вторую запись
Сотрудники работают в привычном режиме вне зависимости от качества интернета. Учёт не останавливается, данные не теряются и не задваиваются.
Результат для клиента
06

Стек,
на котором держится

Frontend
Next.js 14
React 18 + TypeScript — SSR, маршрутизация, типизация
UI
Material UI v5
Таблицы, формы, модальные окна — с виртуализацией строк
Офлайн
PWA / Workbox
Service Worker — кеширование, работа без интернета, установка на устройство
Состояние
Redux Toolkit
Redux Persist — локальное хранение при офлайн-режиме
База данных
PostgreSQL
Партии, продажи, касса, платежи, должники — реляционная модель
ORM
Prisma 5
Миграции схемы, типобезопасные запросы
Хостинг
Vercel + DO
Vercel — деплой приложения. DigitalOcean — сервер БД ($8/мес)
Документы
jsPDF + ExcelJS
Генерация PDF (русский + турецкий) и XLS-отчётов на клиенте
Next.js React TypeScript Material UI PWA Service Worker Redux PostgreSQL Prisma Vercel DigitalOcean jsPDF ExcelJS
07

Кто работал
над проектом

Project Manager
PM
Коммуникация с клиентом, демо и созвоны, координация разработки
Руководитель
Руководитель проекта
Коммерция: счета, акты, переговоры по доработкам
Lead Dev
Разработчик
Вся разработка: архитектура, функциональность, деплой, поддержка
Разработчик
Разработчик
Доработки отдельных модулей, фиксы
Период
Декабрь 2023
Старт разработки
Архитектура, база данных, PWA-оболочка, офлайн-режим, справочник контрагентов
Период
Янв — Фев 2024
Основная функциональность
Склад, продажи, касса, платежи, должники, счета, авторизация, экспорт PDF и XLS
Период
Март 2024
Финальная доводка и релиз
Мобильная адаптация, виртуализация таблиц, турецкоязычный экспорт, миграция на продакшн-сервер, передача доступов
Итог
2024–2025
Поддержка и доработки
Клиент вернулся дважды: лето 2024 — расширение функциональности, осень 2025 — обслуживание БД по мере роста записей
08

Что сдали

3,5
Месяца
от старта до продакшна
8
Модулей
учётных разделов — от склада до должников
4
Человека
в команде SimpleIT
1,5+
Года
в продакшне — работает по сей день
Офлайн
Работает без интернета
PWA + Service Worker. Данные не теряются при обрыве связи. Автоматическая синхронизация. Защита от дублей.
Документы
Два языка, три формата
Русский интерфейс + турецкоязычные накладные TIR SATIŞ RAPORU. Экспорт в PDF, XLS и PNG одной кнопкой.
Долгосрочно
Клиент вернулся дважды
Лето 2024 — расширение функциональности. Осень 2025 — обслуживание БД. Лучший показатель того, что продукт прижился в работе.

Нужна система
под ваши условия?

Разрабатываем корпоративные системы учёта и веб-продукты с нуля. Умеем работать со специфическими условиями — нестабильный интернет, мультиязычность, мобильные устройства без App Store.

simple-it.pro hello@simple-it.pro +7 993 981 41 45
SIMPLEIT