Мини‑магазин: категории и товары, Blade‑шаблоны (не SPA), простая админка на ресурсных контроллерах.
- PHP 7.4: mbstring, openssl, pdo_mysql, fileinfo, gd, bcmath
- Composer 2.x
- MySQL 5.7+/MariaDB 10.3+
- Node.js 14 + npm
cp .env.example .env
composer install
# .env (пример)
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=maxmoll
# DB_USERNAME=root
# DB_PASSWORD=
php artisan key:generate
php artisan migrate --seed
php artisan storage:link
npm install --legacy-peer-deps
npm run dev
php artisan serve --host=127.0.0.1 --port=8000
/— каталог (пагинация 6)/category/{slug}— страница категории/product/{slug}— страница товара- Админка:
/admin/categories,/admin/products
- Если пусто — генерируется из названия.
- Всегда нормализуется и делается уникальным при сохранении.
- Старые URL после изменения slug — 404 (ожидаемо).
- Bootstrap 4, адаптив.
- Меню «Каталог»: hover на desktop, tap на mobile.
- Превью карточек: фикс. высота,
object-fit: cover; object-position: top. - Модалка «добавлено в корзину» по клику «В корзину».
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache && php artisan route:cache && php artisan view:cache
npm run production
Сборка и запуск:
docker build -t maxmoll_tz .
docker run --rm -p 8080:80 --env-file .env maxmoll_tz
Открыть http://127.0.0.1:8080
- Установить flyctl и войти:
fly auth signup/fly auth login - Создать app:
fly apps create maxmoll-tz(или своё имя и поменять вfly.toml) - Секреты (пример):
fly secrets set \
APP_KEY="base64:..." \
APP_ENV=production APP_DEBUG=false \
DB_CONNECTION=mysql DB_HOST=... DB_PORT=3306 \
DB_DATABASE=... DB_USERNAME=... DB_PASSWORD=...
- Деплой:
fly deploy --remote-only - GitHub Actions: добавьте секрет
FLY_API_TOKENи пушьте вmain.