Дэвид Эшли | 13 ноября 2018 г., 19:30. КНТ

Портал доставки почты на ходу

Что это такое и что в него входит?

  • Пакет для работы с клиентами и система отслеживания данных
  • Внутренняя система управления запасами
  • Файловый ящик с использованием сервера приложений
  • FTP-инструмент для обмена данными для партнеров по доставке

Ко мне обратилась судоходная компания из Миннесоты, у которой возник ряд проблем. Бизнес является дистрибьютором доставки для многих крупных компаний. Их клиенты получают номера для отслеживания и отслеживают статус своих посылок, используя страницу отслеживания USPS и другие инструменты. Но клиенты нуждались в обновлении статуса доставки раньше, так как они сами были крупными дистрибьюторами, и им нужна была возможность быстрее передавать информацию о доставке своим клиентам. Я создал инструмент, который позволял компании загружать и обновлять статус посылки, как только она поступала на их склад. Как только он покинет склад, на нашей странице отслеживания будут отображаться данные USPS, полученные из их API.

Еще одной серьезной проблемой, с которой столкнулась компания, было управление запасами. У компании не было формальной системы подтверждения прибытия и отправления посылок. Они столкнулись с несколькими разрушительными логистическими неудачами, когда тысячи клиентов сообщили, что никогда не получали свои посылки. Компания предположила, что они потеряли или потеряли указанные посылки. Выяснилось, что у одного из их партнеров по доставке в цепочке поставок были сотрудники, которые воровали пакеты со складов. У Mail on the Move не было возможности узнать, была ли проблема вызвана ими или кем-то еще, потому что они не отслеживали запасы. Я сделал их инструментом инвентаризации, который анализировал данные о доставке из электронных таблиц в базу данных. Когда поставки поступали на фабрику, они затем сканировали все посылки по этим данным электронной таблицы, чтобы подтвердить, какие посылки они получили, а какие нет. На сегодняшний день у них не было подобных происшествий.

Третьим инструментом, который я создал, была папка с файлами. В настоящее время Dropbox.com предлагает бизнес-планы стоимостью около 20 долларов США на одного клиента в месяц. Компания использовала Dropbox для обмена файлами примерно с 20 клиентами. Это выходит около 400 долларов в месяц на использование корпоративного Dropbox для их 20 клиентов. Я сделал для них хранилище файлов, в котором файлы хранились в файловой системе сервера приложений, что полностью избавило их от необходимости пользоваться сервисом Dropbox.com.

Наконец, в приложении есть инструменты FTP (протокол передачи файлов), которые автоматизируют процесс FTP, который они используют для отправки файлов и данных некоторым из своих партнеров по доставке.

Процесс разработки

Когда я впервые начал этот проект, было всего несколько требований, поэтому я планировал пойти по пути vanillaJS. По мере того как сложность и количество функций росли, я быстро понял, что проект превращается в большой ком грязи, и понял, что должен сделать шаг назад и провести рефакторинг. В итоге я перенес весь интерфейс в приложение Angular, чтобы справиться со сложностью.

Для меня именно этот проект действительно показал мне преимущества и цель использования JavaScript-фреймворка, а точнее, Angular. Многим разработчикам не нравится Angular (здесь я конкретно имею в виду 2+), потому что он кажется обременительным, чрезмерным и многого требует от разработчиков, и они выбрали бы другой метод. Хотя кривая обучения Angular более крутая, я бы сказал, что преимущества делают его стоящим. Приложения становятся беспорядочными, когда вы начинаете работать с большими объемами сложных данных. Сложные данные, которые имеют ряд функций, требуют гибкости и гарантируют всенаправленность, на мой взгляд, лучше всего обрабатывать императивно. Не будем забывать, что Angular в большей степени для разработчика, а не для пользователя, хотя он тоже создан для пользователя (SPA). Вы можете структурировать запросы и функции непроцедурным способом; он обрабатывает процедурную часть для вас. Двусторонняя привязка данных, модульность, внедрение зависимостей и сервисы невероятно полезны при работе с данными и их использовании во внешнем интерфейсе. Я бы не подумал о создании веб-приложения, интенсивно использующего данные, с подходом, в котором методы или принципы слишком отличаются от вышеперечисленных.

Помимо интерфейса, я использовал Node.js/Expresss.js на сервере и подключил экземпляр AWS RDS с MySQL. Приложение также содержит ряд библиотек с открытым исходным кодом, которые помогают анализировать CSV, файловое хранилище и SFTP. Я разместил сервер на Heroku. В настоящее время сайт масштабируется до 3000–4000 активных пользователей в месяц. Большая часть сайта является внутренней и не будет доступна для читателей.

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

Первоначально опубликовано на www.davidashley.io.