From 21833480c82240ed9f33ba9e939a53aa45609fda Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Sat, 25 Jan 2020 00:44:10 +0300 Subject: [PATCH] readme --- README.md | 146 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 134 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c4f734a..fb4fb2e 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,140 @@ -# Структура репозитория: +

+ + + +

+ +

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 + +

+ +## Содержание +- [О проекте](#О-проекте) +- [Структура репозитория](#Структура-репозитория) +- [Установка и найстройка скрипта](#Установка-и-найстройка-скрипта) +- [Запуск скрипта на локальном компьютере](#Запуск-скрипта-на-локальном-компьютере) +- [Запуск скрипта на удаленном сервере](#Запуск-скрипта-на-удаленном-сервере) +- [Переменные среды](#Переменные-среды) +- [API](#API) +- [Требования](#Требования) +- [Лицензия](#Лицензия) + +## О проекте: +Этот проект представляет из себя интернет-магазин на платформе NodeJS, вы можете продавать свои цифровые товары именно скачав этот репозиторий, в [панели управления](#Панель-управления) вы сможете создавать, удалять и редактировать товары или категории . В проекте используется концепция REST API, поэтому для отдачи информации клиенту существует отдельный API. Информация о покупателях, товарах, категориях и т.д хранится в БД MongoDB (используется нативный драйвер). +### Функционал пользователя: +- Возможность выбирать интересующие категории, переход по одиночным страницам конкретного товара. +- Возможность комментировать как отдельный товар, так и весь магазин на отдельной странице через виджет [Commento.io](https://commento.io/) +- Возможность фильтровать интересующую категорию или все товары через фильтр. +- Покупатель может совершать одну или несколько покупок через корзину или через кнопку "Купить". +- Оплата осуществляется через сервис QIWI API. +- Результатом оплаты будут данные одного или нескольких товаров, все данные отсылаются на почту покупателя, которую он указывал при создании заказа. +- Покупатель может узнать все свои совершенные покупки в магазине на отдельной странице. +### Функционал администратора: +Для входа в админ-панель необходимо дописать в адресной строке `/admin`, после вы попадете на страницу авторизации где необходимо вписать данные `email:password`. По умолчанию `admin@support.ru:admin` +- Пароль админа хэшируется через `bcrypt` для безопасности и записывается в БД. +- На главной странице есть небольшая статистика, где можно посмотреть: сумму проданных товаров, кол-во проданных товаров, кол-во товаров в наличии. +- На главной странце так же можно узнать подробные данные о покупателях: номер заказа, почта покупателя, способ оплаты, дата покупки, сумма и данные которые были высланы по почте. +- Возможность находить конкретного покупателя через поле (нужно знать номер заказа). +- Возможность добавлять, удалять или редактировать товары на странице "Товары", так же можно посмотреть и информацию о товаре. +- Поиск товаров через поле поиска (нужно знать частичное или полное название товара). +- Добавление, удаление и редактирование категорий через страницу "Категории", каждой категории присваивается собственная иконка, которую можно загрузить через страницу "Иконки". +- Возможность править контент, изменять общее оформление магазина (только цвет). +- Возможность изменять данные администратора: почта, пароль, имя. + +## Структура репозитория: В основе всего репозитория существуют две ветки. Ветка master предназначена для разработки приложения, для выгрузки готового приложения на сервер используйте ветку production. -# Панель управления: -Для входа в панель управления магазином используйте данные: -```js -Login: admin@support.ru -Password: admin -``` -# Переменные среды: -Создайте файл .env в корне приложения и запишите переменные: -```js -SESSION_SECRET=secret + +## Установка и найстройка скрипта: +### Запуск скрипта на локальном компьютере: +- [Установите последний релиз Digital Store](https://github.com/sergeyyarkov/digital-store/releases) из GitHub репозитория. +- Или клонировать репозиторий `git clone https://github.com/sergeyyarkov/digital-store.git -b production`. +- Установите [Node.js](https://nodejs.org/ru/) не ниже версии 7.6.0, в процессе установки Node.js установите Node Package Manager. +- Для работоспособности интернет-магазина необходимо установить зависимости. Выполните комманду `npm install`. +- Далле необходимо настроить переменные среды. Создайте файл `.env` в корне вашего интернет - магазина и запишите туда [значения для переменных](#Переменные-среды). Обратите внимание, что для выгрузки скрипта на production сервер, нужно устанавливать переменные среды для вашего сервера, файл `.env` создавать не нужно. +- После этого, введите `npm run start` и перейдите по адресу `localhost:3000`, вы увидите уже рабочий интернет магазин который работает у вас на локальном компьютере. + +### Запуск скрипта на удаленном сервере: +В данном примере на удаленном сервере будет использоваться связка ``Ubuntu 18.04, Nginx, MongoDB, PM2, NodeJS.`` +- ... + +## Переменные среды: +### Описание переменных: + +```bash +SESSION_SECRET=случайная сгенерированная строка DATABASE_URI=подключение к БД MONGODB DATABASE_NAME=имя БД QIWI_SECRET_KEY=секретный ключ QIWI API EMAIL_LOGIN=логин от почты EMAIL_PASSWORD=пароль от почты -``` \ No newline at end of file +``` +## API: +### API предствляет собой ряд URL, которые в качестве ответа возвращают только данные в формате JSON. +#### Для просмотра всех товаров которые существуют в магазине отправляется GET запрос: +```bash +https://store-name.com/api/items +``` +Ответ: +```bash + [ + { + _id: "5e15dbc415303a1980cd77a0", + title: "Тестовый товар №1", + count: 0, + price: 1, + category: "steam", + description: "Тестовый товар №1 описание", + date: "2020-01-08T13:40:20.353Z" + }, + { + _id: "5e15dcb4138c3339bcbc3719", + title: "Тестовый товар №3", + count: 0, + price: 1, + category: "uplay", + description: "Тестовый товар №3 fdsfd", + date: "2020-01-08T13:44:20.940Z" + }, + { + _id: "5e175c63b479600ac493ce88", + title: "Тестовый товар №4", + count: 0, + price: 1, + category: "fortnite", + description: "Тестовый товар №4 opis", + date: "2020-01-09T17:01:23.446Z" + }, + { + _id: "5e1ccf30d5b894228c86385a", + title: "Тестовый товар №5", + count: 10, + price: 1, + category: "origin", + description: "sdsdsds", + date: "2020-01-13T20:12:32.814Z" + } + ] +``` +... + +## Требования: +- Node.js v7.6.0 или выше + +## Лицензия: +[MIT](https://github.com/sergeyyarkov/digital-store/blob/master/LICENSE) \ No newline at end of file