din9xtr 6d721dba79 feat: add cron scheduling and update services
- Added go-crond library to Dockerfile for task scheduling
- Created schedule service in compose.yaml with go-crond
- Added cron configuration file: docker/cron/laravel
- Updated README.md
- Improved service configurations with health checks
- Switched to base frankenphp image
2026-02-08 00:15:35 +07:00
2026-02-06 23:26:56 +07:00
2026-02-06 23:26:56 +07:00
2026-02-06 23:26:56 +07:00

Тестовое задание

На хост машине

make help
make build
make install
make run # заполнит базу и запустит тесты
make bash # попасть в контейнер

URL https://localhost:8443

pgadmin http://localhost:8081

Маршруты в api.php

Route::post('/login', [AuthController::class, 'login']);

Route::middleware(['auth:sanctum'])->group(function () {
    Route::post('/logout', [AuthController::class, 'logout']);

    Route::prefix('tasks')->name('tasks.')->group(function () {
        Route::get('/', [TaskController::class, 'index'])->name('index');
        Route::post('/', [TaskController::class, 'store'])->name('store');
        Route::get('/{task}', [TaskController::class, 'show'])->name('show');
        Route::match(['put', 'patch'], '/{task}', [TaskController::class, 'update'])->name('update');
        Route::delete('/{task}', [TaskController::class, 'destroy'])->name('destroy');
    });
});

Комментарий:

Маршруты явно прописал, для наглядности

Настроил крон, воспользовался библеотекой https://github.com/webdevops/go-crond, показалось удобной

Не стал ставить редис для очередей, тк тестовое задание, в продакшене использовал https://laravel.com/docs/12.x/horizon

Жестко не стал базу ограничивать, сделал просто каст через php enum (статус таски)

Выбрал frankenphp пхп из-за простоты и любви

В тестах не рефреш датабейз трейт использовал, а транзакции, мне было удобнее просто

Description
Тестовое задание
Readme 203 KiB
Languages
PHP 52.7%
Blade 45.6%
Dockerfile 0.6%
Makefile 0.6%
JavaScript 0.3%
Other 0.2%