Тестовое задание: SPA-приложение на React для управления пользователями.
Приложение для просмотра и редактирования пользователей:
- Таблица пользователей с пагинацией
- Поиск по пользователям
- Страница детальной информации
- Редактирование через модальное окно
- Валидация формы
- React 19 - библиотека для построения пользовательских интерфейсов
- TypeScript - типизированный JavaScript для безопасности кода
- Vite - современный сборщик проектов
- Mantine UI v8 - библиотека компонентов (Table, Pagination, Modal, Form, Notifications)
- Tanstack Query v5 - управление серверным состоянием, кэширование и мутации
- React Router v7 - клиентская маршрутизация
- Axios - HTTP-клиент для API запросов
- reqres.in - публичное mock API (требуется бесплатная регистрация)
- Node.js >= 20
- npm
npm installСоздайте файл .env:
VITE_REQRES_API_KEY=reqres-free-v1
npm run devОткройте http://localhost:5173
npm run buildsrc/
├── api/ # API запросы
├── components/ # React компоненты
├── hooks/ # Custom hooks
├── pages/ # Страницы
├── types/ # TypeScript типы
└── utils/
- Таблица пользователей (ID, First Name, Last Name, Email)
- Поиск
- Пагинация через URL (
?page=1) - Переход на страницу пользователя по клику на ID
- Информация о пользователе
- Кнопка редактирования (открывает модальное окно)
- Модальное окно с формой
- Валидация полей (обязательные + email)
- Уведомления об успехе/ошибке
Используется reqres.in:
GET /api/users?page=1- список пользователейGET /api/users/:id- пользователь по IDPUT /api/users/:id- обновление пользователя
API ключ: reqres-free-v1 (передается через заголовок x-api-key)
Примечание: reqres.in не сохраняет изменения на сервере (mock API), но данные обновляются локально через инвалидацию кэша.
- Tanstack Query для управления состоянием и кэширования
- Пагинация через URL параметры
- Валидация форм через Mantine useForm
- TypeScript для типизации
- Обработка loading/error состояний