54 lines
1.9 KiB
Markdown
54 lines
1.9 KiB
Markdown
# Calculator
|
||
|
||
Frontend-калькулятор с псевдоавторизацией.
|
||
|
||
## Стек
|
||
|
||
- **Framework:** React 18 + TypeScript
|
||
- **UI:** Ant Design 5
|
||
- **Сборка:** Vite
|
||
- **Стили:** CSS Modules
|
||
- **Роутинг:** React Router 6
|
||
- **Домен:** test-calculator.vigdorov.ru
|
||
|
||
## Деплой
|
||
|
||
- **Namespace:** test-calculator (отдельный)
|
||
- **CI/CD:** Drone CI через ci-templates (service.yaml + .drone.yml)
|
||
- **Тип:** web-frontend (SPA → nginx)
|
||
- **Registry:** registry.vigdorov.ru/library/test-calculator
|
||
- **Trigger:** push в master
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
calculator/
|
||
service.yaml # Конфиг ci-templates
|
||
.drone.yml # CI/CD пайплайн
|
||
src/
|
||
components/ # UI-компоненты (Calculator, Display, Keypad, LoginForm)
|
||
pages/ # Страницы (LoginPage, CalculatorPage)
|
||
context/ # AuthContext для псевдоавторизации
|
||
hooks/ # Кастомные хуки (useCalculator, useKeyboard)
|
||
utils/ # Логика вычислений
|
||
App.tsx
|
||
main.tsx
|
||
public/
|
||
index.html
|
||
```
|
||
|
||
## Команды
|
||
|
||
```bash
|
||
npm run dev # Запуск dev-сервера
|
||
npm run build # Сборка для продакшена
|
||
npm run preview # Превью билда
|
||
npm run lint # Линтинг
|
||
```
|
||
|
||
## Архитектурные решения
|
||
|
||
- **Псевдоавторизация:** Логин сохраняется в localStorage, любой логин принимается. Нет пароля.
|
||
- **Клавиатура:** Калькулятор полностью управляется с клавиатуры (цифры, операторы, Enter=равно, Escape=сброс, Backspace=удаление).
|
||
- **Адаптивность:** Минимальная ширина экрана 320px. Интерфейс центрирован.
|