v1 milestone — სტრუქტურულად დასრულებული

Srulad.com v2

Laravel 6 + PHP 7.4 → Laravel 11 + PHP 8.3. ქართული კინო-სერვისის სრული ხელახლა-პლატფორმირება, SEO-ის byte-for-byte შენარჩუნებით.

73K+
მომხმარებელი
21K+
ფილმი/სერიალი
17.7M
ნახვა
~1GB
MySQL DB
591
commit-ი

პროექტის პროგრესი

9 ფაზიდან 9 სტრუქტურულად დასრულებული • runtime UAT მიმდინარეობს • 56 პლანი / 48 დასრულებული
86%
v1 milestone • last update: 2026-04-25

ფაზების რუქა

Phase 0 → Phase 9 • კონტრაქტი: ყოველი ფაზა დამოკიდებულია წინაზე • Schema-before-code hard gate
0
Secrets Hygiene + Foundation
gitleaks, .gitignore, Laravel 11 scaffold, CI, timezone baseline
დასრულებული
1
Data Foundation + Transform
Schema, pivots, MyISAM→InnoDB, views aggregate, dry-run on prod-dump (HARD GATE)
დასრულებული
2
Admin Panel (Filament 3)
Resources, RelationManagers, Widgets, Observer-based cache invalidation
დასრულებული
3
Public Site + SEO Lockdown
Byte-exact legacy routes, JW Player + GeoIP, Livewire, sitemaps, RSS, URL-parity test
დასრულებული
4
Auth + Social + Points + Notifications
Fortify headless, Socialite 5 provider-map, profile/favorites/follows/recommends
დასრულებული
5
Chat (Reverb)
Reverb + channel auth + Livewire Echo + presence tracking + 200-VU load test
დასრულებული
6
Imports, Crons, API
IMDB/imovies imports, Horizon, Sanctum (BasicAuth replaced), loginId removed
დასრულებული
6.1
Optimization Pack (SEO + UX)
WebP/AVIF responsive, Cloudflare Cache-Tag, OG images, FULLTEXT autocomplete, WAF
დასრულებული
6.2
Content Federation (Parser Merge)
19k parser titles → catalog (ge.movie + mykadri + gioggg + croconet + animax) • +13k movies
დასრულებული
6.3
Cover/Poster Local Download
99.1% cover+poster rows ლოკალურ FS-ზე • 37,695 ფაილი / 5.6 GB • TMDB fallback
დასრულებული
7
Hardening + Observability
Security review, Form Requests, 2× RPS load test, Sentry/Telescope/Horizon, shadow week
დასრულებული
7.1
Perf Hardening — Query + Cache
N+1 fixes, MovieFilter result cache 15s, search/autocomplete cache, ~3× capacity
დასრულებული
8
Cutover
Dress rehearsal, maintenance-window cutover, GSC 404 sweep, view-count delta audit, rollback
დასრულებული
9
Watch Party — Reverb-synchronized group viewing
Google-Meet-style invite link • host-authority sync • emoji reactions • ephemeral chat • 20 participants
დასრულებული

მთავარი მიღწევები

ის, რაც სცდება ფორმალურ "ფაზა შესრულდა" ჩამონათვალს
SEO PARITY

URL-ების byte-for-byte შენარჩუნება

RouteManifest.php = single source of truth. ყველა legacy URL-ის pattern დაცული, ავტომატური URL-parity test 30-დღიანი production access-log-ით.

+13,000 ფილმი

Phase 6.2 Content Federation

5 პარალელური წყარო (ge.movie, mykadri, gioggg, croconet, animax) გაერთიანდა Srulad-ის კატალოგში IMDB-first matching-ით. 7.9k → ~21k სათაური.

CDN-LESS

99.1% cover/poster ლოკალურად

17,660 cover + 10,376 poster ფაილი remote hotlink-დან public/assets/uploads/posters/-ში. 37,695 ფაილი / 5.6 GB. Cloudflare Worker-ით challenge host-ების შემოვლა.

REVERB

Watch Party — sync ჯგუფური ყურება

Reverb presence + private channels • host-authority sync (play/pause/seek + 2s tick whispers) • Plyr-ზე emoji reactions overlay • ეფემერული chat პანელი • Redis state cache + 15s heartbeat.

~3× CAPACITY

Phase 7.1 Perf Hardening

MovieFilterService 15s result cache + Observer-driven invalidation. Search/autocomplete 60s/120s cache. Single JOIN+GROUP BY genre query. ChatService unread-count single LEFT JOIN+SUM.

CF WORKER

HLS Universal Proxy

Multi-account Cloudflare Worker fan-out (acct 1-3) referer spoofing-ისთვის ყველა CDN-ზე. ftpsrulad.online + ftpsrulad.net + auto-failover health-check cron-ით.

ტექნოლოგიური სტეკი

Tailwind 3 (NOT 4 — Filament 3 incompat) • Reverb · Sanctum · Horizon · Pest 3.7 · Larastan L4
🐘
PHP
8.3
🚀
Laravel
11.47+
🎨
Filament
3.3.x
Livewire
3.5.12+
🌬️
Tailwind
3.4.x
🐬
MySQL
8.4 LTS
📡
Redis
7.2-alpine
🔄
Reverb
1.10+
⚙️
Vite
5.4
🔐
Socialite
5.21+
🎬
hls.js
1.5.17
📊
Horizon
5.22

არქიტექტურა

Service-layered modular monolith • Clean cutover (NOT dual-write) • Observer-only cache invalidation
┌─ Edge & HTTP ──────────────────────────────────────────────┐ Nginx → bootstrap/app.php → Blade+Tailwind+Livewire └─ Filament panels (admin) └────────────────────────────────────────────────────────────┘┌─ Service Layer (app/Services/) ────────────────────────────┐ Movie · Streaming · User · Social · Chat Seo · Geo · Import · Analytics (controllers/Resources are THIN — call services only) └────────────────────────────────────────────────────────────┘┌─ Models + Observers ───────────────────────────────────────┐ Eloquent direct (no repository pattern) Observers flush Redis cache tags on save/delete └────────────────────────────────────────────────────────────┘┌─ Storage Layer ────────────────────────────────────────────┐ Redis: tag-scoped (movie · movie.{id} · home · sitemap) MySQL 8: OLTP + views_daily/monthly + notifications_arch └────────────────────────────────────────────────────────────┘ ┌─ Side Channels ────────────────────────────────────────────┐ Horizon queue · Reverb WebSocket · Scheduler Cloudflare Workers: HLS proxy · cover-image proxy └────────────────────────────────────────────────────────────┘

Core Value

ერთადერთი ინვარიანტი, რომელსაც ემორჩილება ყველა სხვა გადაწყვეტილება
SEO IS THE BUSINESS

ყველა public SEO URL და sitemap output უნდა გადაურჩეს მიგრაციას byte-for-byte, ნულოვანი data loss-ით.

SEO traffic = პრიმარული acquisition channel. ნებისმიერი drift => silent de-indexation. ეს არ არის nice-to-have. ყველა გადაწყვეტილება, schema, route, sitemap — ამას ემორჩილება.