Interní systém pro digitalizaci a evidenci knih postavený na Laravel 11, Filament PHP v3 a Google Cloud Vision AI.
- OCR zpracování: Automatické vytěžování textu z fotek pomocí Google Cloud Vision.
- Integrace knihoven: Automatické doplňování metadat (název, autor, vydavatel, rok) z OpenLibrary, Google Books a Národní knihovny ČR (SRU/MARC21).
- Split-screen layout: Optimalizované rozhraní pro rychlou kontrolu dat s fixním panelem fotografií.
- Asynchronní zpracování: OCR a hledání v knihovnách probíhá na pozadí pomocí front (Queues).
Pokud nasazujete na hosting bez přístupu k terminálu (CLI), postupujte podle těchto kroků:
Před nahráním na server připravte projekt lokálně (ve vašem prostředí Sail/Docker):
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cachePoté nahrajte celou složku projektu včetně adresáře vendor na FTP.
Na serveru upravte soubor .env:
APP_ENV=productionAPP_DEBUG=falseQUEUE_CONNECTION=database(pokud máte Cron) nebosync(pokud Cron nemáte).GOOGLE_APPLICATION_CREDENTIALS=google-auth.json(ujistěte se, že soubor je v kořenovém adresáři).GOOGLE_BOOKS_API_KEY=vase_api_key
Pro správnou funkčnost OCR a vyhledávání v Google Books je nutné nastavit následující:
- V Google Cloud Console vytvořte projekt.
- Povolte Cloud Vision API.
- V sekci "IAM & Admin" -> "Service Accounts" vytvořte nový servisní účet.
- Vygenerujte pro tento účet klíč ve formátu JSON.
- Tento soubor přejmenujte na
google-auth.jsona nahrajte jej do kořenového adresáře projektu. - Cesta k němu musí odpovídat proměnné
GOOGLE_APPLICATION_CREDENTIALSv.env.
- V Google Cloud Console (ve stejném nebo jiném projektu) povolte Books API.
- V sekci "APIs & Services" -> "Credentials" vytvořte API Key.
- Tento klíč vložte do souboru
.envk proměnnéGOOGLE_BOOKS_API_KEY.
Na sdíleném hostingu nemůžete spustit trvalý proces php artisan queue:work. Vyřešte to pomocí Cronu:
Nastavte Cron úlohu každou minutu:
* * * * * /usr/local/bin/php /cesta/k/projektu/artisan schedule:run >> /dev/null 2>&1
V souboru routes/console.php zajistěte spouštění workeru:
use Illuminate\Support\Facades\Schedule;
Schedule::command('queue:work --stop-when-empty')->everyMinute();Protože nemáte terminál, můžete tyto příkazy spustit dočasným přidáním cest do routes/web.php:
// Spuštění migrací
Route::get('/init-migrate', function () {
Artisan::call('migrate', ['--force' => true]);
return "Migrace hotovy!";
});
// Vytvoření storage linku
Route::get('/init-storage', function () {
Artisan::call('storage:link');
return "Storage link vytvořen!";
});Po navštívení těchto adres v prohlížeči tyto routy z bezpečnostních důvodů ihned odstraňte.
Pro maximální bezpečnost doporučujeme nahrát obsah složky public do public_html (nebo ekvivalentu vašeho hostingu) a zbytek projektu o úroveň výš. Nezapomeňte pak upravit cesty v index.php.
Na produkci je důležité mít nacachovanou konfiguraci a routy:
php artisan config:cachephp artisan route:cachephp artisan view:cachephp artisan filament:cache-components(pro Filament v3)
- Nikdy nenechávejte
APP_DEBUG=truena produkčním serveru. - Ujistěte se, že soubor
.envnení přístupný z prohlížeče. - Pravidelně zálohujte databázi i složku
storage/app/public.
- Spuštění vývojového prostředí:
./vendor/bin/sail up - Spuštění testů:
./vendor/bin/sail test - Vytvoření administrátorského účtu:
./vendor/bin/sail artisan make:filament-user
V produkčním prostředí bez Sailu použijte standardní: php artisan make:filament-user (pokud máte přístup k terminálu).