Jekyll-Shop. Магазин на статике

смотреть демо

Возможно ли сделать магазин на Jekyll?

Да, это статика. Для каталога товаров этого достаточно. Дальше будет работать сервис процессинга

Как хранить базу

Для каждого товара своя страница в папке /product/.
Категории задаются как тег в заголовке. Там же указывается цена, наличие

Карточки товаров в markdown-формате распределены по дереву категорий.
Категории в виде дерева папок. Нет возможности задавать несколько категорий одному товару. Хотя через теги тоже можно. у всех товаров будет отличаться формат URL-адреса.

Datafiles в формате CSV или другом.
Парсинг при обновлении этого файла. В дереве сайта будут только категории, которые заполняются вручную.

id; Наличие; Цена в у.е; Название; Категории через пробел; Описание или ссылка.md для инклюда; Ссылки на фото через пробел; 
1; 10; 100; Nokia 1101 Тестовый товар; Телефоны Аксессуары; Самый продаваемый в истории телефон; -1.png -2.png;
+1; 0; 200; Nokia 1110; Телефоны; Чуть менее популярный телефон; -1.png -2.png;
+1; 0; 0; Nokia 5130 Express Music; Телефоны; Nokia-5130-c2.md; -1.png -2.png;

Корзина

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

полезные ссылки

Доставка

Выставляется форма с предзаполненными данными: уникальное время заказа, список товаров, сумма. Поля заблокированы и не редактируются.
Дополнительно требуется ввести данные для доставки (имя, телефон, адрес и метод доставки) и способ оплаты.

В самом конце, когда все правильно заполнено, нужно нажать кнопку “подтвердить и отправить”.

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

Методы доставки:

Безопасность данных

Вместо номера заказа - хэш сумма crc-32. Ею же будет подтверждаться правильность введенных данных, не испортились ли данные при пересылке.

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

Передача данных формы

Доставка формы - это целая история для статического сайта. Можно использовать как сторонние серисы типа google forms или даже тупо через mailto попросить клиента самому отправить письмо. Можно, например, принимать данные через телеграм-бота. Хотя если есть возможность поднять бота, то наверное магаз на каком нибудь опенкарт будет эффективнее :)

Оплата

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

Менеджер сверяет номер и сумму заказа полученный в письме с номером и суммой переведенные на счет через процессинговый сервис.
Затем, если все четко, он связывается с клиентом и сообщает трекинг-номер посылки или приглашает прийти забрать лично в точке выдачи.

Методы оплаты:

  1. Наличными при получении (только самовывоз)
  2. Картой на сайте процессинга
  3. Перевод на карту. Обязательно указать номер заказа
  4. Безналичный рассчет. Для компаний

Регистрация

Регистрации нету. Максимум можно запомнить в куках данные для доставки. Там же хранится история покупок. Посмотреть сохраненные данные можно на специальной странице сайта. Данные из нее исчезают при смене браузера или очистке кэша.

Желательно сохранять уникальное имя страницы товара в куках, что бы список товаров можно было вывести ссылками. Именно поэтому мне больше нравится идея хранить все товары в одной папке - они просто не смогут пересекться между собой. О святой javascript, помоги мне разгрести то что я заварил!

Обработка заказов

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

Если база товаров хранится как CSV, то скорее всего он генерируется из XLSX. Моя идея в том что бы письмо с заказом получала программа, которая стоит на компе у менеджера, парсила его и просила человека подтвердить правильность. После этого она сможет внести изменения в таблицу Excell из которого сгенерируется CSV и обновляется статический сайт.

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

Мой велосипед. Уведомления о новых заказах

Самое сложное будет найти сервис который сможет нормально отправлять формы и при этом будет позволять их редактировать скриптами. Но если все же письмо было отправлено…

В почтовике автоматически сортируем почту и новые заказы перемещаем в папку “Новые заказы”. Дополнительно пересылаем их на Gmail, который настроен присылать оповещения на телеграм. Так мы не пропустим новых заказов. А те что еще не обработаны будут отмечены как непрочитанное письмо в почте.

Поиск по сайту

Я вижу два варианта.

Первый: генерить отдельную страницу со списком всех товаров на ней и через Ctrl+F искать что надо.

Второй: Делать такую же страницу, но обрабатывать ее через джаваскрипт и выводить результаты в виде выпадающего меню, это более привычный вариант

Полезные ссылки

Готовые скрипты

Твой фидбек

Что думаешь про такую телегу? Стоит ли этот конь съеденого им сена? Напиши комментарий!