Друзья, рад сообщить, что наконец-то закончил своё первое одностраничное веб-приложение для портфолио на чистом JavaScript.

Оно представляет собой решение для управления небольшим рестораном с интуитивно понятным интерфейсом.
Безусловно, оно является лишь демонстрационным приложением с очень узким функционалом, которое создано только для того, чтобы продемонстрировать свои навыки программирования.
Интересные факты:
1) Приложение содержит в общей сложности 2030 строк кода
2) Включает в себе 22 файла js, 1 файл css, который транспилируется из 1 файла scss, и, естественно, 1 файл html
3) Насчитывает 100 функций, включая 19 функций API запросов к серверу и 15 обработчиков событий
4) Весь проект писался и собирался с использованием Webpack
5) В качестве базы данных использовался бесплатный сервис mockapi.io, в котором было создано 4 API: столов, официантов, счетов и меню
6) Внешний вид приложения адаптируется под любые браузеры и мобильные устройства при помощи использования технологии flexbox и нескольких медиа-запросах.
Интерфейс понятен интуитивно, но расскажу в двух словах о функционале.
1) В разделе настроек можно добавлять, удалять и редактировать существующие меню и цены, официантов и столы. Все изменения мгновенно отправляются на сервер.
2) При создании нового счета можно выбрать из списка имя официанта и свободный стол. Если за определенным столом уже закреплён активный счёт, то его выбрать нельзя (не корректно работает в браузерах на IOS).
3) Вновь созданный счёт содержит в себе индивидуальный номер, текущую дату и время, выбранного официанта и стол.
4) Созданный счёт можно отменить в любой момент, если, например, человек передумал что-то заказывать. Счёт сразу же удаляется с сервера.
5) В счёт можно добавлять блюда, выбрав их из списка в сплывающем модальном окне.
6) После добавления блюд, в текущем счёте появляется их список и общая сумма заказа.
7) При закрытии счета, общая сумма заказа отправляется на сервер, а сам счёт перемещается в раздел «Архив счетов».
Минусы
Теперь расскажу о минусах, почему именно в таком виде приложение не подойдет для использования в реальном бизнесе
1) Отсутствие бэкенда. Для того, чтобы сделать это приложение пригодным к использованию, необходимо, чтобы каждый юзер, со своими правами доступа мог логиниться на сайте и получать информацию именно о своём ресторане. Хочу отметить, что тут ещё необходимо прописать роли пользователей, чтобы, например, у официанта не было возможности редактировать меню.
2) Отсутствие расчетов прибыли. Даже, если предположить, что ресторану необходимо приложение, чтобы вести учёт, расходы и доходы только по кухне, не учитывая аренду, зарплаты и прочие расходы, то всё равно это приложение не может считать разницу между себестоимостью блюда и его ценой. Зато это очень хороший вариант в качестве программного регистратора расчетных операций, который можно подключить к API фискальной службы и формировать фискальные чеки.
3) Добавление блюд. Каждый раз, при нажатии кнопки добавления блюд в чек, можно добавить только одно блюдо в количестве 1шт. Согласитесь, это такое себе удовольствие для официанта, особенно, когда пришла большая компания и каждый заказал себе первое, второе и компот. Но я не считаю целесообразным тратить очень много времени на подобные нюансы для демонстрационного приложения, которым по факту никто и никогда не будет пользоваться.
Следующий свой пет-проект я уже начал писать на React.js, параллельно разбираясь в этой библиотеке.