tech page completed

This commit is contained in:
sanjidarimi
2026-05-14 22:05:51 +06:00
parent 5249561a54
commit 245d868f83
9 changed files with 506 additions and 12 deletions
+18 -8
View File
@@ -53,13 +53,14 @@
"react-day-picker": "^8.10.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.61.1",
"react-icons": "^5.6.0",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^2.1.9",
"react-router-dom": "^6.30.1",
"recharts": "^2.15.4",
"remark-gfm": "^4.0.1",
"sonner": "^1.7.4",
"swiper": "^12.1.2",
"swiper": "^12.1.4",
"tailwind-merge": "^2.6.0",
"tailwindcss-animate": "^1.0.7",
"vaul": "^0.9.9",
@@ -8017,6 +8018,15 @@
"react": "^16.8.0 || ^17 || ^18 || ^19"
}
},
"node_modules/react-icons": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.6.0.tgz",
"integrity": "sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==",
"license": "MIT",
"peerDependencies": {
"react": "*"
}
},
"node_modules/react-is": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
@@ -8798,17 +8808,17 @@
}
},
"node_modules/swiper": {
"version": "12.1.2",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-12.1.2.tgz",
"integrity": "sha512-4gILrI3vXZqoZh71I1PALqukCFgk+gpOwe1tOvz5uE9kHtl2gTDzmYflYCwWvR4LOvCrJi6UEEU+gnuW5BtkgQ==",
"version": "12.1.4",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-12.1.4.tgz",
"integrity": "sha512-bihiwoKMOQwW8FfdUbo1DgkVH25E+4ZELIq0oopL1KTKBteLuaTMi/wwFjMxtlhTkk45k3XQ89D1Fvv0spSqBA==",
"funding": [
{
"type": "patreon",
"url": "https://www.patreon.com/swiperjs"
"type": "custom",
"url": "https://sponsors.nolimits4web.com"
},
{
"type": "open_collective",
"url": "http://opencollective.com/swiper"
"type": "github",
"url": "https://github.com/sponsors/nolimits4web"
}
],
"license": "MIT",
+2 -1
View File
@@ -58,13 +58,14 @@
"react-day-picker": "^8.10.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.61.1",
"react-icons": "^5.6.0",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^2.1.9",
"react-router-dom": "^6.30.1",
"recharts": "^2.15.4",
"remark-gfm": "^4.0.1",
"sonner": "^1.7.4",
"swiper": "^12.1.2",
"swiper": "^12.1.4",
"tailwind-merge": "^2.6.0",
"tailwindcss-animate": "^1.0.7",
"vaul": "^0.9.9",
+2
View File
@@ -15,6 +15,7 @@ import { PrivacyPolicy } from "./pages/PrivacyPolicy";
import ProjectDetails from "./pages/ProjectDetails";
import Projects from "./pages/Projects";
import { QueryProvider } from "./provider/QueryProvider";
import Technologies from "./pages/Technologies";
function AnimatedRoutes() {
const location = useLocation();
@@ -27,6 +28,7 @@ function AnimatedRoutes() {
<Route path="/" element={<Index />} />
<Route path="/projects" element={<Projects />} />
<Route path="/projects/:id" element={<ProjectDetails />} />
<Route path="technologies" element={<Technologies/>}/>
{/* <Route path="/blog" element={<Blog />} />
<Route path="/blog/:id" element={<BlogArticle />} /> */}
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
+6 -3
View File
@@ -50,11 +50,14 @@ export default function ServicesSection() {
>
<PremiumBadge text="Our Expertise" />
<h2 className="text-3xl md:text-4xl lg:text-5xl font-bold mb-4 mt-2">
What We <span className="text-transparent bg-clip-text bg-gradient-to-r from-primary to-accent-foreground">Do</span>
<span className="text-transparent bg-clip-text bg-gradient-to-r from-primary to-accent-foreground">
Services {" "}
</span>
We Provide
</h2>
<p className="text-muted-foreground text-lg leading-relaxed">
We deliver comprehensive technology solutions that empower
businesses to thrive in the digital age.
We design and develop digital products that solve real business
problems and create better user experiences.
</p>
</motion.div>
+100
View File
@@ -0,0 +1,100 @@
import { motion } from "framer-motion";
import { MdAutoGraph, MdPsychology, MdQueryStats } from "react-icons/md";
const aiSolutions = [
{
title: "NLP & LLMs",
icon: <MdPsychology />,
desc: "Custom language models and chatbots tailored to your specific business data.",
features: ["Sentiment Analysis", "Entity Recognition", "Auto-Support"],
color: "#3b82f6", // Blue
},
{
title: "Predictive Analytics",
icon: <MdQueryStats />,
desc: "Turn historical data into future-proof strategies with deep learning.",
features: ["Trend Forecasting", "Risk Assessment", "User Behavior"],
color: "#a855f7", // Purple
},
{
title: "Computer Vision",
icon: <MdAutoGraph />,
desc: "Extracting actionable insights from visual data and real-time streams.",
features: ["Object Detection", "Image Synthesis", "Facial Recognition"],
color: "#10b981", // Emerald
},
];
export const AISolutions = () => {
return (
<section className="">
<div className="container mx-auto px-6">
{/* Header Section */}
<div className="max-w-3xl mb-16">
<h2 className="text-4xl md:text-5xl font-bold tracking-tight mb-6">
AI <span className="text-primary">Solutions</span>
</h2>
<p className="text-lg">
We build AI-powered features and automation tools that help
businesses save time, improve workflows, and deliver smarter user
experiences.
</p>
</div>
{/* Grid Layout */}
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{aiSolutions.map((solution, i) => (
<motion.div
key={solution.title}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: i * 0.1 }}
whileHover={{ y: -8 }}
className="relative group p-8 rounded-3xl hover:border bg-card transition-colors overflow-hidden"
>
{/* Subtle Background Glow */}
<div
className="absolute -right-10 -top-10 w-32 h-32 blur-2xl opacity-30 transition-opacity"
style={{ backgroundColor: solution.color }}
/>
{/* Icon & Title */}
<div
className="text-4xl mb-6 inline-block p-3 rounded-2xl border"
style={{ color: solution.color }}
>
{solution.icon}
</div>
<h3 className="text-2xl font-semibold mb-4 tracking-tight">
{solution.title}
</h3>
<p className=" leading-relaxed mb-8">{solution.desc}</p>
{/* Feature Tags */}
<div className="flex flex-wrap gap-2">
{solution.features.map((feature) => (
<span
key={feature}
className="text-xs tracking-widest font-bold px-3 py-1 rounded-full bg-primary/10 text-primary"
>
{feature}
</span>
))}
</div>
{/* Bottom Accent Line */}
<div
className="absolute bottom-0 left-0 h-1 group-hover:w-0 w-full transition-all duration-500"
style={{ backgroundColor: solution.color }}
/>
</motion.div>
))}
</div>
</div>
</section>
);
};
@@ -0,0 +1,96 @@
import { motion } from "framer-motion";
import { MdCloudQueue, MdSecurity } from "react-icons/md";
import { SiDocker } from "react-icons/si";
const cloudServices = [
{
title: "Serverless Architecture",
icon: <MdCloudQueue />,
desc: "Scale to millions of users without managing a single server.",
color: "text-orange-400",
border: "group-hover:border-orange-500/50",
},
{
title: "Containerization",
icon: <SiDocker />,
desc: "Orchestrated deployments using Docker for zero-downtime.",
color: "text-blue-400",
border: "group-hover:border-blue-500/50",
},
{
title: "Cyber Security",
icon: <MdSecurity />,
desc: "End-to-end encryption and automated threat detection.",
color: "text-emerald-400",
border: "group-hover:border-emerald-500/50",
},
];
export const CloudSolutions = () => {
return (
<section className=" mt-32 px-6 overflow-hidden">
<div className="container mx-auto grid lg:grid-cols-2 gap-16 items-center">
{/* Left Side: Content */}
<motion.div
initial={{ opacity: 0, x: -30 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
className="z-10"
>
<h2 className="text-4xl md:text-5xl font-bold tracking-tighter leading-none mb-8">
Cloud {" "}
<span className="text-primary tracking-tight">Solutions</span>
</h2>
<p className=" text-lg leading-relaxed">
We build high-availability cloud systems that guarantee reliability,
performance, and a scalable architecture for the modern web.
</p>
{/* Optional: Simple CTA or stat to fill space */}
<div className="mt-10 flex gap-8 border-t border-border pt-8">
<div>
<p className="text-2xl font-bold ">99.9%</p>
<p className="text-xs uppercase tracking-widest ">Uptime</p>
</div>
<div>
<p className="text-2xl font-bold ">Global</p>
<p className="text-xs uppercase tracking-widest ">Edge Network</p>
</div>
</div>
</motion.div>
{/* Right Side: Cards */}
<div className="flex flex-col gap-4">
{cloudServices.map((service, i) => (
<motion.div
key={i}
initial={{ opacity: 0, x: 50 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ delay: i * 0.15, duration: 0.5 }}
className={`group flex items-center gap-6 p-6 rounded-3xl border border-border transition-all duration-300 cursor-default ${service.border}`}
>
{/* Icon Container */}
<div
className={`text-4xl p-4 rounded-2xl border group-hover:scale-110 transition-transform duration-300 ${service.color}`}
>
{service.icon}
</div>
{/* Text Content */}
<div>
<h4 className="text-xl font-bold mb-1 transition-colors">
{service.title}
</h4>
<p className="text-sm leading-relaxed max-w-xs">
{service.desc}
</p>
</div>
</motion.div>
))}
</div>
</div>
</section>
);
};
+113
View File
@@ -0,0 +1,113 @@
import { motion } from "framer-motion";
import React from "react";
import { MdCloudQueue } from "react-icons/md";
import { SiFlutter, SiKotlin, SiSwift } from "react-icons/si";
// 1. Define the interface for your timeline items
interface TimelineItem {
title: string;
icon: React.ReactNode;
desc: string;
color: string;
}
const timelineData: TimelineItem[] = [
{
title: "iOS Native",
icon: <SiSwift />,
desc: "Premium Swift-based applications optimized for the Apple ecosystem performance.",
color: "text-[#00B4D8]",
},
{
title: "Android Native",
icon: <SiKotlin />,
desc: "Robust Kotlin applications built for scalability across all Android devices.",
color: "text-[#2E8B57]",
},
{
title: "Cross-Platform",
icon: <SiFlutter />,
desc: "High-performance Flutter apps with a single codebase for iOS and Android.",
color: "text-[#7B2D8E]",
},
{
title: "Cloud Sync",
icon: <MdCloudQueue />,
desc: "Real-time data synchronization and secure backend cloud integration.",
color: "text-primary",
},
];
export default function MobileHorizontalTimeline(): React.JSX.Element {
return (
<section className="py-20 px-6 bg-background overflow-hidden">
{/* Header Section */}
<div className="max-w-3xl mx-auto text-center mb-16 space-y-4">
<h2 className="text-4xl md:text-5xl font-bold tracking-tight">
Mobile App Development <span className="text-primary">Services</span>
</h2>
<p>
<p className="text-muted-foreground text-lg">
We develop mobile applications that are smooth, reliable, and built
to deliver a better experience for your users.
</p>
</p>
</div>
<div className="relative container mx-auto">
{/* Horizontal Spine */}
<div className="absolute top-[44px] left-0 w-full h-[2px] bg-gradient-to-r from-transparent via-primary/50 to-transparent hidden md:block" />
{/* Scroll Container */}
<div className="flex flex-col md:flex-row gap-2 pb-12">
{timelineData.map((item, index) => (
<div
key={item.title}
className="flex-shrink-0 w-full md:w-1/4 snap-center relative pt-12 md:pt-0"
>
{/* Icon Node */}
<div className="absolute top-0 md:top-6 left-1/2 -translate-x-1/2 z-20">
<motion.div
initial={{ scale: 0, y: 20 }}
whileInView={{ scale: 1, y: 0 }}
viewport={{ once: true }}
className="w-10 h-10 rounded-full glass border-2 border-primary flex items-center justify-center text-primary neon-glow "
>
{item.icon}
</motion.div>
</div>
{/* 3D Flip Card */}
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
className="mt-6 md:mt-24 px-2"
>
<div className="group relative ">
<div className="relative h-full w-full transition-all">
{/* Front Side */}
<div className="absolute inset-0 rounded-2xl shimmer bg-card p-6 flex flex-col items-center text-center justify-center">
<span
className={`text-4xl mb-4 opacity-40 ${item.color}`}
>
{item.icon}
</span>
<h3 className="text-xl font-bold mb-3 tracking-tight">
{item.title}
</h3>
<p className="text-muted-foreground text-xs leading-relaxed">
{item.desc}
</p>
</div>
</div>
</div>
</motion.div>
</div>
))}
</div>
</div>
</section>
);
}
+136
View File
@@ -0,0 +1,136 @@
import {
SiFastapi,
SiGo,
SiJavascript,
SiNestjs,
SiNextdotjs,
SiNodedotjs,
SiReact,
SiTypescript,
} from "react-icons/si";
import { TbApi } from "react-icons/tb";
export default function WebDev() {
const techStack = [
{
name: "React",
icon: <SiReact />,
desc: "We use React to build fast, interactive, and smooth user interfaces that improve the overall user experience.",
color: "text-[#61DAFB]",
},
{
name: "Next.js",
icon: <SiNextdotjs />,
desc: "We use Next.js for better performance, SEO, and scalable frontend applications that load quickly.",
color: "text-foreground",
},
{
name: "TypeScript",
icon: <SiTypescript />,
desc: "We use TypeScript to write safer, maintainable code and reduce bugs in large-scale applications.",
color: "text-[#3178C6]",
},
{
name: "JavaScript",
icon: <SiJavascript />,
desc: "JavaScript powers the core functionality of our web applications, making them dynamic and responsive.",
color: "text-[#F7DF1E]",
},
{
name: "Node.js",
icon: <SiNodedotjs />,
desc: "We use Node.js to build fast, scalable backend systems capable of handling real-time applications and APIs.",
color: "text-[#339933]",
},
{
name: "GoLang",
icon: <SiGo />,
desc: "We use Go for high-performance backend services that require speed, scalability, and efficient concurrency.",
color: "text-[#00ADD8]",
},
{
name: "Fast API",
icon: <SiFastapi />,
desc: "We use FastAPI to develop secure and high-performance APIs with clean architecture and rapid development.",
color: "text-[#05998B]",
},
{
name: "Nest JS",
icon: <SiNestjs />,
desc: "We use NestJS to build structured, scalable, and enterprise-ready backend applications with clean architecture.",
color: "text-[#E0234E]",
},
{
name: "Rest API",
icon: <TbApi />,
desc: "REST APIs help our applications communicate smoothly between frontend, backend, and third-party services.",
color: "text-primary",
},
];
const services = [
"Custom Web Application Development",
"E-commerce Solution Architectures",
"Real-time Dashboard Systems",
"API Design & Integration",
"Progressive Web Apps (PWA)",
"Legacy Code Migration",
];
return (
<>
<section className="container mx-auto flex flex-col lg:flex-row gap-16 items-center">
<div className="w-full lg:w-1/3 space-y-8 sticky top-24 self-start">
<div className="space-y-4">
<h2 className="text-4xl md:text-5xl font-bold tracking-tight">
Our Web Development{" "}
<span className="text-primary">Services</span>
</h2>
<p className="text-muted-foreground leading-relaxed">
From business websites to complex web applications, we create
digital solutions focused on performance, usability, and growth.
</p>
</div>
<ul className="space-y-4">
{services.map((service, i) => (
<li key={i} className="flex items-center gap-3 group">
<span className="h-2 w-2 rounded-full bg-primary group-hover:scale-150 transition-transform duration-300 neon-glow" />
<span className="font-medium text-lg hover:text-primary transition-colors cursor-default">
{service}
</span>
</li>
))}
</ul>
</div>
<div className="container mx-auto grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 w-full lg:w-2/3">
{techStack.map((tech, index) => (
<div key={index} className="group [perspective:1000px]">
{/* Inner Wrapper for Flip */}
<div className="relative h-full w-full transition-all duration-500 [transform-style:preserve-3d] group-hover:[transform:rotateY(180deg)]">
{/* Front Side: Icon & Title */}
<div className="absolute inset-0 flex flex-col items-center justify-center p-12 rounded-2xl border border-gradient ">
<div
className={`text-6xl mb-4 transition-transform duration-300 group-hover:scale-110 ${tech.color}`}
>
{tech.icon}
</div>
<h3 className=" font-bold tracking-wide">{tech.name}</h3>
</div>
{/* Back Side: "Why we use it" */}
<div className="absolute inset-0 h-full w-full rounded-2xl bg-card px-8 py-10 text-center [transform:rotateY(180deg)] [backface-visibility:hidden] flex flex-col items-center justify-center border-2 border-primary/50 neon-glow">
<h4 className="text-primary font-bold mb-2 uppercase text-sm tracking-tighter">
Why we use it
</h4>
<p className="text-xs text-muted-foreground leading-relaxed">
{tech.desc}
</p>
</div>
</div>
</div>
))}
</div>
</section>
</>
);
}
+33
View File
@@ -0,0 +1,33 @@
import { AISolutions } from "@/components/services/AISolutions";
import { CloudSolutions } from "@/components/services/CloudSolutions";
import MobileService from "@/components/services/MobileService";
import WebDev from "@/components/services/WebDev";
import PremiumBadge from "@/components/shared/PremiumBadge";
const Technologies = () => {
return (
<div className="py-24">
{/* Hero Section */}
<section className="mb-20 bg-primary/5 dark:bg-secondary/70 py-20 text-foreground text-center space-y-4">
<PremiumBadge text=" Our Tech Stack" />
<h1 className="text-4xl md:text-5xl font-bold tracking-tight">
Modern Technology for Real <br />
<span className="text-primary">Business</span> Needs.
</h1>
<p className="text-muted-foreground text-lg md:text-xl max-w-4xl mx-auto">
We leverage the most advanced and reliable technologies to build
scalable, high-performance digital solutions tailored to your needs.
</p>
</section>
{/* web Section */}
<WebDev />
<MobileService />
<AISolutions />
<CloudSolutions />
</div>
);
};
export default Technologies;