mtresk / laravel-starter-kit
Tresk Laravel Starter Kit
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:TypeScript
Type:project
pkg:composer/mtresk/laravel-starter-kit
Requires
- php: ^8.3
- laravel/framework: ^12.0
- laravel/tinker: ^2.10.1
Requires (Dev)
- driftingly/rector-laravel: ^2.1
- fakerphp/faker: ^1.23
- larastan/larastan: ^3.0
- laravel/pail: ^1.2.2
- laravel/pint: ^1.24
- laravel/sail: ^1.41
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- pestphp/pest: ^4.1
- pestphp/pest-plugin-laravel: ^4.0
This package is auto-updated.
Last update: 2025-12-05 06:36:29 UTC
README
Современный стартовый набор для создания веб-приложений на Laravel. Включает в себя все необходимые инструменты для разработки, сборки и деплоя.
Laravel Starter Kit - готовый к использованию шаблон проекта с предустановленными компонентами, стилями и утилитами для быстрого старта разработки.
🚀 Особенности
- Laravel 12 - современный PHP фреймворк
- Blade компоненты - переиспользуемые UI компоненты
- Vue 3 - реактивные компоненты (опционально)
- SCSS - препроцессор для стилей с BEM методологией
- Vite - быстрый сборщик для фронтенда
- PHPStan - статический анализ PHP кода
- Laravel Pint - форматирование PHP кода
📋 Требования
- PHP:
^8.3 - Composer
- Node.js:
^20.19.0 || >=22.12.0(для фронтенда) - npm или yarn
🛠 Установка
Быстрая установка через Laravel Installer
- Установите Laravel Installer (если еще не установлен):
composer global require laravel/installer
- Создайте новый проект с помощью starter kit:
laravel new my-project --using=mTresk/laravel-starter-kit
cd my-project
- Запустите проект в режиме разработки:
composer run dev
Проект будет доступен по адресу http://localhost:8000
📜 Доступные команды
Разработка
php artisan serve- запуск Laravel сервераcomposer run dev- запуск полного стека разработки (Laravel + Vite + Queue + Logs)npm run dev- запуск Vite dev сервера для фронтенда
Сборка
npm run build- сборка фронтенда (включает оптимизацию и линтинг)npm run build:vite- только сборка Vite
Анализ кода
composer run analyse- статический анализ PHP (PHPStan + Pint)npm run lint- проверка фронтенда (ESLint + Stylelint)npm run lint:fix- автоматическое исправление фронтенда
Утилиты
npm run fonts- генерация woff2 шрифтов из исходниковnpm run px-to-rem- конвертация px в remnpm run fix-all- полная оптимизация (px-to-rem + линтинг)
📁 Структура проекта
├── app/ # Laravel приложение
│ ├── Http/ # HTTP контроллеры
│ ├── Models/ # Eloquent модели
│ └── Providers/ # Сервис провайдеры
├── database/ # База данных
│ ├── migrations/ # Миграции
│ ├── factories/ # Фабрики для тестов
│ └── seeders/ # Сидеры
├── public/ # Публичные файлы
│ ├── build/ # Собранные ресурсы (Vite)
│ ├── images/ # Статические изображения
│ └── index.php # Точка входа Laravel
├── resources/ # Ресурсы для компиляции
│ └── views/ # Blade шаблоны
│ ├── components/ # Blade компоненты
│ │ ├── form/ # Формы и инпуты
│ │ ├── layout/ # Компоненты макета
│ │ ├── ui/ # UI компоненты
│ │ └── ... # Остальные компоненты
│ └── *.blade.php # Страницы
├── routes/ # Маршруты
│ └── web.php # Web маршруты
├── src/ # Фронтенд ресурсы
│ ├── app.ts # Инициализация JavaScript приложения
│ ├── vue.ts # Инициализация Vue компонентов
│ ├── assets/ # Ресурсы для обработки
│ │ ├── fonts/ # Оптимизированные шрифты (woff2)
│ │ ├── fonts-raw/ # Исходные шрифты (ttf/otf)
│ │ ├── icons/ # SVG иконки
│ │ └── images/ # Изображения для разработки
│ ├── styles/ # SCSS стили
│ │ ├── helpers/ # Переменные, миксины
│ │ ├── libs/ # Стили библиотек
│ │ └── index.ts # Точка входа стилей
│ └── utils/ # JavaScript утилиты
│ ├── base/ # Базовые скрипты
│ ├── forms/ # Работа с формами
│ ├── libs/ # JavaScript библиотеки
│ └── tasks/ # Задачи сборки
├── storage/ # Файлы приложения
├── tests/ # Тесты (Pest)
└── vendor/ # Composer зависимости
Разница между папками
public/- статические файлы, доступные напрямую через веб-серверresources/- Blade шаблоны и ресурсы для компиляцииsrc/- фронтенд ресурсы (CSS, JS), обрабатываемые Vite
🎨 Стилизация
Проект использует SCSS с BEM методологией для стилизации.
Основные файлы стилей:
src/styles/helpers/variables.scss- SCSS переменныеsrc/styles/helpers/mixins.scss- SCSS миксиныsrc/styles/colors.scss- цветовая палитраsrc/styles/fonts.scss- стили шрифтов (генерируются черезnpm run fonts)src/styles/globals.scss- глобальные стилиsrc/styles/null.scss- сброс стилей
🧩 Компоненты
Blade компоненты:
Layout компоненты:
- main - основной макет страницы с мета-тегами и структурой
- header - шапка сайта
- footer - подвал сайта
- breadcrumb - хлебные крошки
- content - контентная секция
UI компоненты:
- icon - SVG иконки из спрайта
- button - кнопки различных типов
- menu-button - кнопка меню
Form компоненты:
- form-field - поля форм
- checkbox - чекбоксы
- radio - радиокнопки
- select - селекты
- quantity - счетчики количества
- range - слайдеры диапазонов
Интерактивные компоненты:
- accordion - аккордеоны с анимацией
- popup - модальные окна
- map - интеграция с картами
Использование:
Icon
Для использования иконок:
- Добавьте SVG символы в файл
public/images/icons.svg - Используйте Blade компонент Icon:
<x-ui.icon name="close" size="24" /> <x-ui.icon name="pin" width="32" height="32" />
Props:
name- ID символа в icons.svgsize- размер иконки в пикселях (приоритет над width/height)width- ширина иконкиheight- высота иконки
Структура icons.svg:
<svg xmlns="http://www.w3.org/2000/svg"> <symbol id="close" viewBox="0 0 20 20"> <path d="..." fill="currentColor" /> </symbol> <symbol id="pin" viewBox="0 0 40 40"> <path d="..." fill="currentColor" /> </symbol> </svg>
Accordion
Компонент аккордеона с плавной анимацией открытия/закрытия. Поддерживает различные режимы работы и настройки анимации.
Структура компонентов:
accordion-root- корневой контейнер для группы аккордеоновaccordion- отдельный элемент аккордеона
Базовое использование:
<x-accordion.accordion-root is-single is-close-outside duration="500"> <x-accordion.accordion> <x-slot name="header"> <h3>Заголовок 1</h3> </x-slot> <x-slot name="content"> <p>Содержимое первого аккордеона</p> </x-slot> </x-accordion.accordion> <x-accordion.accordion> <x-slot name="header"> <h3>Заголовок 2</h3> </x-slot> <x-slot name="content"> <p>Содержимое второго аккордеона</p> </x-slot> </x-accordion.accordion> </x-accordion.accordion-root>
AccordionRoot Props:
is-single- режим "только один открытый" (по умолчанию false)is-close-outside- закрытие по клику вне области (по умолчанию false)duration- длительность анимации в миллисекундах (по умолчанию 300)
Особенности:
- ✅ Плавная анимация с использованием
max-height - ✅ Поддержка множественных аккордеонов на странице
- ✅ Автоматическая инициализация через JavaScript класс
- ✅ Синхронизация CSS и JavaScript анимации
- ✅ Доступность (semantic HTML с
<details>и<summary>)
🧩 Vue компоненты (опционально)
Проект поддерживает использование Vue 3 компонентов в Blade шаблонах для создания интерактивных элементов.
Подключение Vue
- Vue настроен в
src/vue.tsи подключается через Vite - Создайте Vue компонент в папке
src/components/ - Зарегистрируйте компонент в
src/vue.ts - Используйте компонент в Blade шаблоне
Пример использования
Создание Vue компонента:
<!-- src/components/VueExample.vue --> <template> <h2>Пример Vue компонента в Laravel</h2> </template>
Регистрация в vue.ts:
// src/vue.ts import { createApp } from 'vue' import VueExample from '@/components/VueExample.vue' const VueExampleInstance = createApp({ components: { 'component-example': VueExample, }, }) if (document.querySelector('#example-component')) { VueExampleInstance.mount('#example-component') }
Использование в Blade:
<x-layout.main title="Пример"> <div id="example-component"> <component-example /> </div> </x-layout.main>
🔤 Работа со шрифтами
Подготовка шрифтов
- Поместите исходные шрифты в папку
src/assets/fonts-raw/в формате TTF или OTF - Запустите генерацию оптимизированных шрифтов:
npm run fonts
- Оптимизированные шрифты (WOFF2) будут созданы в папке
src/assets/fonts/
Использование шрифтов
После генерации шрифты автоматически подключаются в проекте. Используйте их в CSS:
// В styles/fonts.scss @font-face { font-family: 'Inter'; src: url('@/assets/fonts/Inter-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Inter'; src: url('@/assets/fonts/Inter-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
🔧 Утилиты
JavaScript библиотеки (в src/utils/libs/):
- Accordion - нативные аккордеоны с анимацией
- Gallery - lightbox галерея изображений
- Map - инициализация Yandex Карт
- Menu - логика бургер-меню
- Parallax - параллакс эффекты
- Popup - управление модальными окнами
- Quantity - счетчики количества
- ResponsiveAdapter - изменения порядка элементов на определенной ширине
- Scroll - навигация и направление скрола
- ScrollWatcher - отслеживание скрола
- ShowMore - показать еще
- Spoilers - JS аккордеоны
- Tabs - табы
Формы (в src/utils/forms/):
- DatePicker - выбор даты
- InputMask - маски ввода
- Range - диапазоны
- Select - JavaScript селект
Базовые утилиты (в src/utils/base/):
- helpers - вспомогательные функции
- scrollbar - кастомные скроллбары
- sliders - слайдеры
- tippy - тултипы
📖 Документация по использованию: snippets.maximtresk.ru
Активация утилит
Для активации утилит раскомментируйте соответствующие строки в src/app.ts:
// src/app.ts function initializeApp() { new Accordion() // уже активен // new Gallery() // new Map() // new Menu() // new Parallax({}) // new Popup() // new ResponsiveAdapter('max') // new ScrollWatcher({}) // new ShowMore() // new Spoilers() // new Tabs() // new Quantity() // const scroll = new Scroll() }
⚙️ Конфигурация
Vite (vite.config.js)
- Поддержка Vue 3 компонентов
- Автоматическая оптимизация изображений
- SCSS препроцессор с глобальными переменными
- Алиасы путей (@ для src/)
ESLint & Stylelint
- Конфигурация @antfu/eslint-config
- SCSS линтинг
- Автоформатирование
🎯 SEO
Laravel SEO
- Blade директивы - управление мета-тегами
- Open Graph - поддержка социальных сетей
Использование в Blade
<x-layout.main title="Заголовок страницы" description="Описание страницы" og-title="'Заголовок для соцсетей'" og-description="'Описание для соцсетей'"> <!-- Контент страницы --> </x-layout.main>
📚 Дополнительные ресурсы
- Laravel Documentation
- Laravel Starter Kits
- Vue 3 Documentation
- Vite Documentation
- BEM Methodology
- SCSS Documentation
📄 Лицензия
MIT License
Создано с ❤️ для современной веб-разработки на Laravel