{ Project / Live }

Teliani Valley- Website & Platform Modernization

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 }

Project overview.

Client
Teliani Valley
Role
Technical architecture, Laravel migration, full-stack development, infrastructure & technical handover
Status
Live
Discipline
Websites, Applications, Infrastructure, Integrations
Visit Teliani Valley

{ Business outcomes }

What this makes possible.

One place to manage the website

The team has one panel for content, wines, brands, SEO operations, and website assistant management.

Existing content carried forward

Migration tools and compatibility handling preserve content and media within the modernized platform.

A current technical foundation

The application runs on Laravel 13 and PHP 8.5, with a managed Docker deployment for ongoing maintenance.

{ Context }

The problem.

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 }

My contribution.

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 }

What I built.

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 }

Why this approach.

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 }

From Laravel 5 to a current application foundation

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 }

Hosting and deployment as an operating system

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 }

Validating the production cutover

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 }

A bilingual CMS shaped around winery content

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 }

Preserving content and improving media workflows

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 }

Making SEO part of everyday operation

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 }

An assistant with knowledge and management controls

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 }

Delivery that the client can own

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 }

The implementation stack.

LayerTechnology
BackendLaravel 13 & PHP 8.5
Control panelFilament 5 & Livewire 4
Public frontendBlade, Tailwind CSS 4 & Vite 8
CMS dataMySQL 8.4
AI data & retrievalPostgreSQL 16, pgvector & full-text search
MediaSpatie Media Library 11 & Bunny CDN
InfrastructureHetzner EX44, Coolify, Docker, nginx & PHP-FPM
Background workLaravel queues, separate AI workers & scheduler
Quality controlsPHPUnit 12, Pint, Composer audit & CI container checks

{ Deployment architecture }

How the platform fits together.

//01

Public website

Georgian and English Blade pages served through nginx and PHP-FPM.

//02

Application & control panel

Laravel services and Filament administration coordinate content, integrations, SEO, and the assistant.

//03

CMS database

MySQL holds catalogue data, translations, users, publishing records, imports, and SEO records.

//04

AI database

PostgreSQL with pgvector holds knowledge, embeddings, conversations, and retrieval traces.

//05

Background services

Separate ordinary workers, AI workers, and a scheduler process asynchronous workloads.

//06

Storage & delivery

Persistent media and private knowledge storage support the application; configured public assets are delivered through Bunny CDN.

{ Security model }

Keep the trust boundary clear.

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 }

What changed.

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 }

From the starting point
to the delivered platform.

Starting point or requirementDelivered capability
Legacy Laravel 5 applicationLaravel 13 application running PHP 8.5.
Older hosting environmentDocker-based Hetzner deployment managed through Coolify.
Bilingual catalogue and brand informationStructured Georgian and English content, product, and translation management.
Content and media migrationImport tools, compatibility fallbacks, backfills, and optimized conversions.
Search operationsScheduled reporting and prioritized technical and content issues in the SEO Center.
Website assistanceKnowledge ingestion, configurable public widget, response testing, and conversation review.
Technical handoverClient access to administration, source code, and hosting management.

{ Scope }

Built for this client’s setup.

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 }

The experience.

Teliani Valley English homepage with vineyard hero
English homepage captured from the live public website.
Teliani Valley wine catalogue and product filters
Live catalogue showing product types, brands, and wines.
Tsinandali product page with grape, region, and product information
Public wine-detail page with structured product information.
Mobile Teliani Valley homepage showing wines and news
Mobile viewport capture of the public website’s featured wines and news.

{ Today }

Current status.

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 }

Have a legacy Laravel website that needs a stronger technical foundation?

Discuss a modernization project
Back to work