One place to manage the website
The team has one panel for content, wines, brands, SEO operations, and website assistant management.
{ Project / Live }
Modernized Teliani Valley with Laravel 13, PHP 8.5, Docker hosting, and a bilingual Filament control panel for wines, content, SEO, and AI operations.
{ At a glance }
{ Business outcomes }
The team has one panel for content, wines, brands, SEO operations, and website assistant management.
Migration tools and compatibility handling preserve content and media within the modernized platform.
The application runs on Laravel 13 and PHP 8.5, with a managed Docker deployment for ongoing maintenance.
{ Context }
Teliani Valley’s website ran on Laravel 5 and an aging hosting environment. The application, PHP runtime, dependencies, and deployment setup needed modernization together. At the same time, the winery needed structured Georgian and English management for wines, collections, grapes, regions, awards, news, and distributor information. The project had to address the public experience and the operational systems behind it.
{ Role & implementation }
I led the technical modernization across the application and its hosting environment. My work covered Laravel and PHP migration, Docker deployment, the bilingual catalogue and CMS, content imports, media delivery, SEO integrations, and AI assistant architecture. Delivery included production cutover and access handover for the client’s administration panel, repository, and hosting management environment.
{ The solution }
I organized the platform around a public website and a connected Filament operations panel. The public site presents the winery, its products, brands, news, visitor information, and distribution network in Georgian and English. The panel gives the team forms, tables, imports, previews, and dashboards for routine content, catalogue, SEO, and assistant management. Server-rendered Blade templates and scoped JavaScript keep the public frontend straightforward to maintain.
{ Technical decisions }
The control panel is the team’s day-to-day operating interface, while application services make integrations and business rules reusable. Background jobs handle longer-running tasks, and scheduled commands coordinate publishing, synchronization, and maintenance. Content and assistant data remain in independent stores, connected through application services rather than cross-database joins. This keeps publishing, deployment, and provider dependencies explicit.
{ Engineering detail }
I migrated the application to Laravel 13 and PHP 8.5, covering routes, rendering, content structures, integrations, media handling, and operational services. Controllers validate and delegate; services hold reusable logic; queued jobs and scheduled commands handle work that should not block a page request. Runtime requirements and dependency auditing are part of ongoing maintenance.
{ Engineering detail }
The website moved to a Hetzner EX44 environment managed through Coolify. Docker services separate nginx, PHP-FPM, migrations, normal queue workers, dedicated AI workers, the scheduler, and the AI database. Persistent storage supports public media, private knowledge files, and database data. Migrations run before the application and workers start, with queue separation and locking made explicit.
{ Engineering detail }
The move coordinated DNS, domain-based proxy routing, TLS, and the application response. The supplied project history records the DNS change on October 20, 2026 and the new site operating on the production domain by October 21. The handover covered the complete domain-to-application path rather than relying on a server-IP response.
{ Engineering detail }
Shared product facts such as alcohol percentage, bottle volume, type, and images are stored once. Names, descriptions, food pairings, and metadata live in translation records. The panel manages wines, collections, grapes, regions, awards, news, distribution offices, and administrator language preferences. News supports drafts, scheduling, publication, and previews; contact submissions are stored for review.
{ Engineering detail }
Migration tools support the existing catalogue, awards, and Georgian news. Filament CSV importers provide mapping, templates, validation feedback, and history. Spatie Media Library organizes uploads and conversions; workers generate thumbnails and WebP assets, with Bunny CDN serving configured public media. Legacy-image fallbacks, dry-run backfills, and redirects for supported slug changes support continuity during editing and migration.
{ Engineering detail }
The SEO Operations Center connects Search Console, Analytics, DataForSEO, Chrome UX Report, and Lighthouse diagnostics. It brings technical issues, indexing, keywords, rankings, competitor gaps, backlinks, and AI-visibility monitoring into a prioritized operating view. Scheduled jobs collect data outside dashboard requests; historical snapshots and visible usage budgets help the team interpret findings and manage external API use.
{ Engineering detail }
The AI subsystem supports provider configuration, PDF and Markdown knowledge, response testing, conversation review, and unanswered questions. Its pipeline combines document chunking, embeddings, vector similarity, and PostgreSQL full-text search. Retrieval is scoped by agent, locale, active source version, and embedding profile. Dedicated workers handle ingestion and reindexing, while the previous active source remains available if a refresh fails.
{ Engineering detail }
The client received access to application administration, the source repository, and hosting management. The documented operating model identifies migrations, workers, scheduled jobs, storage, and provider configuration. The result is a platform the team can maintain after launch, with ongoing website collaboration described in the supplied project history.
{ Technology & architecture }
| Layer | Technology |
|---|---|
| Backend | Laravel 13 & PHP 8.5 |
| Control panel | Filament 5 & Livewire 4 |
| Public frontend | Blade, Tailwind CSS 4 & Vite 8 |
| CMS data | MySQL 8.4 |
| AI data & retrieval | PostgreSQL 16, pgvector & full-text search |
| Media | Spatie Media Library 11 & Bunny CDN |
| Infrastructure | Hetzner EX44, Coolify, Docker, nginx & PHP-FPM |
| Background work | Laravel queues, separate AI workers & scheduler |
| Quality controls | PHPUnit 12, Pint, Composer audit & CI container checks |
{ Deployment architecture }
Georgian and English Blade pages served through nginx and PHP-FPM.
Laravel services and Filament administration coordinate content, integrations, SEO, and the assistant.
MySQL holds catalogue data, translations, users, publishing records, imports, and SEO records.
PostgreSQL with pgvector holds knowledge, embeddings, conversations, and retrieval traces.
Separate ordinary workers, AI workers, and a scheduler process asynchronous workloads.
Persistent media and private knowledge storage support the application; configured public assets are delivered through Bunny CDN.
{ Security model }
The implementation notes describe encrypted server-side provider credentials, private knowledge storage, and retrieval boundaries. Private knowledge files are available to the application and workers without being mounted into public nginx. Contact submissions have validation, CSRF protection, a honeypot, and rate limits. These controls support the operating model; they are not an independent security certification or a guarantee of factual AI responses.
{ Delivered capabilities }
Teliani Valley gained a modernized public website and one control panel for publishing, catalogue updates, SEO operations, and assistant management. The application modernization and infrastructure move provide a coherent technical foundation for ongoing work. No performance, uptime, traffic, conversion, or time-saving improvement is claimed without measured before-and-after evidence.
{ Before & after }
| Starting point or requirement | Delivered capability |
|---|---|
| Legacy Laravel 5 application | Laravel 13 application running PHP 8.5. |
| Older hosting environment | Docker-based Hetzner deployment managed through Coolify. |
| Bilingual catalogue and brand information | Structured Georgian and English content, product, and translation management. |
| Content and media migration | Import tools, compatibility fallbacks, backfills, and optimized conversions. |
| Search operations | Scheduled reporting and prioritized technical and content issues in the SEO Center. |
| Website assistance | Knowledge ingestion, configurable public widget, response testing, and conversation review. |
| Technical handover | Client access to administration, source code, and hosting management. |
{ Scope }
Some detailed static-page sections remain in Blade templates; the panel does not claim full editing of every visual section. Automatic synchronization of structured CMS content into the knowledge base remains a future extension. Granular editor/SEO roles and universal exports are not claimed. Provider integrations depend on valid credentials, configuration, and available quota; storing contact submissions does not imply automatic email delivery.
{ Screens & walkthrough }




{ Today }
The project is completed and operational according to the supplied delivery history. The public site was accessible during the November 6, 2026 review, including English navigation, the wine catalogue, wine details, and the assistant launcher. Public screenshots document the visitor-facing site; the private CMS, SEO, AI, and infrastructure capabilities are described from the supplied implementation brief rather than a new authenticated audit.
{ Let’s build }