Git Product home page Git Product logo

movies-explorer-api's Introduction

console.log('HI THERE!')

I'm a Front-End Developer. Nice to have you on my page!

coding cat

🔥   My Stats :


GitHub Streak Top Langs

🛠   My Skills :


React  Sass  CSS  HTML  JavaScript  Storybook  Git  webpack  Figma  NodeJS  mongodb 

stats codewars

movies-explorer-api's People

Contributors

mintolime avatar

Stargazers

 avatar  avatar

Watchers

 avatar

movies-explorer-api's Issues

Организация проекта 🐱‍👤

Для начала работы необходимо :

  1. Клонируйте репозиторий для бэкенда на свой компьютер. Локально создайте ветку для кода первого этапа. Назовите её level-1

  2. Инициализируйте package.json: Поля name и author заполните на своё усмотрение.Заполните раздел scripts. В нём должны быть команды dev и start. dev запускает проект в режиме разработки с хот-релоадом, а start — в продакшн-режиме без хот-релоада.

  3. Добавьте все необходимые инфраструктурные файлы: .gitignore, .editorconfig, .eslintrc.

🌍Деплой

Деплой приложения 🌌

  • Создайте сервер. Затем установите всё необходимое и разверните на нём API.
    Важно реализовать возможность обращаться к API по публичному IP-адресу. Раньше мы обращались к серверу локально — по адресу localhost. Для разработки это нормально, но в продакшене не годится: к вашему localhost можете обратиться только вы. Поэтому сервер нужно где-то разместить.
    Мы рекомендуем использовать Яндекс Облако для создания облачного сервера. Оно предоставляет грант для новых пользователей — что-то вроде бесплатного периода. Если вы уже пользовались Яндекс Облаком и входного гранта у вас нет, обратитесь к куратору.

  • Создайте домен и прикрепите его к серверу.
    Закрепите за доменом публичный IP-адрес своего сервера. Подойдёт и бесплатный домен. Его вы можете зарегистрировать на нашем сервисе. Ссылку на него получите у куратора. Вы уже создавали домен в последнем спринте, сделайте это снова.
    Критерий готовности: к API можно обратиться по доменному имени.

  • Выпустите сертификаты и подключите их.
    Должна быть возможность обратиться к серверу по https.

  • Создайте на сервере .env файл.
    Добавьте в этот файл переменные окружения:

  • NODE_ENV=production

  • JWT_SECRET с секретным ключом для создания и верификации JWT.

.env файл должен храниться только на сервере. В репозитории хранить переменные окружения нельзя — это небезопасно.
В режиме разработки код должен запускаться и работать без этого файла. Задайте условие, чтобы dev-сборка запускалась, когда process.env.NODE_ENV !== 'production' .

  • Расскажите, как найти ваш публичный сервер.
    Добавьте в файл README.md домен, по которому можно обратиться к вашему серверу.

🌍Реализуйте логирование

Настройте два файла для хранения логов:

  • request.log, чтобы хранить информацию о всех запросах к API;
  • error.log, чтобы хранить информацию об ошибках, которые возвращает API.

Логи должны быть в формате JSON. Файлы логов не должны добавляться в репозиторий.

🌍 Реализуйте аутентификацию и авторизацию

В API должно быть ещё два роута: для регистрации и логина.

Image

Эти два роута не нужно защищать авторизацией.
Обратите внимание: если сохранять JWT в куках, понадобится дополнительный роут POST /signout. При запросе к роуту удалится JWT из куков пользователя.

🌍Создайте схемы и модели ресурсов API

В проекте две сущности: пользователи и сохранённые фильмы (users и movies). Создайте схему и модель для каждой. Саму базу данных назовите в единообразном формате, например /bitfilmsdb.

email — почта пользователя, по которой он регистрируется. Это обязательное поле, уникальное для каждого пользователя. Также оно должно валидироваться на соответствие схеме электронной почты.
password — хеш пароля. Обязательное поле-строка. Нужно задать поведение по умолчанию, чтобы база данных не возвращала это поле.
name — имя пользователя, например: Александр или Мария. Это обязательное поле-строка от 2 до 30 символов.

country — страна создания фильма. Обязательное поле-строка.
director — режиссёр фильма. Обязательное поле-строка.
duration — длительность фильма. Обязательное поле-число.
year — год выпуска фильма. Обязательное поле-строка.
description — описание фильма. Обязательное поле-строка.
image — ссылка на постер к фильму. Обязательное поле-строка. Запишите её URL-адресом.
trailerLink — ссылка на трейлер фильма. Обязательное поле-строка. Запишите её URL-адресом.
thumbnail — миниатюрное изображение постера к фильму. Обязательное поле-строка. Запишите её URL-адресом.
owner — _id пользователя, который сохранил фильм. Обязательное поле.
movieId — id фильма, который содержится в ответе сервиса MoviesExplorer. Обязательное поле.
nameRU — название фильма на русском языке. Обязательное поле-строка.
nameEN — название фильма на английском языке. Обязательное поле-строка.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.