Akkan

Muzaffer Mert Akkan

Инженер-программист — ERP и бизнес-системы

Самарканд, Узбекистан

Строю университетскую ERP на полной ставке · Открыт для избранных проектов

Я создаю программное обеспечение, на котором держится работа организации, — и веду всё сам: от первого разговора до запущенного продукта.

mert@akkan.dev

Музаффер Мерт Аккан — инженер-программист, ERP и бизнес-системы, Самарканд

Требования. Системы. Внедрение.

Большинство организаций работают на таблицах, старой системе, которую никто не решается трогать, и программе, которая почти подходит. Я заменяю всё это софтом, построенным вокруг того, как на самом деле устроена работа.

Я работаю один, от начала до конца. Сажусь рядом с людьми, которые делают работу, моделирую их данные и правила, создаю интерфейсы, которыми они пользуются каждый день, и размещаю результат на сервере, который сам обслуживаю. Между тем, кто понял задачу, и тем, кто написал код, нет передачи дел.

Недавние работы: университетская ERP, которой каждый день пользуется отдел кадров; система проектирования и коммерческих предложений для производителя алюминиевых конструкций — на десктопе, в мобильном приложении и в вебе; бэк-офис продаж для застройщика; опрос, которым за первую неделю воспользовались 4 000 студентов без единого сбойного запроса.

Что я создаю

  • ERP и системы бэк-офиса

    Сотрудники, студенты, клиенты, склад, бронирования, договоры — записи с историей, правами доступа и журналом аудита.

  • Расчёт цен, коммерческие предложения и документы

    Точные правила ценообразования, спецификации материалов, PDF и Excel, на которые может положиться бухгалтерия.

  • Десктоп, мобильные и веб из одной кодовой базы

    Одна и та же бизнес-логика на каждом устройстве, которым реально пользуются сотрудники клиента, — в том числе офлайн.

  • Замена устаревших и коробочных решений

    Перенос данных из таблиц и старых систем со сверкой каждой записи и без простоя для тех, кто с ними работает.

  • Многоязычность по умолчанию

    Интерфейсы на узбекском, русском, английском и турецком — с единым форматом чисел и дат во всех языках.

  • Развёртывание и эксплуатация

    Docker, CI/CD, резервные копии, нагрузочное тестирование перед запуском и патчи к рабочим базам данных, которые никогда не пересоздаются.

ВЕБ · ДЕСКТОП · МОБИЛЬНЫЕ · POSTGRESQL · TYPESCRIPT · PHP

Пять систем.

Две в ежедневной работе, одна в эксплуатации у клиента, две в разработке. Все цифры ниже реальные и актуальны на сентябрь 2026 года.

В ежедневной работе

2026 — сейчас

Kampus: университетская ERP

Для кого: государственный технический университет в Узбекистане — около 9 000 студентов и 800 сотрудников

ERP для всего университета, спроектированная и построенная с нуля одним разработчиком — штатным ERP-инженером университета. Кадровый модуль — все операции с академическим и административным персоналом — завершён и используется каждый день. Академические модули (учебные планы, запись на курсы, оценки, переводы, академические выписки, проверка готовности к выпуску) построены и ждут внедрения.

Что изменилось для клиента

У кадровых данных, которые раньше жили в таблицах, теперь единый источник правды с полной историей: каждое изменение датировано, подкреплено документом и привязано к человеку, который его внёс.

Административный документооборот идёт внутри системы, а не по почте и на бумаге.

Четыре языка интерфейса для многоязычного коллектива.

  • ~120 таблиц в базе данных
  • 230+ хранимых функций с бизнес-правилами
  • 8 341 запись о студентах импортирована и сверена
  • 4 языка интерфейса

Подробности

Шесть схем PostgreSQL. Бизнес-правила живут в функциях PL/pgSQL и ограничениях, поэтому выполняются независимо от того, какое приложение к ним обращается; Laravel API открывает их для фронтенда на React/TypeScript. Кадровые записи ведутся с датами вступления в силу, изменения подкреплены документами, журнал аудита фиксирует автора каждого действия. Ролевое управление доступом и единый вход через Microsoft Entra ID. Воспроизводимый импорт исторических данных из Excel — 8 341 студент, 97 образовательных программ и около 4 000 курсов, — где каждое расхождение попадает в отчёт, а не исправляется молча. Транзакционные патчи обновлений, ночные резервные копии с проверкой, развёртывание в Docker на собственных серверах университета.

Самое сложное — требования. Процессы отдела кадров существовали в головах людей и в многолетних таблицах; модель должна была хранить каждое историческое состояние, не придумывая правил, которых у отдела никогда не было.

Работает

2026

Опрос, которым за неделю воспользовались 4 000 студентов

Для кого: тот же университет — его 8 962 действующих студента

Каждый год университет решает, какие элективные курсы открыть, и до этого года решал, не спросив студентов. Это мобильное приложение, в которое студенты входят через университетскую учётную запись и оценивают каждый предложенный электив сразу на оба семестра. Учебный офис видит спрос и открывает курсы в соответствии с ним.

Что изменилось для клиента

Решение теперь принимается на основе данных: 244 курса оказались не нужны никому — и университету важно было узнать это до их открытия.

Выгрузку офиса регистратора, в которой не хватало 260 студентов, исправили повторным импортом данных, а не изменением кода — прямо посреди опроса.

Ноль сбойных запросов за неделю запуска, когда тысячи студентов заходили через один сетевой адрес кампуса.

  • 4 071 студент вошёл за первые восемь дней
  • 34 152 оценки курсов
  • 2 644 оценки за самый загруженный час
  • 0 сбойных запросов при 500 студентах в одну секунду

Подробности

PostgreSQL, PL/pgSQL, Laravel, React, TypeScript; вход через Microsoft Entra ID; четыре языка для каждого экрана и всех 860 описаний курсов. Транзакционные блокировки строк, чтобы оценки не конфликтовали с завершением опроса, — проверено на 2 000 конкурирующих операций от 50 клиентов pgbench, ноль сбоев. Пиковый тест k6: 500 студентов в одну секунду, p95 — 252 мс, ноль сбоев; длительный тест: 14 238 запросов, ноль сбоев. Нагрузочные тесты нашли две ошибки до запуска — keep-alive в nginx, из-за которого php-fpm не хватало воркеров, и ограничитель частоты запросов, считавший весь NAT кампуса одним студентом, — обе исправлены до первого утра. Рабочая база данных приняла 12 идемпотентных патчей схемы и ни разу не пересоздавалась; каждый патч завершается сравнением рабочей схемы с той, что хранится в репозитории.

В эксплуатации

2025 — 2026

Plana: проектирование, расчёт цены и коммерческие предложения для производителя

Для кого: производитель алюминиевых окон и дверей в Самарканде

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

Что изменилось для клиента

Коммерческие предложения уходят быстрее и без ошибок: каждое количество профиля, стекла, уплотнителя и фурнитуры рассчитывается, а не оценивается на глаз.

Дилеры работают в собственном портале со своими уровнями цен и отслеживанием заказов.

Программа и план её развития принадлежат компании — о десктопном редакторе клиент заявил это письменно.

  • 3 платформы с общими бизнес-правилами
  • 1 009 автотестов цен, геометрии и хранения данных
  • 1 клик — и новая версия для Windows уходит на все установки

Подробности

TypeScript везде. Геометрия, ценообразование, спецификации, карты раскроя и генерация документов живут в общих пакетах, которые используют десктопное приложение на Tauri, мобильное на React Native/Expo и сайт на Next.js, — поэтому правило цены пишется один раз. Сцены отрисовываются из одной модели: через Konva на десктопе, Skia на мобильном и SVG в вебе. Хранение данных с поддержкой офлайна и синхронизацией, изоляция проектов по командам, дилерские уровни цен, отслеживание заказов и журнал движения складских запасов. Деньги хранятся в целых минимальных единицах, а курс валют фиксируется при выставлении счёта, поэтому коммерческое предложение никогда не меняется после отправки. Установщики для Windows и обновления внутри приложения выпускаются через GitHub Actions.

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

В разработке

2026 — сейчас

Nivo: бэк-офис продаж для застройщика

Для кого: застройщик жилой недвижимости

Собственная замена арендованной мультитенантной платформы продаж: квартиры застройщика, его клиенты, бронирования, договоры, графики платежей, долги и документы — в одной системе, которую он контролирует. Квартиры, клиенты и бронирования готовы; следующие — договоры и платежи.

Что изменилось для клиента — на сегодня

Реальный фонд — 596 квартир в пяти блоках — импортирован и сверен с итогами старой системы, цифра за цифрой.

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

Выгрузки в Excel, итоги которых считаются по протестированным правилам, — поэтому два человека никогда не видят двух разных цифр.

  • 596 квартир сверено с прежней системой
  • 34 зафиксированных архитектурных решения
  • 3 языка, русский — первый

Подробности

Монорепозиторий на TypeScript: Next.js (серверные компоненты и серверные действия), PostgreSQL 18 с Prisma, воркер pg-boss для выгрузок, документов и задач по расписанию — без Redis. Доменные правила — в ядре, не зависящем от фреймворка, с юнит-тестом на каждое правило; статусы меняются только через именованные события; ограничения CHECK отвергают то, что никогда не может быть правдой. Каждая бизнес-таблица содержит идентификатор компании и читается через клиент с ограниченной областью видимости, поэтому развёртывание для одной компании может стать мультитенантным без перестройки данных. Журнал аудита только на добавление, защищённый триггерами базы данных. Сессии и пароли реализованы без библиотеки аутентификации. Реализация «с чистого листа» по функциональному аудиту старой системы — без кода и материалов поставщика.

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

В разработке

2026

Единая лента обращений для частной больницы

Для кого: частная больница в Самарканде

Пациенты пишут в больницу через Telegram, по телефону, в Instagram и в отзывах, и в каждом канале отвечал тот, кто первым увидел сообщение. Эта система превращает каждое входящее сообщение в обращение со статусом, ответственным и измеренным временем ответа, чтобы руководство видело, на что ответили, как быстро и кто. Первый этап подключает Telegram — бота, бизнес-аккаунт и комментарии в канале — на ядре, спроектированном так, чтобы остальные каналы подключались как плагины.

Что изменится для клиента — план

Ни одно обращение не остаётся в чьём-то личном телефоне; у каждого есть ответственный и срок.

Руководители в один клик видят текущую очередь и еженедельные отчёты по каждому оператору.

Данные хранятся на серверах в Узбекистане.

  • ≤ 3 с от входящего сообщения до ленты — цель по p95
  • 100 % входящих сообщений сверяются с источником

Подробности

Архитектура на адаптерах каналов: ядро обращений никогда не импортирует типы Telegram; новый канал — это один адаптер и одна страница настроек. Подключённые бизнес-аккаунты Telegram, Bot API и комментарии в группах обсуждения — три адаптера поверх одной нормализованной схемы событий. Статусы, назначение, команды, шаблоны ответов, SLA-таймеры с учётом рабочего времени, единая идентификация контакта во всех каналах, проверка прав на сервере и журнал аудита. Сначала написана спецификация с явными отметками решений и проверок, затем система построена по ней.

Нужно построить что-то подобное?

mert@akkan.dev

Ранее: пятиязычный сайт университета с конструктором страниц из 12 блоков (Lighthouse 100 за доступность, лучшие практики и SEO), трёхъязычный сайт медицинского центра (Lighthouse 99–100) и проекты с открытым кодом на GitHub.

Чего ожидать: три вещи.

Сначала понимание.

Я не начинаю со списка функций. Я начинаю с людей, которые делают работу, и документов, которые они уже создают, и моделирую данные и правила, по которым они на самом деле живут, — включая исключения, которые никто не записал. Программа вытекает из этой модели, а не наоборот.

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

Один человек — весь продукт.

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

На деле — Университетская ERP примерно на 120 таблиц и 230+ функций базы данных, на четырёх языках, в ежедневной работе — построена одним разработчиком. Опрос, которым за первую неделю воспользовались 4 000 студентов, — построен и поддерживается одним разработчиком.

Сделано, чтобы выдержать.

Системы, которые я строю, работают с деньгами, договорами, оценками и кадровыми данными. Их тестируют под той нагрузкой, которая их ждёт, их правила закреплены в базе данных, а не только в интерфейсе, и каждое изменение записано.

На деле — 500 студентов в одну секунду — ноль сбоев. 1 009 тестов на движке расчёта цен. Журналы аудита, которые триггеры базы данных не дают никому редактировать. Рабочая база, изменённая двенадцать раз и ни разу не пересозданная.

  • 9 000 студентов в университете, для которого я строю ERP
  • 120 таблиц в этой ERP и 230+ функций с её правилами
  • 8 341 историческая запись о студентах импортирована и сверена
  • 4 071 студент вошёл в опрос по элективам за восемь дней
  • 0 сбойных запросов при 500 студентах в одну секунду
  • 1 009 автотестов цен и геометрии для производителя
  • 596 квартир сверено в новой системе застройщика
  • 4 языка, на которых я работаю и пишу программы

Цифры на сентябрь 2026 года. Ничего не округлено в большую сторону.

Если ваша работа переросла инструменты, которыми вы пользуетесь, напишите мне. Опишите саму работу, а не программу, — дальше я разберусь сам.

Отвечаю в течение двух рабочих дней. Можно писать на русском, турецком, английском или узбекском. Работаю в Самарканде и удалённо с клиентами из Узбекистана, Казахстана, России и Турции.