2020-05-09 15:19:53 +03:00
2020-05-05 13:05:22 +03:00
2020-05-09 15:19:53 +03:00
2020-05-04 16:32:09 +03:00
2020-05-04 16:32:09 +03:00
2020-01-28 19:58:29 +03:00
2020-05-04 16:32:09 +03:00
2020-05-04 16:32:09 +03:00
2020-05-04 16:32:09 +03:00
2019-11-11 17:44:17 +03:00
2020-05-04 16:32:09 +03:00
2020-05-04 16:32:09 +03:00
2020-02-13 22:34:17 +03:00
2020-05-05 13:59:38 +03:00

Digital Store

Digital Store - это настраиваемый интернет-магазин на платформе NodeJS для продажи ваших цифровых товаров.
Демонстрация функционирования интернет-магазина.

GitHub package.json version (branch) GitHub release (latest by date) GitHub All Releases GitHub top language GitHub repo size
dependencies Status badge devDependency Status badge GitHub

🐬 Установка через Docker:

Для установки интернет магазина через Docker необходимо выполнить несколько шагов:

Вам потребуется VPS с установленным приложением Docker. VPS на Linux купите у reg ru здесь обязательно с виртуализацией XEN.

  1. После того, как вы зашли на сервер создайте папку с вашим приложением, скачайте магазин с github и отконфигурируйте файлы.
mkdir app
cd ./app
git clone https://github.com/sergeyyarkov/digital-store.git -b digital-store-docker .
  1. Настройте переменные среды в файле docker-compose.yml. Найдите сервис nodejs и заполните строки в enviroment Чтобы выйти и сохранить ctrl + x далее y и enter
nano docker-compose.yml`
  1. Отконфигурируйте файл с почтовым сервисом. Укажите свой сервер SMTP, Port.
nano ./server/config/nodemailer.config.js
  1. Настройте скрипт с сертификацией Lets-encrypt. Замените почту и домен на свои.
nano ./init-letsencrypt.sh
  1. Далее настройте файл конфигурации nginx. Замените везде домены на свои.
nano ./data/nginx/app.conf
  1. Запустите скрипт ./init-letsencrypt.sh. Если выводит Permission denied, то chmod u+x init-letsencrypt.sh затем еще раз запустите скрипт. Если сертификация успешно прошла то у вас не должно высветится ошибок.

  2. Импортируйте базу данных:

docker exec -it mongodb bash
cd ./backup
mongorestore --username root --password secret -d digital_store --drop /backup/digital_store/
exit

✔️ Теперь приложение полностью настроено и готово к работе. Ваш SSL сертификат будет автоматически обновляться, когда ему это потребуется.

Вход в админ панель: digital-store@support.ru:admin

Некоторые команды которые могут пригодится.

docker-compose up -d  - запустить приложение в detach режиме

docker-compose stop - остановить приложение

mongodump --username root --password secret --db plunderweb --out=/backup/ - выполнить backup БД. Перед тем как выполнить эту команду, зайдите в контейнер с mongodb в папку backup.

docker-compose up -d --no-deps --build nodejs - если вы изменили чтото в файлах, то после этого необходимо выполнить эту команду чтобы изменения отображались на вашем сайте.

Настройка платежной системы:

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

  • Перейдите на сайт QIWI API и создайте пару ключей авторизации. Сохраните секретный ключ.
  • Если вы хотите настроить оформление формы приемов перевода, то перейдите сюда и скопируйте значение переменной themeCode и вставьте это значение по адресу config/routes/payments/qiwi.payment.js.
  • Секретный ключ нужно указать в поле переменной среды QIWI_SECRET_KEY.
  • Редирект после оплаты товара через QIWI на локальный адрес localhost:3000 работать не будет, необходим домен.

Настройка почтового сервиса:

Для отдачи данных товара на почту покупателя после покупки товара, нужно настроить nodemailer:

  • Настройте почтовый сервис по адресу config/nodemailer.config.js:
host: "smtp.mail.ru",
port: 465,
secure: true, // true для 465, false для остальных.
  • Затем укажите переменные среды EMAIL_LOGIN и EMAIL_PASSWORD.

Настройка системы комментариев:

В интернет магазине используется система комментариев Disqus:

  • Добавьте свой домен на их сайт и замените embed код по адресу dist/public/js/disqus.js.

Переменные среды:

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

Описание переменных:

Переменная Описание
DATABASE_URI Подключение к БД MongoDB
DATABASE_NAME Имя БД
EMAIL_LOGIN Логин от почты для отправки данных покупателю
EMAIL_PASSWORD Пароль от почты
HOSTNAME_URI Ссылка на ваш сайт https://domain.ru
QIWI_SECRET_KEY Секретный ключ QIWI для работоспособности системы оплаты

.env файл:

DATABASE_URI=
DATABASE_NAME=
QIWI_SECRET_KEY=
HOSTNAME_URI=
EMAIL_LOGIN=
EMAIL_PASSWORD=

API:

API представляет из себя различные URL, которые отвечают данными только в формате JSON. Здесь описаны основные GET запросы на сервер для получения данных:

Для просмотра всех товаров которые существуют в магазине отправляется запрос:

https://store-name.com/api/items

Ответ:

;[
  {
    _id: '5e15dbc415303a1980cd77a0',
    title: 'Тестовый товар №1',
    count: 0,
    price: 1,
    category: 'steam',
    description: '-',
    date: '2020-01-08T13:40:20.353Z',
  },
  {
    _id: '5e15dcb4138c3339bcbc3719',
    title: 'Тестовый товар №2',
    count: 0,
    price: 1,
    category: 'uplay',
    description: '-',
    date: '2020-01-08T13:44:20.940Z',
  },
]

Для просмотра товаров в интересующей категории отправляется запрос:

https://store-name.com/api/items/{category}

Ответ:

;[
  {
    _id: '5e15dbc415303a1980cd77a0',
    title: 'Тестовый товар №1',
    count: 0,
    price: 1,
    category: 'steam',
    description: '-',
    date: '2020-01-08T13:40:20.353Z',
  },
  {
    _id: '5e1ccf30d5b894228c86385a',
    title: 'Тестовый товар №2',
    count: 10,
    price: 1,
    category: 'steam',
    description: '-',
    date: '2020-01-13T20:12:32.814Z',
  },
]

Для просмотра информации о всех категориях отправляется запрос:

https://store-name.com/api/categories

Ответ:

;[
  {
    _id: '5df64563309e691f2c33d400',
    title: 'uplay',
    img: 'img-1576349954743.svg',
    type: 'type',
    format: 'format',
  },
  {
    _id: '5e04ea023625771abc75fd14',
    title: 'fortnite',
    img: 'img-1576349989720.svg',
    type: 'type',
    format: 'format',
  },
]

Для просмотра информации о интересующей категории отправляется запрос:

https://store-name.com/api/category/{category}

Ответ:

;[
  {
    _id: '5df64563309e691f2c33d400',
    title: 'uplay',
    img: 'img-1576349954743.svg',
    type: 'type',
    format: 'format',
  },
]

Для просмотра данных всех товаров отправляется запрос: Нужна авторизация для администратора.

https://store-name.com/api/items/data

Ответ:

;[
  {
    _id: '5e15dbc415303a1980cd77a0',
    title: 'Тестовый товар №1',
    data: ['login:pass', 'login:pass', 'login:pass'],
  },
  {
    _id: '5e175c63b479600ac493ce88',
    title: 'Тестовый товар №2',
    data: ['login:pass', 'login:pass', 'login:pass'],
  },
]

Для просмотра покупателей отправляется запрос: Нужна авторизация для администратора.

https://store-name.com/api/buyers

Ответ:

;[
  {
    _id: '5e1c97701b619a31f010062c',
    bill_id: '9244e5ae-560a-432a-9882-bc1b941c8cca',
    email: 'test-email@mail.com',
    method: 'qiwi',
    date: '2020-01-13T18:13:38.623+03:00',
    amount: 2,
    data: ['login:pass', 'login:pass'],
  },
]

Для просмотра списка иконок отправляется запрос: Нужна авторизация для администратора.

https://store-name.com/api/icons

Ответ:

;[
  'img-1576349954743.svg',
  'img-1576349989720.svg',
  'img-1576420937629.svg',
  'img-1576421960189.svg',
]

Требования:

  • Node.js v7.6.0 или выше

Лицензия:

MIT

Description
Ваш интернет магазин цифровых товаров с панелью управления.
Readme MIT 1.4 MiB
Languages
JavaScript 99.7%
HTML 0.3%