Небольшой блог: SPA на React (Vite) и REST API на Laravel. Фронтенд обращается к бэкенду через прокси Vite: /api → http://localhost:8000, префикс /api отбрасывается.
- Frontend: React 19, Vite 8, React Router 7, Axios, Tailwind CSS 4, react-icons.
- Backend: PHP 8.3, Laravel 13, Laravel Sanctum, MySQL/SQLite (через
.env), PHPUnit.
src/— React-приложение (components/,pages/,assets/).api/— Laravel:routes/,app/Http/Controllers/,app/Models/,database/migrations/.Dockerfile,compose.yaml— контейнеризация фронтенда.
Объявлены в api/routes/web.php:
| Метод | Путь | Контроллер |
|---|---|---|
| GET | /posts | PostController@index |
| POST | /posts | PostController@store |
| GET | /posts/{id} | PostController@show |
| GET | /posts/{id}/comments | CommentController@index |
В api/routes/api.php объявлен только GET /user (middleware auth:sanctum).
Backend:
cd api
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan serve # http://localhost:8000Frontend:
yarn install
yarn dev # Vite dev-сервер, проксирует /api → http://localhost:8000docker compose up --buildDockerfile устанавливает зависимости и запускает yarn dev. В compose.yaml порт опубликован как 9000:80, при этом контейнер слушает порт 5180 (значения не согласованы, см. Заметки).
cd api
php artisan testphpunit.xml использует SQLite в памяти. В репозитории только стандартные ExampleTest (Unit, Feature).
- API-роуты постов лежат в
routes/web.php, а не вroutes/api.php. - В
database/migrations/две миграции создают таблицуposts(2026_05_25_105757_...и2026_06_15_100418_...). PostControllerобъявляет толькоindexиshow, хотя роутPOST /postsссылается наstore.- Порты
Dockerfile(5180) иcompose.yaml(9000:80) не согласованы. .envне должен попадать в репозиторий (в.gitignore); реальные ключи в коде не хранятся.