Skip to content

AndreiGutnik/spa-countdown-timers

Repository files navigation

React Webpack Typescript Starter

Minimal starter with hot module replacement (HMR) for rapid development.

Installation

  1. Clone/download repo
  2. npm install

Usage

Development

npm start

  • Build app continuously (HMR enabled)
  • App served @ https://localhost:3000

Production

npm run build

  • Build app once (HMR disabled) to /dist/

All commands

Command Description
npm run dev Build app continuously (HMR enabled) and serve @ https://localhost:3000
npm start Build app once (HMR disabled) to /dist/ and serve @ https://localhost:3000
npm run build Build app to /dist/
npm run typecheck Run typescript check

Постановка задачи

В рамках тестового задания необходимо реализовать SPA Web-приложение, которое позволит пользователю добавлять, удалять и просматривать таймеры обратного отсчёта.

Приложение должно быть реализовано с использованием функциональных компонентов React 18, Webpack 5 и TypeScript 5. При необходимости допустимо использование дополнительных библиотек. Проект нужно создать с нуля, а конфигурацию выполнить самостоятельно.

Задание разделено на секции, каждая секция содержит требования к реализации одной из возможностей приложения.

Отображение всех добавленных таймеров

Основное окно приложения должно содержать ранее добавленные пользователем таймеры. Каждый таймер должен отображать актуальное значение и обновляться в режиме реального времени.

Таймер - это графический элемент, который отображает информацию о том, сколько осталось времени до момента наступления момента M. Если момент M уже прошёл, то таймер может остановиться или продолжить считать в обратном направлении (сколько прошло времени с момента M)

Таймеры должны располагаться в виде сетки, которая заполняется горизонтально и занимает всё доступное пространство. Сетка должна корректно отображаться на экранах как с большим, так и с маленьким разрешением.

Если пользователь закроет вкладку браузера с приложением, то при повторном открытии приложение должно отображать все ранее добавленные пользователем таймеры.

Добавление таймера

Пользователь должен иметь возможность добавить новый таймер в сетку. При добавлении таймера пользователь должен:

  1. Указать название таймера
  2. Выбрать стиль таймера из списка доступных (три радикально отличающихся стиля будет достаточно, требования к дизайну отсутствуют). С возможностью предпросмотра выбранного стиля
  3. Задать время работы таймера одним из двух способов:
    1. Указать конкретное количество времени, например 1 час и 20 секунд
    2. Указать конечную дату и время, например: 20.08.2025 10:30

Удаление таймера

Пользователь должен иметь возможность удалить таймер из сетки. Приложение должно спросить пользователя, действительно ли он хочет выполнить это действие.

Оформление проекта

В корне проекта должен быть README.md файл, который содержит инструкцию для запуска проекта и инструкцию для пользователя.

Проект должен быть представлен в виде git репозитория (можно отправить архивом, или опубликовать на github/gitlab). Коммиты должны быть разделены по features, а заголовок должен отражать их суть.

Releases

No releases published

Packages

No packages published

Languages