commit 56fee5cbdf3f9286ebb36f034b8815bdcd623a13 Author: Alina Date: Tue Feb 17 20:40:09 2026 +0300 init: project docs — requirements, architecture, deploy config Co-Authored-By: Claude Opus 4.6 diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..90c5553 --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,320 @@ +# Архитектура Calculator + +## Дерево файлов + +``` +calculator/ +├── service.yaml # Конфиг для ci-templates (тип, домен, ресурсы) +├── .drone.yml # CI/CD пайплайн (копия base.drone.yml) +├── index.html +├── package.json +├── tsconfig.json +├── vite.config.ts +├── public/ +│ └── favicon.svg +└── src/ + ├── main.tsx # Точка входа, рендер + ├── App.tsx # Роутинг: /login → /calculator + ├── App.css # Глобальные стили (reset, body, центрирование) + │ + ├── context/ + │ └── AuthContext.tsx # React Context + Provider для псевдоавторизации + │ + ├── hooks/ + │ ├── useCalculator.ts # Стейт-машина калькулятора (вся логика) + │ └── useKeyboard.ts # Слушатель клавиатуры → маппинг на действия + │ + ├── utils/ + │ └── calculate.ts # Чистые функции вычислений + │ + ├── pages/ + │ ├── LoginPage.tsx # Страница входа + │ ├── LoginPage.module.css + │ ├── CalculatorPage.tsx # Страница калькулятора (шапка + калькулятор) + │ └── CalculatorPage.module.css + │ + └── components/ + ├── Calculator/ + │ ├── Calculator.tsx # Обёртка: Display + Keypad + │ └── Calculator.module.css + ├── Display/ + │ ├── Display.tsx # Выражение + результат + │ └── Display.module.css + ├── Keypad/ + │ ├── Keypad.tsx # Сетка кнопок + │ └── Keypad.module.css + └── Button/ + ├── Button.tsx # Кнопка калькулятора + └── Button.module.css +``` + +## Схема компонентов + +``` + + ← context/AuthContext.tsx + + /login → ← Форма логина + / → ← Редирект на /login если нет юзера + + ├── Header (логин + выход) + └── + ├── ← expression + result + └── ← сетка