mintolime / movies-explorer-api Goto Github PK
View Code? Open in Web Editor NEWbackend part of the diploma project
backend part of the diploma project
Для начала работы необходимо :
Клонируйте репозиторий для бэкенда на свой компьютер. Локально создайте ветку для кода первого этапа. Назовите её level-1
Инициализируйте package.json: Поля name и author заполните на своё усмотрение.Заполните раздел scripts. В нём должны быть команды dev и start. dev запускает проект в режиме разработки с хот-релоадом, а start — в продакшн-режиме без хот-релоада.
Добавьте все необходимые инфраструктурные файлы: .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' .
Логи должны быть в формате JSON. Файлы логов не должны добавляться в репозиторий.
Защитите роуты авторизацией: если клиент не прислал JWT, доступ к роутам ему должен быть закрыт.
В проекте две сущности: пользователи и сохранённые фильмы (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 — название фильма на английском языке. Обязательное поле-строка.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.