Документация

Приложение, реализованное на лекции, можно скачать по ссылке.

Задача

Создайте веб-приложение, позволяющее вести журнал просмотренных фильмов для членов кружка любителей кино. Приложение должно позволять:

  • Просматривать список фильмов, просмотренных членами кружка.
  • Добавлять новый фильм в список фильмов.
  • Изменять информацию о фильме.
  • Просматривать отзывы членов кружка о фильме.
  • Добавлять отзыв о фильме.
  • Изменять отзыв о фильме.

Фильм описывается следующими полями:

  • Название.
  • Продолжительность.
  • Ссылка на кинопоиск.

Отзыв описывается следующими полями:

  • Автор отзыва.
  • Текст отзыва (лучше всего будет, если он в формате markdown).
  • Оценка от 0 до 5 с шагом в 0.5.

Дополнительные действия

Данные действия следует реализовать, если вы полностью реализовали все предыдущие. При добавлении пользователя выбор автора должен будет осуществляться из списка.

  • Просматривать список всех членов кружка.
  • Добавлять нового члена кружка.
  • Изменять информацию о члене кружка.
  • Удалять информацию о фильме.
  • Удалять комментарий к фильму.
  • Удалять члена кружка клуба.

Член кружка описывается следующими полями:

  • Имя
  • Фамилия
  • Псевдоним
  • Дата вступления в клуб
  • Дата выхода из списка активных членов клуба

Технические требования

  • Достаточно описать всю таблицу маршрутизации в рамках одного файла.
  • Сохранять данные можно в оперативной памяти, не надо реализовывать их хранение на диске или в базе данных.
  • На формах должна быть реализована валидация данных на стороне сервера.
  • При возвращении формы, в которой были допущены ошибки, её поля должны быть заполнены данными, введёнными пользователем.

Рекомендации по организации маршрутов

Ваше приложение должно обрабатывать следующие запросы

  • get / - перенаправление на /movies.
  • get /movies - отображение списка фильмов.
  • get /movies/new - отображение формы на добавление фильма.
  • post /movies/new - обработка результатов добавления формы. После успешного добавления должна происходить переадресация на созданную страницу фильма.
  • get /movies/:id - отображение информации о фильме с уникальным номером id. На странице также отображаются комментарии.
  • get /movies/:id/edit - отображение формы на редактирование фильма.
  • post /movies/:id - обработка результата заполнения формы на редактирование фильма.
  • get /movies/:id/comments/new - отображение формы на добавление комментария.
  • post /movies/:id/comments/new - обработка результатов добавления формы. После успешного добавления пользователь должен быть перемещён на страницу фильма.
  • get /movies/:id/comments/:comment_id/edit - отображение формы на редактирование комментария.
  • post /movies/:id/comments/:comment_id - обработка результатов формы на изменение комментария. После успешного изменения должна отобразиться страница фильма