Простая CRM система для управления клиентами, сделками и задачами.
Базовый CRM на Laravel + Vue.js. Можно добавлять клиентов, создавать сделки и ставить задачи. Авторизация через API токены (Laravel Sanctum).
Нужно установить:
- Docker и Docker Compose (рекомендуется)
- Node.js 18+ и npm
Либо без Docker:
- PHP 8.2+ и Composer
- PostgreSQL или SQLite
git clone <repository-url>
cd laravel-vue-crmПроверьте что файл .env существует и содержит настройки для PostgreSQL:
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravelЗапустите контейнеры:
docker-compose up -dВыполните миграции:
docker-compose exec app php artisan migrate:fresh --seed
docker-compose exec app php artisan config:clear
docker-compose exec app php artisan cache:clearУстановите npm пакеты и запустите фронтенд:
npm install
npm run devОткройте http://localhost:5174 в браузере.
Для входа используйте:
- Email: test@test.com
- Password: password
docker-compose ps # статус
docker-compose logs -f app # логи
docker-compose down # остановить
docker-compose restart # перезапустить
docker-compose exec app php artisan migrate:fresh --seed # пересоздать БДcomposer install
npm install
cp .env.example .env
php artisan key:generateНастройте БД в .env. Для SQLite:
touch database/database.sqliteDB_CONNECTION=sqlite
DB_DATABASE=/полный/путь/к/database.sqliteДля PostgreSQL:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel_crm
DB_USERNAME=postgres
DB_PASSWORD=passwordВыполните миграции:
php artisan migrate:fresh --seedЗапустите серверы в двух терминалах:
# Терминал 1
php artisan serve --port=8000
# Терминал 2
npm run devОткройте http://localhost:5173
app/Http/Controllers/Api/ - API контроллеры
app/Models/ - модели
app/Policies/ - правила доступа
resources/js/components/ - Vue компоненты
resources/js/router/ - маршруты Vue
database/migrations/ - миграции
database/seeders/ - тестовые данные
- 5174 - фронтенд (Vite)
- 8080 - API (Docker)
- 8000 - API (без Docker)
- 5433 - PostgreSQL (Docker)
В vite.config.js настроен прокси для перенаправления /api запросов на бэкенд:
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
},
}Это нужно чтобы фронтенд мог общаться с бэкендом без CORS проблем.
Все эндпоинты (кроме login/register) требуют Bearer token в заголовке Authorization.
POST /api/register
POST /api/login
POST /api/logout
GET /api/clients
POST /api/clients
GET /api/clients/{id}
PUT /api/clients/{id}
DELETE /api/clients/{id}
GET /api/deals
POST /api/deals
GET /api/deals/{id}
PUT /api/deals/{id}
DELETE /api/deals/{id}
GET /api/tasks
POST /api/tasks
GET /api/tasks/{id}
PUT /api/tasks/{id}
DELETE /api/tasks/{id}
Ошибка 500:
docker-compose exec app php artisan migrate
docker-compose exec app php artisan config:clear
docker-compose restartОшибка 401 (не авторизован): Войдите через страницу логина. Проверьте что токен сохранен в localStorage (DevTools → Application → Local Storage).
Database file at path [laravel] does not exist:
Проверьте .env - должно быть DB_CONNECTION=pgsql и правильные данные для подключения к PostgreSQL.
Docker не запускается:
docker-compose ps # проверить статус
docker-compose up -d # запустить
docker-compose logs -f # посмотреть логиVite не запускается:
rm -rf node_modules package-lock.json
npm install
npm run devCORS ошибки:
Убедитесь что запущен npm run dev и в vite.config.js настроен прокси на http://localhost:8080.
Примеры запросов через curl:
# Регистрация
curl -X POST http://localhost:8080/api/register \
-H "Content-Type: application/json" \
-d '{"name":"User","email":"user@test.com","password":"password"}'
# Логин
curl -X POST http://localhost:8080/api/login \
-H "Content-Type: application/json" \
-d '{"email":"user@test.com","password":"password"}'
# Получить клиентов (нужен токен)
curl http://localhost:8080/api/clients \
-H "Authorization: Bearer YOUR_TOKEN"
# Добавить клиента
curl -X POST http://localhost:8080/api/clients \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"name":"Company","email":"test@test.com","phone":"123","notes":"note"}'- Laravel 12
- Vue.js 3 + Vuetify 3
- PostgreSQL 15
- Laravel Sanctum
- Vite, Docker