SPA для управления учебными мероприятиями. React + TypeScript + Tailwind CSS + shadcn/ui.
- Node.js >= 18
npm install
npm run devnpm run build
npm run previewБиблиотека копирует исходный код компонентов прямо в проект (src/components/ui/). Это даёт полный контроль над реализацией и позволяет менять компоненты под задачу.
Позволяет заменить моки на реальный API-клиент (fetch/axios) без переписывания компонентов.
components/ui/— базовые shadcn/ui компоненты (кнопки, инпуты, таблицы, диалоги)features/— компоненты с бизнес-логикой (EventCard, EventList, EventForm, EventDetail)
Для такого объёма состояния достаточно React Context + useReducer. Так не будет лишних зависимостей.
Утилитарный подход к стилизации ускоряет вёрстку. Неиспользуемые классы вырезаются при сборке.
src/
├── components/ui/ # базовые shadcn/ui компоненты (Card, Badge, Dialog, Button, Input, Select, Table, Label)
├── features/ # Компоненты с бизнес-логикой
│ ├── EventCard/ # Карточка мероприятия
│ ├── EventList/ # Сетка карточек + кнопка «Создать»
│ ├── EventDetail/ # Модалка деталей мероприятия
│ └── EventForm/ # Форма создания/редактирования
├── services/ # CRUD-операции (слой данных)
├── data/ # Моковые данные
├── types/ # Общие типы
├── context/ # React Context + useReducer
├── hooks/ # Кастомные хуки
├── lib/ # Утилиты shadcn/ui
└── utils/ # Валидация, форматирование