- PHP 70.3%
- TypeScript 25%
- JavaScript 3%
- Blade 0.9%
- CSS 0.5%
- Other 0.2%
* Části velkých souborů se skládaly v systémovém temp (mimo open_basedir FPM) → poslední část každého souboru nad 8 MB 500. Teď na disku local vedle částí; nezapisovatelné úložiště 507 s důvodem. * Klient: vše po částech, limity ze serveru (GET media/limity), při 413 menší části, opakování s odstupem, HTML stránky chyb nejsou úspěch, chybějící části se dopošlou, české hlášky místo tichého selhání. * Telefon: výběr více souborů i celé složky, „Uložit jako album" s názvem, průběh n z N, pauza, na pozadí, seznam chyb se „Zkusit znovu"; hotové soubory jdou do alba hned (ZarazeniDoAlba). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .github/workflows | ||
| android-twa | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docs | ||
| lang | ||
| public | ||
| release-assets/android | ||
| resources | ||
| routes | ||
| scripts | ||
| storage/framework | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| ARCHITECTURE.md | ||
| artisan | ||
| AUDIT_2026_07_11.md | ||
| BACKUP_AND_RESTORE.md | ||
| composer.json | ||
| composer.lock | ||
| deploy.sh | ||
| DEPLOYMENT_ISPCONFIG.md | ||
| GOOGLE_OAUTH_SETUP.md | ||
| INOVACE_35.md | ||
| INTEGRACE_POSKYTOVATELE.md | ||
| NAVRH_20_FUNKCI_2026_07_11.md | ||
| NAVRH_60_FUNKCI_2026_07_11.md | ||
| NAVRH_120_DALSICH_FUNKCI.md | ||
| OMEZENI_EXTERNI_INTEGRACE.md | ||
| package-lock.json | ||
| package.json | ||
| phpunit.xml | ||
| PLAN_TODO_FILMY_KINO_2026_07_15.md | ||
| PREDANI_AGENTOVI.md | ||
| README.md | ||
| REVOLUT_SPOLECNY_UCET_2026_07_15.md | ||
| ROADMAP_10_FAZI.md | ||
| ROADMAP_DOKONCENI_SYSTEMU_2026_07_12.md | ||
| SECURITY.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
Stanektech Gallery
Soukroma foto/video galerie pro Adriana a Makinku na gallery.stanektech.cz. Plnohodnotna ne-AI alternativa k Immich/Google Photos.
Rychly start
composer install
npm install
cp .env.example .env
php artisan key:generate
# Nastavte DB credentials v .env
php artisan migrate --seed
npm run build
php artisan serve
Klic vlastnosti
- Neomezene vnorena alba (closure table + materialized path)
- Google Drive jako dlouhodobe uloziste originalu (OAuth 2.0)
- Lokalni nahled — galerie se nacita bez Drive API requestu
- Resumable upload (chunked upload do Laravelu + na Drive)
- PWA s offline podporou a IndexedDB upload frontou
- Timeline s virtualnim scrollingem a memories
- Mapa (GPS + Leaflet)
- Klasicke vyhledavani (MySQL FULLTEXT) — zadne AI
- Hierarchicke tagy, rucni osoby, mista
- Stacks, duplicity (SHA-256 + perceptual hash), XMP sidecary
- Sdilena alba, verejne linky, guest upload
- Kos, archiv, vzpominky, nedestruktivni editace
- Admin dashboard, health endpointy, audit log
- gallery:doctor — komplexni diagnosticky prikaz
Bez AI
Zadne AI, ML, embeddings, vektorove databaze, rozpoznavani obliceju.
Stack
Backend: Laravel (PHP 8.4.1+), MySQL/MariaDB, database queue Frontend: React 19, TypeScript, Inertia.js, Tailwind CSS, Vite, PWA Drive: Google Drive API v3, OAuth 2.0 Authorization Code Flow Media: Intervention Image, FFmpeg, ExifTool Server: ISPConfig, Apache, PHP-FPM 8.4, systemd, cron
PHP 8.4.1 je skutečné minimum — vynucuje ho bootstrap/preflight.php a
odpovídají mu balíčky zamčené v composer.lock. composer.json se schválně
nemění na "php": "^8.4": deploy.sh při každé změně composer.json
spouští composer install a tam, kde composer na serveru chybí, se nasazení
zastaví (v režimu údržby). Cronová řádka i PHP-FPM pool proto musí mířit na absolutní
binárku PHP 8.4, ne na systémové php — deploy.sh to samo najde a nasazení
mezitím drží aplikaci v režimu údržby (artisan down před git pull,
artisan up až po reloadu PHP-FPM).