Overpriced coffee

В задании будем делать серверную часть для кофешопа

  1. Поставь зависимости и запусти сервер. Перейди в директорию задачи и выполни команду npm install. После установки зависимостей, выполни команду npm run start. После запуска, перейди по адресу localhost:3000

  2. Сделай так, чтобы сервер смог отдавать статические файлы из директории /static. В express для этого есть middleware express.static. Подбробнее можно прочитать здесь. Обрати внимание, что название директории по умолчанию не является частью пути.

  3. Сделай так, чтобы при заходе на / (корень сайта) происходил редирект на /menu. Это можно сделать с помощью одного из методов response

  4. Изучи папку /views и файл menu.hbs. Добавь в меню ещё несколько напитков. Картинки можно взять из папки /static/img или найти самому, например на Unsplash

  5. Сделай так, чтобы сервер смог отображать страницу корзины (/cart). Заготовку для страницы можно найти в файле /static/html/cart, переделай её в /views/cart.hbs. На текущем этапе у всех пользователей сайта корзина будет общая

  6. Сделай так, чтобы при клике на ссылку на странице меню, выбранный кофе добавлялся в корзину, а затем происходил редирект обратно в меню. Для этого пригодятся route parameters

  7. Сделай так, чтобы при клике на ссылку оплатить текущий заказ завершался и корзина очищалась

  8. Добавь страницу /login на которой будет возможность заполнить своё имя. Чтобы сохранить имя используй cookie(). Чтобы читать имя потребуются cookies и cookie-parser middleware.

Обрати внимание, что форма посылается GET запросом. Чтобы прочитать параметры используй query. Не забудь поправить шаблон, чтобы в нём отображалось сохранённое имя.

Убедись, что случайно не получился XSS. В этом поможет документация Handlebars

  1. Сейчас все пользователи нашего сайта имеют общую корзину. Сделай так, чтобы у каждого нового пользователя была своя корзина

  2. * Сделай так, чтобы у каждой страницы был свой title

  3. * Сделай так, чтобы переключение тёмной темы сохранялось при переходе между страницами сайта

  4. * Добавь страницу истории, где показаны все заказы пользователя