+
diff --git a/ПЛАН_ДЕЙСТВИЙ_РЫБСТОК.md b/ПЛАН_ДЕЙСТВИЙ_РЫБСТОК.md
index f6d9693..9553ccd 100644
--- a/ПЛАН_ДЕЙСТВИЙ_РЫБСТОК.md
+++ b/ПЛАН_ДЕЙСТВИЙ_РЫБСТОК.md
@@ -356,7 +356,7 @@
## 5. Вопросы, которые стоит уточнить перед разработкой
-1. На какой платформе быстрее запускать проект: Laravel/Filament, WordPress/WooCommerce с доработками, 1C-Bitrix, Django, Next.js + готовая админка или другая связка?
+1. Какой локальный сервер и хостинг использовать для проекта на чистом PHP: Open Server Panel, Laragon, обычный хостинг, VPS или другой вариант?
2. Есть ли уже текущий сайт, каталог, база товаров, Excel/CSV с товарами и фотографиями?
3. Как сейчас хранятся товары: в Excel, 1С, МойСклад, вручную, в другой CMS?
4. Нужно ли интегрироваться с 1С, МойСкладом или другой учетной системой?
@@ -413,44 +413,36 @@
- Импорт товаров из Excel/CSV.
- Экспорт заказов в Excel.
-## 7. Предлагаемый технический подход
+## 7. Технический подход
-Так как нужна быстрая сборка под ключ с логичной админкой, гибкими товарами и возможностью доработки программистом, оптимальные варианты:
+Проект Рыбсток делаем на чистом PHP без фреймворка.
-### Вариант A: Laravel + Filament
+Базовая связка:
-Подходит, если нужен индивидуальный проект с сильной админкой, гибкими фасовками, промокодами, заказами и прайсами.
+- PHP 8.2+ или PHP 8.3+;
+- MySQL или MariaDB;
+- PDO для работы с базой;
+- собственная админка на PHP;
+- HTML, CSS и JavaScript для витрины;
+- Яндекс.Карты для адресов и расчета доставки;
+- email-отправка через SMTP;
+- CSV/XLSX-выгрузка прайс-листа.
-Плюсы:
+Чистый PHP выбран потому, что проект должен быстро запускаться на обычном хостинге, легко передаваться программисту и не зависеть от тяжелых фреймворков. При этом код нужно писать структурно: отдельные папки для контроллеров, моделей/репозиториев, сервисов, шаблонов, админки, загрузок, экспортов и настроек.
-- быстрая мощная админка;
-- гибкая база данных;
-- удобно дорабатывать;
-- легко сделать Excel-выгрузку;
-- хорошо подходит для кастомной логики доставки и фасовок.
+Рекомендуемая структура проекта:
-Минусы:
-
-- больше разработки, чем на готовой CMS.
-
-### Вариант B: WordPress + WooCommerce + доработки
-
-Подходит, если важнее очень быстрый запуск на готовой базе.
-
-Плюсы:
-
-- быстро поднять витрину;
-- много готовых модулей;
-- понятная админка.
-
-Минусы:
-
-- сложная кастомная логика фасовок, доставки и промокодов может потребовать много доработок;
-- админка может стать менее аккуратной при большом количестве плагинов.
-
-### Рекомендация
-
-Для проекта Рыбсток лучше выбрать Laravel + Filament, если цель - надежный сайт с гибкой логикой и понятной админкой, который можно быстро дорабатывать. Если нужно запуститься максимально срочно любой ценой, можно рассмотреть WooCommerce, но сложность фасовок и доставки делает индивидуальную разработку предпочтительнее.
+- `public/` - входная точка сайта и публичные assets;
+- `app/` - основной PHP-код;
+- `app/Controllers/` - обработчики страниц;
+- `app/Models/` - модели данных;
+- `app/Repositories/` - запросы к базе;
+- `app/Services/` - бизнес-логика: доставка, промокоды, корзина, письма, прайс;
+- `views/` - шаблоны сайта;
+- `admin/` - собственная админка;
+- `storage/` - загрузки, экспорты, логи;
+- `database/` - SQL-схема, миграции или seed-файлы;
+- `docs/` - рабочие документы проекта.
## 8. Пошаговый план работ
@@ -631,4 +623,9 @@
## 10. Ближайший следующий шаг
-Перед кодом нужно выбрать платформу и получить исходные данные по каталогу. Рекомендуемый следующий шаг: принять решение по технической связке и подготовить структуру базы данных/моделей для товаров, фасовок, заказов, промокодов и доставки.
+Перед кодом нужно получить исходные данные по каталогу и подготовить структуру базы данных/моделей для товаров, фасовок, заказов, промокодов и доставки.
+
+## 11. Статус выполнения
+
+- Шаг 1 выполнен: выбрана техническая связка на чистом PHP, создан стартовый каркас проекта, подключение к MariaDB через `.env`, базовые папки и файл `ШАГ_1_ТЕХНИЧЕСКОЕ_РЕШЕНИЕ.md`.
+- Следующий шаг: спроектировать базу данных, модели, связи и структуру собственной админки.
diff --git a/ШАГ_1_ТЕХНИЧЕСКОЕ_РЕШЕНИЕ.md b/ШАГ_1_ТЕХНИЧЕСКОЕ_РЕШЕНИЕ.md
new file mode 100644
index 0000000..7fe9133
--- /dev/null
+++ b/ШАГ_1_ТЕХНИЧЕСКОЕ_РЕШЕНИЕ.md
@@ -0,0 +1,280 @@
+# Шаг 1. Техническое решение для сайта Рыбсток
+
+## Решение
+
+Проект Рыбсток делаем на чистом PHP без фреймворка.
+
+Базовая связка:
+
+- Backend: чистый PHP 8.2+ или PHP 8.3+
+- База данных: MySQL или MariaDB
+- Доступ к базе: PDO
+- Frontend: HTML, CSS, JavaScript
+- Админка: собственная админ-панель на PHP
+- Шаблоны: обычные PHP-шаблоны
+- Поиск на первом этапе: SQL-поиск с нормализацией русских слов и словарем синонимов
+- Поиск на расширенном этапе: отдельный поисковый индекс или внешний движок, если понадобится
+- Excel-выгрузка: CSV на первом этапе, XLSX через PHP-библиотеку или ручную генерацию позже
+- Карты и адреса: Яндекс.Карты / Яндекс Геокодер / Яндекс Маршрутизация
+- Email: SMTP-почта домена или внешний SMTP-сервис
+
+## Почему чистый PHP подходит
+
+Чистый PHP подходит, если важны:
+
+- быстрый запуск на обычном хостинге;
+- понятный код без тяжелого фреймворка;
+- простая передача проекта другому программисту;
+- полный контроль над логикой фасовок, корзины, доставки и админки;
+- минимум зависимостей;
+- возможность быстро править проект вручную.
+
+Важно: чистый PHP нужно писать структурно. Даже без фреймворка проект должен иметь понятные слои: маршруты, контроллеры, модели/репозитории, сервисы, шаблоны и админку. Иначе большой каталог, фасовки, промокоды и доставка быстро станут трудными для поддержки.
+
+## Что сейчас есть в папке проекта
+
+В папке проекта создан стартовый каркас:
+
+- `.git`
+- `.vscode`
+- `ПЛАН_ДЕЙСТВИЙ_РЫБСТОК.md`
+- `ШАГ_1_ТЕХНИЧЕСКОЕ_РЕШЕНИЕ.md`
+- `.env`
+- `.env.example`
+- `.gitignore`
+- `README.md`
+- `public/index.php`
+- `public/assets/css/app.css`
+- `app/bootstrap.php`
+- `app/helpers.php`
+- `app/Core/Env.php`
+- `app/Core/Database.php`
+- `app/Core/View.php`
+- `views/layouts/main.php`
+- `views/pages/home.php`
+- `admin/index.php`
+- `database/schema.sql`
+- `storage/`
+- `docs/`
+
+В `.env` внесены данные подключения к базе MariaDB. Сам файл закрыт от git через `.gitignore`.
+
+## Что нужно установить для разработки
+
+На рабочем компьютере должны быть доступны:
+
+- PHP 8.2 или новее, лучше PHP 8.3
+- MySQL или MariaDB
+- Веб-сервер: Apache или Nginx
+- Git
+
+Желательно:
+
+- Open Server Panel, Laragon или другой локальный сервер для Windows
+- phpMyAdmin или Adminer для работы с базой
+- Composer только по желанию, если позже захотим подключить готовые библиотеки для SMTP, Excel или dotenv
+
+Для чистого PHP Composer не обязателен на старте.
+
+## Рекомендуемая структура проекта
+
+```text
+loveriba.ru/
+ app/
+ Config/
+ Controllers/
+ Core/
+ Models/
+ Repositories/
+ Services/
+ Validators/
+ admin/
+ controllers/
+ views/
+ public/
+ assets/
+ css/
+ js/
+ images/
+ index.php
+ storage/
+ uploads/
+ exports/
+ logs/
+ views/
+ layouts/
+ pages/
+ product/
+ catalog/
+ cart/
+ checkout/
+ emails/
+ database/
+ migrations/
+ seeders/
+ schema.sql
+ docs/
+ .env.example
+ README.md
+```
+
+## Основные модули
+
+- `Products` - товары
+- `ProductVariants` - фасовки и цены
+- `Categories` - категории и подкатегории
+- `Cart` - корзина
+- `Checkout` - оформление заказа
+- `Orders` - заказы
+- `Promocodes` - промокоды и ограничения
+- `Delivery` - расчет доставки
+- `CustomerAccess` - вход по email-коду и история заказов
+- `CompareList` - список сравнения до 10 товаров
+- `Search` - поиск и голосовой ввод
+- `Reviews` - отзывы и рейтинг
+- `PriceExport` - прайс-лист
+- `AdminSettings` - настройки сайта, писем, доставки, счетчиков
+
+## Базовая структура базы данных
+
+На втором шаге нужно спроектировать таблицы:
+
+- `admins` - администраторы
+- `categories`
+- `products`
+- `product_variants`
+- `orders`
+- `order_items`
+- `promocodes`
+- `promocode_targets`
+- `customer_login_codes`
+- `reviews`
+- `site_settings`
+- `popular_products`
+- `promo_blocks`
+- `delivery_calculations`
+- `product_images`
+- `product_search_terms`
+
+## Важные технические решения
+
+### Фасовки
+
+Фасовка должна быть отдельной таблицей, а не просто текстовым полем товара. Это важно, потому что у каждой фасовки своя цена, шаг количества, единица измерения и отображение в корзине.
+
+Пример:
+
+- товар: горбуша неразделанная;
+- фасовка: пласт 10 кг;
+- базовая единица: кг;
+- цена за кг: 600 руб.;
+- цена фасовки: 6000 руб.;
+- шаг количества: 10 кг.
+
+### Корзина
+
+Корзина должна хранить не просто товар, а конкретную фасовку товара.
+
+Пример позиции:
+
+- `product_id`
+- `variant_id`
+- название товара
+- название фасовки
+- количество
+- шаг количества
+- цена за единицу
+- цена за фасовку
+- итог
+
+### Заказы
+
+Заказ должен сохранять снимок данных на момент оформления:
+
+- название товара;
+- выбранная фасовка;
+- цена;
+- количество;
+- итог;
+- расчет доставки;
+- примененный промокод.
+
+Это нужно, чтобы изменение цены в каталоге не ломало старые заказы.
+
+### Доставка
+
+Расчет доставки делаем отдельным PHP-сервисом `DeliveryCalculator`.
+
+Он принимает:
+
+- тип получения;
+- адрес;
+- сумму заказа;
+- расстояние от МКАД;
+- признак подъема.
+
+И возвращает:
+
+- стоимость доставки;
+- порог бесплатной доставки;
+- текстовое объяснение для клиента;
+- технические данные для заказа.
+
+### Админка
+
+Админка должна быть собственной, без лишних плагинов.
+
+Минимальные разделы:
+
+- товары;
+- категории;
+- фасовки;
+- заказы;
+- промокоды;
+- акции;
+- популярные товары;
+- отзывы;
+- настройки доставки;
+- настройки писем;
+- прайс-лист;
+- страницы и тексты сайта.
+
+### Email вместо SMS
+
+Все коды входа и письма отправляются только на email. SMS не используются.
+
+### Прайс-лист
+
+На первом этапе можно сделать выгрузку CSV, который открывается в Excel. Если нужен именно `.xlsx`, подключим отдельную библиотеку или сделаем генератор XLSX.
+
+Прайс должен собираться из опубликованных товаров и опубликованных фасовок. Каждая фасовка должна быть отдельной строкой, чтобы покупатель видел все цены.
+
+## Второй шаг
+
+Следующий шаг: спроектировать базу данных и модели проекта под чистый PHP.
+
+Нужно подготовить:
+
+1. Список таблиц.
+2. Поля каждой таблицы.
+3. Связи между таблицами.
+4. Правила расчета цены фасовки.
+5. Правила расчета доставки.
+6. Структуру собственной админки.
+7. Первичный SQL-файл `database/schema.sql`.
+
+После второго шага можно будет создавать файловую структуру проекта и начинать код.
+
+Файловая структура уже создана на шаге 1, поэтому на шаге 2 можно сразу перейти к SQL-схеме, таблицам и первичным PHP-моделям.
+
+## Что нужно уточнить перед кодом
+
+Минимально важные вопросы:
+
+1. Есть ли файл с товарами, ценами и фасовками: Excel, CSV или другая база?
+2. Есть ли фотографии товаров и склада?
+3. Какой email использовать для получения заказов?
+4. Есть ли логотип Рыбсток?
+5. Где будет размещаться сайт: обычный хостинг, VPS, Timeweb, Beget, Reg.ru, другой вариант?
+6. Нужно ли сразу делать импорт из Excel или на старте можно заносить товары через админку?
+7. Какой локальный сервер удобнее использовать: Open Server Panel, Laragon или другой?