Веб-приложение для импорта и просмотра переписок из мессенджеров (Telegram, WhatsApp, Viber). Laravel + Inertia + Vue.
- PHP 8.2+
- Composer
- Node.js 18+ и npm
- MySQL 8+ (или MariaDB) — сервер должен быть запущен, база создана до
make setup/make migrate
make setupЭта команда по очереди:
- Копирует
.env.exampleв.env, если файла.envещё нет. - Генерирует APP_KEY в
.env. - Для SQLite создаёт файл
database/database.sqlite(для MySQL базу нужно создать вручную заранее). - Ставит PHP-зависимости (
composer install). - Ставит Node-зависимости (
npm install --legacy-peer-deps). - Запускает миграции (
php artisan migrate). - Собирает фронтенд (
npm run build).
После этого проект готов к запуску.
В проект добавлен production-ready Dockerfile в docker/Dockerfile (Laravel + собранные Vite-ассеты).
make docker-buildили напрямую:
docker build -t messsaga-app:latest -f docker/Dockerfile .make docker-upили напрямую:
docker run --rm -p 8080:80 --env-file .env messsaga-app:latestЕсли БД не в контейнере приложения, укажите в .env внешний DB_HOST.
Быстрый запуск через Makefile:
make docker-upили напрямую:
docker compose up -d --buildЭто поднимет:
app(HTTP на порту${SERVER_PORT}из.env, по умолчанию8080)queue(воркерphp artisan queue:work)mysql(внутри compose-сети)
Важно: для deploy-стека app и queue принудительно используют MySQL (через docker-compose.yml), чтобы оба контейнера работали с одной очередью.
docker compose exec app php artisan migrate --forceОстановить deploy-стек:
make docker-down- Порт снаружи меняется в
docker-compose.yml(7500:80или другой указанный в .env). - Переменные окружения задаются через
.env/env_file. - Для отдельного процесса очередей можно масштабировать
queue:
docker compose up -d --scale queue=2Вариант А — всё в одном терминале (удобно для разработки):
make runПоднимаются: Laravel-сервер, воркер очередей, лог и Vite. Откройте в браузере адрес, который выведет скрипт (обычно http://127.0.0.1:8000).
Вариант Б — в разных терминалах:
# Терминал 1 — сервер
make serve
# Терминал 2 — очередь (обработка импорта чатов)
make queue
# Терминал 3 — фронтенд с hot reload
make devСервер по умолчанию на порту 8000. Другой порт: PORT=8080 make serve.
В репозитории нет файла .env (он в .gitignore). В нём хранятся секреты и настройки окружения.
В .env.example лежит шаблон, где APP_KEY пустой. Laravel требует непустой APP_KEY для шифрования сессий, cookies и т.п. Если ключа нет, приложение выдаёт ошибку вроде:
No application encryption key has been specified.
Что сделать: один раз сгенерировать ключ:
cp .env.example .env
php artisan key:generateЛибо просто выполнить make setup — он сам создаёт .env и запускает key:generate.
В .env заданы параметры MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=messsaga
DB_USERNAME=root
DB_PASSWORD=Перед первым запуском:
-
Запустите сервер MySQL (или MariaDB).
-
Создайте базу (один раз):
CREATE DATABASE messsaga CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
В
.envукажите правильныеDB_USERNAMEиDB_PASSWORD, если отличаются отrootи пустого пароля. -
Выполните
make setupилиmake migrate.
Чтобы использовать SQLite вместо MySQL:
-
В
.envзадайте:DB_CONNECTION=sqlite # DB_HOST=127.0.0.1 # DB_PORT=3306 # DB_DATABASE=messsaga # DB_USERNAME=root # DB_PASSWORD=
-
Создайте файл БД и выполните миграции:
make db-create make migrate
Медиа-вложения можно хранить не локально, а в S3-совместимом хранилище.
- В
.envзадайте:
MEDIA_DISK=s3
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin
AWS_DEFAULT_REGION=ru-central1
AWS_BUCKET=messsaga-media
AWS_ENDPOINT=http://127.0.0.1:9000
AWS_URL=http://127.0.0.1:9000/messsaga-media
AWS_USE_PATH_STYLE_ENDPOINT=true- Поднимите MinIO в dev-профиле compose:
docker compose --profile dev up -d minio minio-initПосле этого приложение продолжит отдавать вложения через защищённый API-роут, но сами файлы будут храниться в S3-совместимом бакете.
Для продакшна с Яндекс Object Storage используются те же переменные AWS_* (endpoint/region/bucket/credentials), обычно с MEDIA_DISK=s3.
| Команда | Описание |
|---|---|
make setup |
Полная установка с нуля (.env, ключ, БД, зависимости, миграции, сборка). |
make run |
Запуск всего: сервер + очередь + Vite + логи. |
make serve |
Только Laravel-сервер. |
make queue |
Воркер очередей (импорт чатов). |
make dev |
Vite в режиме разработки (hot reload). |
make build |
Сборка фронтенда для production. |
make docker-build |
Сборка Docker-образа приложения (messsaga-app:latest). |
make docker-up |
Поднять deploy-стек Docker (app + queue + mysql). |
make docker-down |
Остановить deploy-стек Docker. |
make db-create |
Создать database/database.sqlite при использовании SQLite. |
make migrate |
Выполнить миграции. |
make fresh |
Сбросить БД и заново выполнить миграции. |
make test |
Запуск тестов. |
make logs |
Просмотр логов в реальном времени. |
make clear |
Очистка кэша приложения. |
make help |
Список всех целей. |
- «No application encryption key» — выполните
php artisan key:generateили зановоmake setup. - Ошибки при миграции / «could not find driver» — для MySQL нужен PHP-модуль
pdo_mysql. Для SQLite —pdo_sqlite. - «SQLSTATE[HY000] [1049] Unknown database» — создайте базу MySQL:
CREATE DATABASE messsaga CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - Очередь не обрабатывает импорт — должен быть запущен воркер:
make queueилиmake run. - После pull не работают стили/скрипты — пересоберите фронтенд:
npm install --legacy-peer-deps && make build.
- Backend: Laravel 12, PHP 8.2+
- Frontend: Vue 3, Inertia.js, Vite
- БД по умолчанию: MySQL (опционально SQLite)
- Очереди: database driver (таблица
jobs)