Skip to content

AlliumPro/stellar-burgers

Repository files navigation

Stellar Burgers

Stellar Burgers — Single Page Application для космической бургерной: пользователь собирает бургер из ингредиентов, оформляет заказ, отслеживает заказы в реальном времени и управляет профилем.

Проект выполнен как итоговая работа по теме Redux-хранилище + роутинг + авторизация.


Demo / Preview


Key Features

Конструктор бургера

  • Сборка бургера из ингредиентов
  • Отображение данных, полученных с сервера
  • Оформление заказа только для авторизованных пользователей

Роутинг (React Router)

  • Публичные и защищённые маршруты
  • Вложенные динамические маршруты
  • Корректная активность ссылок в навигации (включая вложенные страницы)

Модальные окна + роутинг

  • Ингредиент открывается как modal route:
    • при клике — модальное окно
    • при прямом переходе — полноценная страница
  • Аналогично для деталей заказа из ленты и истории

Авторизация

  • Регистрация / вход / восстановление пароля
  • Защищённый доступ к профилю и истории заказов
  • Поток токенов (access/refresh) и запросы к API

Лента заказов и история (WebSocket)

  • /feed — публичная лента заказов в реальном времени
  • /profile/orders — история заказов пользователя (только авторизованным)
  • Подсчёт стоимости заказа на основе ингредиентов
  • Статусы: «Отменён», «Готовится», «Выполнен»

Routes

Public

  • / — конструктор бургера
  • /feed — лента заказов (real-time)
  • /ingredients/:id — страница ингредиента (или модалка при переходе из приложения)
  • * — 404

Auth-only (protected)

  • /profile — профиль пользователя (редактирование данных)
  • /profile/orders — история заказов
  • /profile/orders/:number — детали заказа (страница/модалка)

Only for guests (non-auth)

  • /login
  • /register
  • /forgot-password
  • /reset-password

UX / Поведение по требованиям

  • Профиль пользователя:
    • поля формы заполняются данными пользователя
    • при изменении данных появляются кнопки «Отмена» и «Сохранить»
    • «Сохранить» отправляет запрос с изменёнными данными
    • «Отмена» откатывает значения к исходным и скрывает кнопки
  • Модальные маршруты:
    • переход по клику открывает модалку и меняет URL
    • прямой переход по URL открывает страницу
  • Лента заказов:
    • обновляется в реальном времени
    • показывает статистику: всего заказов и за день
  • История заказов:
    • доступна только авторизованным
    • обновляется в реальном времени, отображает статусы и стоимость

Tech Stack

  • React + TypeScript
  • Redux Toolkit (slices, selectors, async thunks)
  • React Router
  • REST API (получение ингредиентов, создание заказов, профиль)
  • WebSocket (лента заказов / история заказов)

Project Structure (high level)

  • src/pages — страницы приложения (роуты)
  • src/components — переиспользуемые компоненты и UI
  • src/services / src/store — Redux store, slices, thunks, selectors (в зависимости от структуры репозитория)
  • src/utils/burger-api.ts — методы работы с API (заготовлены в проекте)

Environment Variables

Для корректной работы запросов к серверу необходимо добавить переменную окружения:

  • BURGER_API_URL — URL API

Ссылка/пример находится в .env.example.


Getting Started

1) Install dependencies

npm install

2) Configure env

Создай .env на основе .env.example c BURGER_API_URL.

3) Run dev server

npm start

4) Build

npm run build

Notes

  • Проект реализован как SPA с упором на:
    • структурированное глобальное состояние (Redux Toolkit)
    • корректную маршрутизацию (protected + dynamic + modal routes)
    • real-time обновления заказов (WebSocket)
    • авторизацию и защиту приватных разделов

Author

About

Космическая бургерная

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors