Skip to content

paninebaluy/infocaramel_back

Repository files navigation

EN

на русском

version 1.1.0 – uploaded .env to remote server, added article deletion

News Explorer is a two-page website intended for searching the news database via NewsAPI and saving select articles to user's "favorited" page. This web site, including both frontend and backend parts, is the Yandex.Praktikum diploma project.

This repository holds News Explorer backend on Express.js and a database on MongoDB via Mongoose. JWT tokens are stored in http request cookies. Server-side validation is handled with celebrate library, requests and errors are logged with winston. Server is protected with helmet and express-rate-limit. Both http and https requests are allowed.

Availability

How to start using it locally:

Clone this repository

$> git clone https://github.com/paninebaluy/infocaramel_back

Install dependencies

$> npm install

Install [MongoDB community edition](https://docs.mongodb.com/manual/administration/install-community/) and run it:

$> mongod

(Win) or

$> mongo

or

$> sudo systemctl start mongod

(Linux and macOS)

Run script that starts the local server

$> npm run start

or

$> npm run dev

Backend server will start locally using port 3000 by default: http://localhost:3000
Note: npm run dev will run the server with hot reload.

It's recommended to test request scenarios using Postman.

Backend part of the project includes routing with Express.js + Node.js, and is connected to inforacaml database on MongoDB via Mongoose

Here's what you can do:

(the following actions are available only for authorized users)

Technology used

  • Node.js
  • Express.js
  • MongoDB
  • Mongoose

To top/Наверх

RU

version 1.1.0 – файл .env загружен на удаленный сервер, добавлено удаление статей

News Explorer — это двустраничный сайт, позволяющий искать по базе данных новостей при помощи NewsAPI и сохранять статьи на страницу с избранным пользователя. Фронтенд и бэкенд этого сайта — это дипломный проект курса по веб-разработке Яндекс.Практикума.

В этом репозитории хранится бэкенд сайта News Explorer на Express.js, связанный с базой данных MongoDB при помощи Mongoose. JWT-токены хранятся в cookies http-запросов. Серверная валидация происходит до передачи данных контроллеру при помощи библиотеки celebrate, запросы и ошибки пишутся в логи при помощи winston. Сервер защищен при помощи helmet и express-rate-limit. Разрешены запросы как по http, так и по https.

Доступность

Как запустить его локально

Клонировать репозиторий

$> git clone https://github.com/paninebaluy/infocaramel_back

Установить зависимости

$> npm install

Установить [MongoDB community edition](https://docs.mongodb.com/manual/administration/install-community/) и запустить

$> mongod

(Win) или

$> mongo

или

$> sudo systemctl start mongod

(Linux и macOS)

Вызвать скрипт запуска сервера

$> npm run start

или

$> npm run dev

Сервер будел запущен локально, используя порт 3000 по умолчанию: http://localhost:3000
NB: npm run dev запускает сервер с опцией hot reload.

Для проверки запросов рекомендую использовать Postman.

В бэкенд-части проекта реализованы роутинг на Express.js + Node.js, а также подключение к базе данных infocaraml на MongoDB через Mongoose

Вот что здесь можно делать:
  • Создать нового пользователя (зарегистрироваться): POST https://api.infocara.ml/signup (тело запроса должно содержать такие поля: email, password (>= 8 символов), name (str, 2-30 символов, без пробелов))
  • Авторизовать пользователя: POST https://api.infocara.ml/signin (тело запроса должно содержать такие поля: email, password (>= 8 символов))

(следующие действия доступны только для авторизованных пользователей)

  • Получить JSON с данными текущего авторизованного пользователя: GET https://api.infocara.ml/users/me
  • Добавить новостную статью: POST https://api.infocara.ml/articles (тело запроса должно содержать такие поля: keyword (str, min 2 символов), title (str, 2-250 символов), text (2-100000 символов, учитывается возможность очень больших статей), date (любой валидный формат даты, которая должна быть в прошлом), source (str, 2-250 символов), link (url), image (url), owner (Mongoose Object ID, API его не возвращает))
  • Получить JSON со всеми статьями: GET https://api.infocara.ml/articles
  • Удалить статью, если её добавил авторизованный пользователь: DELETE https://api.infocara.ml/articles/articleId (идентификатор строго в формате Mongoose Object ID)

Использованные технологии

  • Node.js
  • Express.js
  • MongoDB
  • Mongoose

To top/Наверх

About

Infocaramel backend on Express.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published