diff --git a/README.md b/README.md index ef57b67..a80ade3 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@
Digital Store - это настраиваемый интернет-магазин на платформе NodeJS для продажи ваших цифровых товаров.
- Демонстрания функционирования интернет-магазина.
+ Демонстрация функционирования интернет-магазина.
@@ -40,17 +40,17 @@
- [Лицензия](#Лицензия)
## О проекте:
-Этот проект представляет из себя интернет-магазин на платформе NodeJS, вы можете продавать свои цифровые товары именно скачав этот репозиторий, в [панели управления](#Панель-управления) вы сможете создавать, удалять и редактировать товары или категории . В проекте используется концепция REST API, поэтому для отдачи информации клиенту существует отдельный API. Информация о покупателях, товарах, категориях и т.д хранится в БД MongoDB (используется нативный драйвер).
+Этот проект представляет из себя интернет-магазин на платформе NodeJS, Вы можете продавать свои цифровые товары именно загрузив этот репозиторий, в [панели управления](#Панель-управления) Вы сможете создавать, удалять и редактировать товары или категории . В проекте используется концепция REST API, поэтому для отдачи информации клиенту существует отдельный API. Информация о покупателях, товарах, категориях и т.д хранится в БД MongoDB (используется нативный драйвер).
### Функционал покупателя:
- Возможность выбирать интересующие категории, переход по одиночным страницам конкретного товара.
- Возможность комментировать как отдельный товар, так и весь магазин на отдельной странице с помощью системы комментариев Disqus.
- Возможность фильтровать интересующую категорию или все товары через фильтр.
-- Покупатель может совершать одну или несколько покупок через корзину или через кнопку "Купить".
+- Покупатель может совершать одну или несколько покупок через корзину или кнопку "Купить".
- Оплата осуществляется через сервис QIWI API.
-- Результатом оплаты будут данные одного или нескольких товаров, все данные отсылаются на почту покупателя, которую он указывал при создании заказа.
+- Результатом оплаты будут данные одного или нескольких товаров, все данные отсылаются на электронную почту покупателя, которую он указал при создании заказа.
- Покупатель может узнать все свои совершенные покупки в магазине на отдельной странице.
### Функционал администратора:
-Для входа в админ-панель необходимо дописать в адресной строке `/admin`, после вы попадете на страницу авторизации где нужно вписать данные `email:password`. По умолчанию `admin@support.ru:admin`
+Для входа в админ-панель необходимо дописать в адресной строке `/admin`, после Вы попадете на страницу авторизации где нужно ввести данные в формате `email:password`. По умолчанию `admin@support.ru:admin`
- Пароль админа хэшируется через `bcrypt` для безопасности и записывается в БД.
- На главной странице есть небольшая статистика, где можно посмотреть: сумму проданных товаров, кол-во проданных товаров, кол-во товаров в наличии.
- На главной странце так же можно узнать подробные данные о покупателях: номер заказа, почта покупателя, способ оплаты, дата покупки, сумма и данные которые были высланы по почте.
@@ -71,21 +71,24 @@
- Или клонировать репозиторий `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.
- Установите БД MongoDB на ваш компьютер или создайте кластер на сайте [www.mongodb.com](https://www.mongodb.com/) и импортируйте туда дамп структуры БД, которые находится в корне приложения `/database_dump`.
-- Для работоспособности интернет-магазина необходимо установить зависимости. Выполните комманду `npm install`.
+- Для работоспособности интернет-магазина необходимо установить зависимости. Выполните комманду `npm i`.
- Далле необходимо настроить переменные среды. Создайте файл `.env` в корне вашего интернет-магазина и запишите туда [значения для переменных](#Переменные-среды). Обратите внимание, что для выгрузки скрипта на production сервер, нужно устанавливать переменные среды для вашего сервера, файл `.env` создавать не нужно.
- После этого, введите `npm run start` и перейдите по адресу `localhost:3000`, вы увидите уже рабочий интернет-магазин который запущен у вас на локальном компьютере.
### Запуск скрипта на удаленном сервере:
В данном примере на удаленном сервере будет использоваться связка `Ubuntu 18.04, Nginx, MongoDB, PM2, NodeJS` + `SSL Lets Encrypt`
-- Переходим на сайт [RUVDS.COM](https://ruvds.com/pr4435) и приобретаем VPS услугу.
+- Переходим на сайт [RUVDS.COM](https://ruvds.com/pr4435) и приобретаем услугу VPS-хостинга.
- Подключаемся к серверу по SSH и следуем далее описанным шагам.
- Устанавливаем NodeJS:
```bash
-curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
-
-apt-get install -y nodejs <--- попросит перезагрузить сервисы - соглашаемся (YES)
+apt-get update && apt-get install curl -y
+curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
+export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
+[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
+source ~/.bashrc
+nvm install 12
```
Если при выполнении команд `node -v` и `npm -v` выдается версия, то идем дальше.
- Создаем папку `/apps`, после переходим в нее и клонируем проект с github и переходим в наш магазин:
@@ -198,7 +201,7 @@ apt-get update
apt-get install python-certbot-nginx
-certbot --nginx -d yourdomain.com -d www.yourdomain.com <--- в процессе установки выбираем цифру 2
+certbot --nginx -d yourdomain.com <--- в процессе установки выбираем цифру 2
```
- Ваш конфигурационный файл должен выглядеть примерно так:
@@ -256,7 +259,7 @@ server {
```
-### Выгрузка скрипта на бесплатный хостинг от Heroku:
+### Установка скрипта на бесплатный хостинг от Heroku:
- Регистрируемся на сайте [Heroku](https://signup.heroku.com/login).
- Устанавливаем heroku-cli `https://devcenter.heroku.com/articles/heroku-cli`.
- Проверьте установку, написав в консоле `heroku --help` если всё выводит, идем дальше.
diff --git a/server/server.js b/server/server.js
index 1f204eb..48c4703 100644
--- a/server/server.js
+++ b/server/server.js
@@ -23,13 +23,13 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
const storage = multer.diskStorage({
destination: 'dist/public/img/service-icons',
filename: function(req, file, cb) {
- cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
+ cb(null, `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`);
}
});
// Config
server.use(cors());
- server.use(express.static(path.join(__dirname, '../dist/public')));
+ server.use(express.static(`${__dirname}/../dist/public`));
server.use(multer({storage: storage}).single('img'));
server.use(express.urlencoded({ extended: false }));
server.use(express.json());
@@ -39,7 +39,7 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
server.use(passport.session());
server.use(methodOverride('_method'));
server.set('view engine', 'pug');
- server.set('views', path.join(__dirname, '../dist/views'));
+ server.set('views', `${__dirname}/../dist/views`);
// Routes
require('./routes/main')(server, db); // маршруты сайта
@@ -60,9 +60,4 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
console.log(error);
});
})
- .finally(() => {
- const port = process.env.PORT || 3000;
- server.listen(port, () => {
- console.log('App is running...');
- });
- });
+ .finally(server.listen(process.env.PORT || 3000, console.log('App is running...')));