Files
Wdipl-react/pages/MobileAppDevelopment.tsx

762 lines
30 KiB
TypeScript
Raw Normal View History

2025-07-11 16:54:37 +05:30
import { motion } from "framer-motion";
import {
Apple,
Award,
Bolt,
BookOpen,
2025-07-17 13:28:29 +05:30
Brain,
Building,
Calendar,
2025-07-11 16:54:37 +05:30
DollarSign,
Eye,
2025-07-17 13:28:29 +05:30
Globe, Layers,
2025-07-11 16:54:37 +05:30
Play,
Rocket,
Settings,
Shield,
ShieldCheck,
ShoppingCart,
Smartphone,
Stethoscope,
Truck,
UserPlus,
Watch,
Zap
} from "lucide-react";
2025-07-17 13:28:29 +05:30
import React from "react";
2025-07-11 16:54:37 +05:30
import { navigateTo } from "../App";
import { FAQSection } from "../components/FAQSection";
import { Footer } from "../components/Footer";
import { Navigation } from "../components/Navigation";
import { ProcessSection } from "../components/ProcessSection";
import { Badge } from "../components/ui/badge";
import { Button } from "../components/ui/button";
import { Card, CardContent } from "../components/ui/card";
import { ShimmerButton } from "../components/ui/shimmer-button";
2025-07-17 13:50:08 +05:30
import heroMockupImage from '../public/images/mobile-app-banner.webp';
2025-07-11 16:54:37 +05:30
2025-07-17 13:28:29 +05:30
// Enhanced Hero Section - NEW IMAGE WITH COMPREHENSIVE CSS REQUIREMENTS
2025-07-11 16:54:37 +05:30
const HeroWithCTA = () => {
return (
<section className="relative py-20 overflow-hidden bg-black">
2025-07-17 13:28:29 +05:30
<div className="container mx-auto px-6 lg:px-8 max-w-7xl">
<div className="grid lg:grid-cols-2 gap-8 lg:gap-16 items-center min-h-[90vh]">
2025-07-11 16:54:37 +05:30
<motion.div
initial={{ opacity: 0, x: -50 }}
animate={{ opacity: 1, x: 0 }}
transition={{ duration: 0.8 }}
2025-07-17 13:28:29 +05:30
className="space-y-8 z-10"
2025-07-11 16:54:37 +05:30
>
{/* Mobile App Development Label */}
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.6 }}
>
2025-07-17 13:28:29 +05:30
<div className="inline-flex items-center gap-2 px-4 py-2 bg-gradient-to-r from-[#E5195E]/20 to-purple-500/20 border border-[#E5195E]/30 rounded-full">
<Smartphone className="w-4 h-4 text-[#E5195E]" />
<span className="text-white/90 text-sm font-medium">Mobile App Development</span>
</div>
2025-07-11 16:54:37 +05:30
</motion.div>
2025-07-17 13:28:29 +05:30
{/* Main Heading */}
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.6, delay: 0.1 }}
className="space-y-6"
>
<h1 className="text-4xl md:text-5xl lg:text-6xl font-semibold leading-tight">
<span className="text-white">Expert </span>
<span className="text-[#E5195E]">Mobile App Development</span>
<span className="text-white"> Services</span>
2025-07-11 16:54:37 +05:30
</h1>
<p className="text-lg text-gray-300 leading-relaxed max-w-lg">
Build secure, scalable, high-performance apps for iOS, Android, or cross-platform fast.
</p>
2025-07-17 13:28:29 +05:30
</motion.div>
{/* BULLET POINTS REMOVED - Content flows directly to CTAs */}
2025-07-11 16:54:37 +05:30
2025-07-17 13:28:29 +05:30
{/* CTAs - STANDARDIZED BUTTON HEIGHTS WITH IMPROVED SPACING */}
2025-07-11 16:54:37 +05:30
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
2025-07-17 13:28:29 +05:30
transition={{ duration: 0.8, delay: 0.2 }}
className="flex flex-col sm:flex-row gap-4 pt-4"
2025-07-11 16:54:37 +05:30
>
2025-07-17 13:28:29 +05:30
<ShimmerButton
className="h-14 px-8 text-lg font-medium rounded-lg shadow-lg hover:shadow-xl transition-all duration-300"
onClick={() => navigateTo('/start-a-project')}
>
2025-07-11 16:54:37 +05:30
<div className="inline-flex items-center gap-2">
2025-07-17 13:28:29 +05:30
<Calendar className="w-5 h-5 flex-shrink-0" />
2025-07-11 16:54:37 +05:30
<span>Book a Discovery Call</span>
</div>
</ShimmerButton>
<Button
variant="secondary"
2025-07-17 13:28:29 +05:30
className="h-14 px-8 text-lg font-medium rounded-lg bg-white/10 hover:bg-white/20 text-white border-white/20 hover:border-white/30 shadow-lg hover:shadow-xl transition-all duration-300"
2025-07-11 16:54:37 +05:30
onClick={() => navigateTo('/case-studies')}
>
2025-07-17 13:28:29 +05:30
<Eye className="w-5 h-5 flex-shrink-0" />
2025-07-11 16:54:37 +05:30
<span>View our work</span>
</Button>
</motion.div>
</motion.div>
2025-07-17 13:28:29 +05:30
{/* Right side with hero image - COMPREHENSIVE CSS IMPLEMENTATION */}
2025-07-11 16:54:37 +05:30
<motion.div
initial={{ opacity: 0, x: 50 }}
animate={{ opacity: 1, x: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
2025-07-17 13:28:29 +05:30
className="relative flex items-center justify-center order-first lg:order-last"
2025-07-11 16:54:37 +05:30
>
2025-07-17 13:28:29 +05:30
{/* Image Container - FOLLOWING ALL COMPREHENSIVE CSS REQUIREMENTS */}
<div
className="relative w-full h-[450px] sm:h-[550px] md:h-[650px] lg:h-[700px] max-w-full"
style={{
position: 'relative',
overflow: 'hidden'
}}
>
{/* Hero Image with comprehensive CSS styling */}
<img
src={heroMockupImage}
alt="Mobile App Development Services - Fashion, Social, and Fitness Apps"
className="block transition-all duration-300 hover:scale-105"
style={{
width: '100%',
height: '100%',
objectFit: 'contain',
objectPosition: 'center',
maxWidth: '100%',
display: 'block'
}}
/>
2025-07-11 16:54:37 +05:30
2025-07-17 13:28:29 +05:30
{/* Alternative background method for enhanced browser support */}
<div
className="absolute inset-0 opacity-0 pointer-events-none"
style={{
backgroundImage: `url(${heroMockupImage})`,
backgroundSize: 'contain',
backgroundPosition: 'center',
backgroundRepeat: 'no-repeat'
}}
/>
2025-07-11 16:54:37 +05:30
</div>
</motion.div>
</div>
</div>
</section>
);
};
// Enhanced Horizontal Tag Scroller with Marquee Animation
const HorizontalTagScroller = () => {
const industries = [
{ name: "FinTech", icon: DollarSign, color: "text-green-400" },
{ name: "HealthTech", icon: Stethoscope, color: "text-red-400" },
{ name: "EdTech", icon: BookOpen, color: "text-blue-400" },
{ name: "eCommerce", icon: ShoppingCart, color: "text-orange-400" },
{ name: "OTT & Streaming", icon: Play, color: "text-purple-400" },
{ name: "Logistics", icon: Truck, color: "text-yellow-400" },
{ name: "On-Demand Services", icon: Bolt, color: "text-cyan-400" }
];
return (
<section className="py-32 bg-background relative overflow-hidden">
{/* Add subtle decorative elements */}
<div className="absolute top-0 left-0 w-full h-full pointer-events-none">
<div className="absolute top-20 left-10 w-32 h-32 bg-accent/5 rounded-full blur-2xl"></div>
<div className="absolute bottom-20 right-10 w-40 h-40 bg-blue-500/5 rounded-full blur-2xl"></div>
</div>
<div className="container mx-auto px-6 lg:px-8 relative z-10">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
viewport={{ once: true }}
className="text-center mb-20"
>
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-8">
Apps Built for High-Impact Industries
</h2>
<p className="text-2xl text-muted-foreground max-w-4xl mx-auto leading-relaxed">
Our mobile apps power industries where user trust, speed, and uptime are critical.
</p>
</motion.div>
<motion.div
initial={{ opacity: 0, y: 40 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
viewport={{ once: true }}
className="relative overflow-hidden"
>
{/* Gradient overlays for smooth fade effect */}
<div className="absolute left-0 top-0 bottom-0 w-20 bg-gradient-to-r from-card to-transparent z-10 pointer-events-none"></div>
<div className="absolute right-0 top-0 bottom-0 w-20 bg-gradient-to-l from-card to-transparent z-10 pointer-events-none"></div>
{/* Marquee container */}
<div className="flex animate-marquee hover:animate-marquee-paused">
{/* First set of industries */}
{industries.map((industry, index) => {
const IconComponent = industry.icon;
return (
<motion.div
key={`first-${industry.name}-${index}`}
initial={{ opacity: 0, scale: 0.8 }}
whileInView={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
className="group flex-shrink-0 mx-3"
>
<div className="bg-card/20 backdrop-blur-md rounded-2xl border border-white/10 px-8 py-6 hover:border-accent/30 transition-all duration-300 cursor-pointer shadow-lg hover:shadow-xl min-w-fit group-hover:scale-105 group-hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className={`w-8 h-8 flex items-center justify-center ${industry.color}`}>
<IconComponent className="w-6 h-6" />
</div>
<span className="text-xl font-medium text-foreground whitespace-nowrap">
{industry.name}
</span>
</div>
</div>
</motion.div>
);
})}
{/* Second set for seamless loop */}
{industries.map((industry, index) => {
const IconComponent = industry.icon;
return (
<motion.div
key={`second-${industry.name}-${index}`}
initial={{ opacity: 0, scale: 0.8 }}
whileInView={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.5, delay: (index + industries.length) * 0.1 }}
viewport={{ once: true }}
className="group flex-shrink-0 mx-3"
>
<div className="bg-card/20 backdrop-blur-md rounded-2xl border border-white/10 px-8 py-6 hover:border-accent/30 transition-all duration-300 cursor-pointer shadow-lg hover:shadow-xl min-w-fit group-hover:scale-105 group-hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className={`w-8 h-8 flex items-center justify-center ${industry.color}`}>
<IconComponent className="w-6 h-6" />
</div>
<span className="text-xl font-medium text-foreground whitespace-nowrap">
{industry.name}
</span>
</div>
</div>
</motion.div>
);
})}
{/* Third set for extra smoothness */}
{industries.map((industry, index) => {
const IconComponent = industry.icon;
return (
<motion.div
key={`third-${industry.name}-${index}`}
initial={{ opacity: 0, scale: 0.8 }}
whileInView={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.5, delay: (index + industries.length * 2) * 0.1 }}
viewport={{ once: true }}
className="group flex-shrink-0 mx-3"
>
<div className="bg-card/20 backdrop-blur-md rounded-2xl border border-white/10 px-8 py-6 hover:border-accent/30 transition-all duration-300 cursor-pointer shadow-lg hover:shadow-xl min-w-fit group-hover:scale-105 group-hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className={`w-8 h-8 flex items-center justify-center ${industry.color}`}>
<IconComponent className="w-6 h-6" />
</div>
<span className="text-xl font-medium text-foreground whitespace-nowrap">
{industry.name}
</span>
</div>
</div>
</motion.div>
);
})}
</div>
</motion.div>
</div>
</section>
);
};
// Updated Title-Only Layout - No Body Text
const SideBySideContentWithIcons = () => {
const trustFactors = [
{
id: "engineering",
title: "24+ Years in App Engineering",
icon: Award
},
{
id: "ownership",
title: "100% Ownership, No Lock-ins",
icon: Shield
},
{
id: "agile",
title: "Agile Sprints with Rapid Iteration",
icon: Zap
},
{
id: "security",
title: "Enterprise Security & Compliance-Ready",
icon: ShieldCheck
},
{
id: "devices",
title: "Deep Experience Across Devices",
icon: Settings
}
];
return (
<section className="py-32 bg-black">
<div className="container mx-auto px-6 lg:px-8">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
viewport={{ once: true }}
className="text-center mb-16"
>
{/* Main Heading */}
<h2 className="text-4xl lg:text-5xl font-semibold text-white leading-tight mb-6">
Why Founders and CTOs Trust WDI
</h2>
{/* Subtext */}
<p className="text-2xl text-gray-300 leading-relaxed">
Not just a dev agency. A product partner.
</p>
</motion.div>
{/* Uniform Grid - Title Only Cards */}
<motion.div
initial={{ opacity: 0, y: 40 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
viewport={{ once: true }}
className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 gap-6 max-w-7xl mx-auto"
>
{trustFactors.map((factor, index) => {
const IconComponent = factor.icon;
return (
<motion.div
key={factor.id}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
whileHover={{ y: -8, scale: 1.02 }}
className="group cursor-pointer"
>
<Card className="bg-gray-900/50 backdrop-blur-md border-gray-700/50 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full overflow-hidden">
<CardContent className="p-8 flex flex-col items-center text-center h-full justify-center min-h-[180px]">
{/* Icon - Clean without background */}
<div className="mb-6">
<IconComponent className="w-10 h-10 text-accent mx-auto" />
</div>
{/* Title */}
<h3 className="text-lg font-semibold text-white leading-tight">
{factor.title}
</h3>
</CardContent>
</Card>
</motion.div>
);
})}
</motion.div>
</div>
</section>
);
};
// Enhanced Mobile Expertise Grid
const TabbedServiceDisplay = () => {
const services = [
{
title: "iOS App Development",
icon: Smartphone,
2025-07-17 13:28:29 +05:30
description: "Native iOS applications built with Swift and optimized for App Store success.",
link: "/services/ios-app-development"
2025-07-11 16:54:37 +05:30
},
{
title: "Android App Development",
icon: Smartphone,
2025-07-17 13:28:29 +05:30
description: "High-performance Android apps using Kotlin with Google Play optimization.",
link: "/services/android-app-development"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Cross-Platform Development",
icon: Layers,
description: "Efficient cross-platform solutions using React Native and Flutter.",
link: "/services/cross-platform-app-development"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Wearable App Development",
icon: Watch,
description: "Smart watch and wearable device applications for health and fitness.",
link: "/services/wearable-device-development"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Progressive Web Apps",
icon: Globe,
description: "Web applications that work like native mobile apps across all devices.",
link: "/services/pwa-development"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Enterprise Mobile Solutions",
icon: Building,
description: "Secure, scalable mobile solutions for enterprise business needs.",
link: "/services/enterprise-software-solutions"
2025-07-11 16:54:37 +05:30
}
];
return (
2025-07-17 13:28:29 +05:30
<section className="py-32 bg-background">
2025-07-11 16:54:37 +05:30
<div className="container mx-auto px-6 lg:px-8">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
viewport={{ once: true }}
className="text-center mb-20"
>
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
2025-07-17 13:28:29 +05:30
Mobile App Development Services
2025-07-11 16:54:37 +05:30
</h2>
<p className="text-lg text-gray-300 max-w-4xl mx-auto leading-relaxed">
2025-07-17 13:28:29 +05:30
Comprehensive mobile development services that transform your ideas into powerful, user-friendly applications across all platforms.
2025-07-11 16:54:37 +05:30
</p>
</motion.div>
<motion.div
initial={{ opacity: 0, y: 40 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
viewport={{ once: true }}
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
>
{services.map((service, index) => {
const IconComponent = service.icon;
return (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
whileHover={{ y: -5 }}
2025-07-17 13:28:29 +05:30
className="group cursor-pointer"
onClick={() => navigateTo(service.link)}
2025-07-11 16:54:37 +05:30
>
<div className="bg-gray-900/50 backdrop-blur-sm rounded-2xl border border-gray-800 p-8 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl h-full">
<div className="flex flex-col items-start space-y-6">
<div className="w-12 h-12 bg-accent/20 rounded-lg flex items-center justify-center">
<IconComponent className="w-6 h-6 text-accent" />
</div>
<div>
<h3 className="text-xl font-semibold text-white mb-4">
{service.title}
</h3>
<p className="text-gray-400 leading-relaxed">
{service.description}
</p>
</div>
</div>
</div>
</motion.div>
);
})}
</motion.div>
</div>
</section>
);
};
// Updated CTA Banner with ShimmerButton
const InlineCTA = () => {
return (
2025-07-17 13:28:29 +05:30
<section className="py-20 bg-black">
<div className="container mx-auto px-6 lg:px-8">
2025-07-11 16:54:37 +05:30
<motion.div
initial={{ opacity: 0, y: 50 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
viewport={{ once: true }}
className="text-center max-w-4xl mx-auto"
>
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
viewport={{ once: true }}
className="space-y-8"
>
2025-07-17 13:28:29 +05:30
{/* Ready to Launch Badge */}
<div className="inline-block">
<div className="bg-gradient-to-r from-[#E5195E]/20 to-purple-500/20 border border-[#E5195E]/30 rounded-full px-6 py-3">
<div className="flex items-center gap-2">
<Rocket className="w-4 h-4 text-[#E5195E]" />
<span className="text-[#E5195E] text-sm font-medium">AI-Driven Innovation</span>
</div>
2025-07-11 16:54:37 +05:30
</div>
</div>
{/* Main Heading */}
2025-07-17 13:28:29 +05:30
<h2 className="text-4xl lg:text-5xl font-semibold leading-tight">
<span className="text-foreground">Let's Architect </span>
<span className="text-[#E5195E]">Intelligence</span>
<span className="text-foreground"> Into Your App</span>
2025-07-11 16:54:37 +05:30
</h2>
{/* Subtitle */}
<p className="text-xl text-muted-foreground leading-relaxed max-w-2xl mx-auto">
Schedule a discovery call to explore how AI can give you a strategic edge.
</p>
2025-07-17 13:28:29 +05:30
{/* CTA Button */}
<div className="flex flex-col items-center gap-4">
<ShimmerButton
className="text-xl px-10 py-5 rounded-2xl shadow-lg hover:shadow-xl bg-[#E5195E] hover:bg-[#E5195E]/90"
onClick={() => navigateTo('/start-a-project')}
>
<div className="inline-flex items-center gap-3">
<Brain className="w-6 h-6 flex-shrink-0" />
<span>Book an AI Discovery Call</span>
</div>
</ShimmerButton>
{/* Small benefit text */}
<p className="text-sm text-muted-foreground">
App strategy AI integration Technology consultation
</p>
</div>
2025-07-11 16:54:37 +05:30
</motion.div>
</motion.div>
</div>
</section>
);
};
// Updated Hire Developers Section with ShimmerButton
const HireDevelopersSection = () => {
const developers = [
{
2025-07-17 13:28:29 +05:30
title: "iOS Developers",
2025-07-11 16:54:37 +05:30
icon: Apple,
2025-07-17 13:28:29 +05:30
skills: ["Swift", "Objective-C", "SwiftUI", "Core Data"],
2025-07-11 16:54:37 +05:30
iconBg: "bg-gray-800",
2025-07-17 13:28:29 +05:30
iconColor: "text-white",
link: "/hire-talent/mobile-app-developers"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Android Developers",
2025-07-11 16:54:37 +05:30
icon: Smartphone,
2025-07-17 13:28:29 +05:30
skills: ["Kotlin", "Java", "Jetpack Compose"],
2025-07-11 16:54:37 +05:30
iconBg: "bg-green-500",
2025-07-17 13:28:29 +05:30
iconColor: "text-white",
link: "/hire-talent/mobile-app-developers"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Cross-Platform Developers",
2025-07-11 16:54:37 +05:30
icon: Layers,
2025-07-17 13:28:29 +05:30
skills: ["React Native", "Flutter", "Xamarin"],
2025-07-11 16:54:37 +05:30
iconBg: "bg-blue-500",
2025-07-17 13:28:29 +05:30
iconColor: "text-white",
link: "/hire-talent/mobile-app-developers"
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
title: "Mobile QA Engineers",
icon: ShieldCheck,
skills: ["Mobile Testing", "Automation", "Performance"],
2025-07-11 16:54:37 +05:30
iconBg: "bg-purple-500",
2025-07-17 13:28:29 +05:30
iconColor: "text-white",
link: "/hire-talent/qa-engineers"
2025-07-11 16:54:37 +05:30
}
];
return (
<section className="py-32 bg-background">
<div className="container mx-auto px-6 lg:px-8">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
viewport={{ once: true }}
className="text-center mb-20"
>
2025-07-17 13:28:29 +05:30
<h2 className="text-4xl lg:text-5xl font-semibold mb-8">
<span className="text-foreground">Hire Our </span>
<span className="text-[#E5195E]">Mobile App Experts</span>
2025-07-11 16:54:37 +05:30
</h2>
<p className="text-2xl text-muted-foreground max-w-4xl mx-auto leading-relaxed">
Get access to top-tier mobile developers who can bring your vision to life with cutting-edge technology and proven expertise.
</p>
</motion.div>
<motion.div
initial={{ opacity: 0, y: 40 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
viewport={{ once: true }}
className="grid md:grid-cols-2 xl:grid-cols-4 gap-8"
>
{developers.map((developer, index) => {
const IconComponent = developer.icon;
return (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
whileHover={{ y: -8, scale: 1.02 }}
className="group cursor-pointer"
>
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl overflow-hidden h-full">
<CardContent className="p-0 flex flex-col h-full">
{/* Header with icon and title */}
<div className="p-8 pb-6">
<div className="flex items-start gap-4 mb-6">
<div className={`w-12 h-12 ${developer.iconBg} rounded-xl flex items-center justify-center backdrop-blur-sm`}>
<IconComponent className={`w-6 h-6 ${developer.iconColor}`} />
</div>
<div className="flex-1">
<div className="text-xs text-muted-foreground mb-2 uppercase tracking-wider">
Mobile Development
</div>
</div>
</div>
<h3 className="text-xl font-semibold text-foreground mb-4 leading-tight">
{developer.title}
</h3>
</div>
{/* Skills section */}
<div className="px-8 pb-6 flex-1">
<div className="flex flex-wrap gap-2">
{developer.skills.map((skill) => (
<Badge key={skill} variant="secondary" className="text-xs bg-white/10 text-foreground">
{skill}
</Badge>
))}
</div>
</div>
{/* CTA Buttons - Updated with ShimmerButton */}
<div className="p-8 pt-0 mt-auto space-y-3">
2025-07-17 13:28:29 +05:30
<ShimmerButton
className="w-full py-3 text-sm rounded-xl shadow-lg hover:shadow-xl"
onClick={() => navigateTo(developer.link)}
>
2025-07-11 16:54:37 +05:30
<div className="inline-flex items-center justify-center gap-2">
2025-07-17 13:28:29 +05:30
<UserPlus className="w-4 h-4 flex-shrink-0" />
<span className="font-medium">Hire Now</span>
2025-07-11 16:54:37 +05:30
</div>
</ShimmerButton>
</div>
</CardContent>
</Card>
</motion.div>
);
})}
</motion.div>
</div>
</section>
);
};
// FAQ data for Mobile App Development
const mobileAppFAQs = [
{
2025-07-17 13:28:29 +05:30
question: "Do you develop both iOS and Android apps?",
answer: "Yes, we develop native iOS apps using Swift and Android apps using Kotlin. We also offer cross-platform solutions using React Native and Flutter for cost-effective multi-platform deployment."
},
{
question: "What is the typical timeline for mobile app development?",
answer: "Timeline varies based on complexity. Simple apps take 8-12 weeks, while complex enterprise apps can take 16-24 weeks. We provide detailed project timelines after requirements analysis."
},
{
question: "How much does mobile app development cost?",
answer: "Costs depend on features, platforms, and complexity. We offer competitive pricing with transparent estimates. Contact us for a detailed quote based on your specific requirements."
},
{
question: "Do you help with App Store submissions?",
answer: "Yes, we handle the complete App Store submission process for both Apple App Store and Google Play Store, including app optimization, compliance, and approval assistance."
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
question: "Can you integrate third-party services and APIs?",
answer: "Absolutely! We integrate various third-party services including payment gateways, social media, analytics, push notifications, maps, and custom APIs to enhance app functionality."
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
question: "Do you provide app maintenance and updates?",
answer: "Yes, we offer comprehensive maintenance services including bug fixes, OS updates, security patches, feature enhancements, and performance optimization to keep your app current."
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
question: "What about app security and data protection?",
answer: "We implement robust security measures including data encryption, secure API communication, user authentication, and compliance with privacy regulations like GDPR and CCPA."
2025-07-11 16:54:37 +05:30
},
{
2025-07-17 13:28:29 +05:30
question: "Can you develop offline-capable mobile apps?",
answer: "Yes, we can develop apps with offline functionality using local storage, caching strategies, and data synchronization to ensure your app works even without internet connectivity."
2025-07-11 16:54:37 +05:30
}
];
2025-07-17 13:28:29 +05:30
// Main Mobile App Development Page Component
export const MobileAppDevelopment = () => {
// Set document title for SEO
React.useEffect(() => {
document.title = "Mobile App Development Services | WDI - iOS & Android App Development";
// Update meta description for SEO
const metaDescription = document.querySelector('meta[name="description"]');
if (metaDescription) {
metaDescription.setAttribute('content', 'Professional mobile app development services at WDI. Build secure, scalable iOS and Android apps with expert developers. Cross-platform solutions available.');
}
}, []);
2025-07-11 16:54:37 +05:30
return (
<div className="dark min-h-screen bg-background">
<Navigation />
2025-07-17 13:28:29 +05:30
{/* Hero Section */}
2025-07-11 16:54:37 +05:30
<HeroWithCTA />
2025-07-17 13:28:29 +05:30
{/* Industries Scroller */}
<HorizontalTagScroller />
{/* Why Choose WDI */}
2025-07-11 16:54:37 +05:30
<SideBySideContentWithIcons />
2025-07-17 13:28:29 +05:30
{/* Service Categories */}
2025-07-11 16:54:37 +05:30
<TabbedServiceDisplay />
2025-07-17 13:28:29 +05:30
{/* Process Steps */}
2025-07-11 16:54:37 +05:30
<ProcessSection />
2025-07-17 13:28:29 +05:30
{/* Hire Developers */}
2025-07-11 16:54:37 +05:30
<HireDevelopersSection />
2025-07-17 13:28:29 +05:30
{/* Final CTA */}
<InlineCTA />
{/* FAQ Section */}
<FAQSection faqs={mobileAppFAQs} />
2025-07-11 16:54:37 +05:30
<Footer />
</div>
);
2025-07-17 13:28:29 +05:30
};