{{ $founderProfile?->name ?? $siteName }}
{{ $founderProfile?->position ?? 'Founder and CEO' }} - {{ $siteName }}
@extends('frontend.layouts.app')
@section('title', $title)
@section('description', $description)
@section('keywords', $keywords)
@section('load_webgl_hover', true)
@php
$settingsService = app(\App\Services\SettingsService::class);
$siteName = $settingsService->get('site_name', config('app.name'));
$siteDescription = $settingsService->get('site_description', 'Innovative IT solutions for modern organizations.');
$contactPhone = $settingsService->get('contact_phone', '+263 78 691 2342');
$contactPhones = collect(preg_split('/\s*(?:\/|,|;|\r\n|\r|\n)\s*/', (string) $contactPhone))
->map(fn ($phone) => trim($phone))
->filter()
->values();
$contactEmail = $settingsService->get('contact_email', config('mail.from.address'));
$assetPath = fn (string $path) => asset('frontend/' . ltrim($path, '/'));
$storedAsset = function (?string $path, string $fallback) use ($assetPath) {
if (!$path) {
return $assetPath($fallback);
}
$path = trim($path);
if (preg_match('/^(https?:)?\/\//i', $path) || str_starts_with($path, '/')) {
return $path;
}
if (str_starts_with($path, 'storage/')) {
return asset($path);
}
if (str_starts_with($path, 'settings/') || str_starts_with($path, 'uploads/')) {
return asset('storage/' . $path);
}
return $assetPath($path);
};
$homeImage = fn (?string $path) => $storedAsset($path, 'images/service/hm1-img01.webp');
$settingEnabled = fn (string $key, bool $default = true) => filter_var($settingsService->get($key, $default ? 'true' : 'false'), FILTER_VALIDATE_BOOLEAN);
$normaliseHref = fn (?string $href, string $fallback) => trim((string) $href) !== '' ? trim((string) $href) : $fallback;
$heroGeneratedImages = [
'engineers' => 'storage/uploads/generated/ndarama-hero-engineers.png',
'support' => 'storage/uploads/generated/ndarama-hero-support.png',
];
$homeHeroSlides = collect([
['index' => 1, 'fallback_image' => 'images/hero/hm1-bg01.webp', 'fallback_url' => route('frontend.about')],
['index' => 2, 'fallback_image' => $heroGeneratedImages['engineers'], 'fallback_url' => route('frontend.contact')],
['index' => 3, 'fallback_image' => $heroGeneratedImages['support'], 'fallback_url' => route('frontend.services.index')],
])->filter(fn ($slide) => $settingEnabled("home_hero_slide_{$slide['index']}_enabled", true))
->map(fn ($slide) => [
'number' => str_pad((string) $slide['index'], 2, '0', STR_PAD_LEFT),
'label' => $settingsService->get("home_hero_slide_{$slide['index']}_label", 'INNOVATIVE SOLUTIONS'),
'title' => $settingsService->get("home_hero_slide_{$slide['index']}_title", $slide['index'] === 1 ? 'Innovative IT' : ($slide['index'] === 2 ? 'Scalable Digital' : 'Reliable CMS')),
'accent' => $settingsService->get("home_hero_slide_{$slide['index']}_accent", $slide['index'] === 1 ? 'Business' : ($slide['index'] === 2 ? 'Solutions' : 'Platforms')),
'body' => $settingsService->get("home_hero_slide_{$slide['index']}_body") ?: $siteDescription,
'button_label' => $settingsService->get("home_hero_slide_{$slide['index']}_button_label", 'Discover More'),
'url' => $normaliseHref($settingsService->get("home_hero_slide_{$slide['index']}_button_url"), $slide['fallback_url']),
'image' => $storedAsset($settingsService->get("home_hero_slide_{$slide['index']}_image"), $slide['fallback_image']),
])->values();
if ($homeHeroSlides->isEmpty()) {
$homeHeroSlides = collect([[
'number' => '01',
'label' => 'INNOVATIVE SOLUTIONS',
'title' => 'Innovative IT',
'accent' => 'Business',
'body' => $siteDescription,
'button_label' => 'Discover More',
'url' => route('frontend.about'),
'image' => $assetPath('images/hero/hm1-bg01.webp'),
]]);
}
@endphp
@push('head')
@if($homeHeroSlides->isNotEmpty())
@endif
@endpush
@php
$partnerLogos = collect(range(1, 6))
->filter(fn ($index) => $settingEnabled("home_partner_{$index}_enabled", true))
->map(fn ($index) => [
'name' => $settingsService->get("home_partner_{$index}_name", "Partner {$index}"),
'url' => $normaliseHref($settingsService->get("home_partner_{$index}_url"), '#'),
'logo' => $storedAsset($settingsService->get("home_partner_{$index}_logo"), 'images/brands/' . str_pad((string) $index, 2, '0', STR_PAD_LEFT) . '.webp'),
])
->filter(fn ($partner) => !empty($partner['logo']))
->values();
if ($partnerLogos->isEmpty()) {
$partnerLogos = collect(['01', '02', '03', '04', '05', '06'])->map(fn ($brand) => [
'name' => "Partner {$brand}",
'url' => '#',
'logo' => $assetPath("images/brands/{$brand}.webp"),
]);
}
$generatedWebsiteImages = [
'collaboration' => 'storage/uploads/generated/ndarama-collaboration.png',
'engineer' => 'storage/uploads/generated/ndarama-engineer.png',
'support' => 'storage/uploads/generated/ndarama-support.png',
];
$themeArrow = <<<'HTML'
HTML;
$themeArrowWhite = <<<'HTML'
HTML;
$fallbackServices = collect([
['name' => 'Android and IOS Apps Designing', 'category' => 'Coding', 'description' => 'Scalable app experiences for teams, customers, and operations.', 'image' => 'images/service/hm1-img01.webp', 'url' => route('frontend.services.index')],
['name' => 'Digital Transformation and Automation', 'category' => 'Automation', 'description' => 'Connected workflows that reduce manual effort and unlock better visibility.', 'image' => 'images/service/hm1-img02.webp', 'url' => route('frontend.services.index')],
['name' => 'Web and Mobile UI/UX Designing', 'category' => 'Designing', 'description' => 'Clean product interfaces shaped around real users and business goals.', 'image' => 'images/service/hm1-img03.webp', 'url' => route('frontend.services.index')],
]);
$serviceItems = $featuredServices->count()
? $featuredServices->take(3)->map(fn ($service) => [
'name' => $service->name,
'category' => optional($service->category)->name ?? 'Service',
'description' => $service->short_description ?: \Illuminate\Support\Str::limit(strip_tags($service->description), 150),
'image' => $service->image ? 'storage/' . $service->image : null,
'url' => route('frontend.services.show', $service),
'features' => $service->features_list,
])
: $fallbackServices;
$fallbackProjects = collect([
['title' => 'Webx - Modern Website', 'tag' => 'Development', 'description' => 'A modern web platform with clear journeys and measurable outcomes.', 'image' => 'images/project/hm1-img01.webp', 'url' => route('frontend.projects.index')],
['title' => 'Business Strategy', 'tag' => 'Business', 'description' => 'Structured digital strategy for better teams, tools, and decisions.', 'image' => 'images/project/hm1-img02.webp', 'url' => route('frontend.projects.index')],
['title' => '3D Product Designing', 'tag' => 'Designing', 'description' => 'Product presentation and design systems for stronger brand experiences.', 'image' => 'images/project/hm1-img03.webp', 'url' => route('frontend.projects.index')],
['title' => 'Business Development', 'tag' => 'Development', 'description' => 'Growth-focused systems for operations, sales, and service delivery.', 'image' => 'images/project/hm1-img04.webp', 'url' => route('frontend.projects.index')],
]);
$projectItems = $featuredProjects->count()
? $featuredProjects->take(4)->map(fn ($project, $index) => [
'title' => $project->title,
'tag' => optional($project->department)->name ?? $project->status_label,
'description' => \Illuminate\Support\Str::limit(strip_tags($project->description ?: $project->content), 110),
'image' => $project->featured_image ? 'storage/' . $project->featured_image : 'images/project/hm1-img0' . (($index % 4) + 1) . '.webp',
'url' => route('frontend.projects.show', $project->slug),
])
: $fallbackProjects;
$fallbackTeam = collect([
['name' => 'Ndarama Engineering Team', 'position' => 'Software Delivery', 'image' => $generatedWebsiteImages['engineer'], 'url' => route('frontend.teams.index')],
['name' => 'Ndarama Product Team', 'position' => 'Digital Solutions', 'image' => $generatedWebsiteImages['collaboration'], 'url' => route('frontend.teams.index')],
['name' => 'Ndarama Support Team', 'position' => 'Client Success', 'image' => $generatedWebsiteImages['support'], 'url' => route('frontend.teams.index')],
]);
$teamItems = $featuredTeams->count()
? $featuredTeams->take(3)->map(fn ($member, $index) => [
'name' => $member->name,
'position' => $member->position ?: optional($member->department)->name ?: 'Team Member',
'image' => $member->image ? 'storage/' . $member->image : 'images/team/hm1-img0' . (($index % 3) + 1) . '.webp',
'url' => route('frontend.teams.show', $member),
'linkedin' => $member->linkedin,
'twitter' => $member->twitter,
])
: $fallbackTeam;
$founderProfile = $featuredTeams->first(function ($member) {
$position = strtolower((string) $member->position);
return str_contains($position, 'chief executive')
|| str_contains($position, 'ceo')
|| str_contains($position, 'founder');
}) ?: $featuredTeams->first();
$fallbackNews = collect([
['title' => 'Top 10 Most Popular Tools For Marketing', 'date' => '16 Aug, 2025', 'image' => 'images/blog/blog01.webp', 'url' => route('frontend.news.index')],
['title' => 'Business Growing Tips for Sales Globally', 'date' => '17 Aug, 2025', 'image' => 'images/blog/blog02.webp', 'url' => route('frontend.news.index')],
['title' => 'Installation Sales Navigator Extension on Chrome', 'date' => '29 Aug, 2025', 'image' => 'images/blog/blog03.webp', 'url' => route('frontend.news.index')],
]);
$newsItems = $featuredNews->count()
? $featuredNews->take(3)->map(fn ($news, $index) => [
'title' => $news->title,
'date' => optional($news->published_at)->format('d M, Y'),
'image' => $news->featured_image ? 'storage/' . $news->featured_image : 'images/blog/blog0' . (($index % 3) + 1) . '.webp',
'url' => route('frontend.news.show', $news->slug),
])
: $fallbackNews;
@endphp
@push('styles')
@endpush
@section('content')
{{-- Hero banner with slider content and primary CTA --}}
{{ $service['description'] }} {{ $founderProfile?->position ?? 'Founder and CEO' }} - {{ $siteName }} {{ $siteDescription }} {{ $service['description'] }} {{ $item['text'] }}![]()
{{ $service['name'] }}
Empowering Your Business with Innovative IT Solutions
{{ $founderProfile?->name ?? $siteName }}
Empowering Companies with Reliable
and Scalable IT Services{{ strtoupper($service['category']) }}
{{ $service['name'] }}
Proven Track Record of Driving Digital Transformation
{{ $item['title'] }}
{{ $step['text'] }}
 }})
 }})
Call us anytime
{{ $member['position'] }}
 }})
 }})
 }})
Organize daily tasks and content updates.
Join this PlanJoin this Plan }})
 }})