diff --git a/apps/web/src/components/marketing/landing/customer/featured/index.tsx b/apps/web/src/components/marketing/landing/customer/featured/index.tsx
index f2373147d..2effdb248 100644
--- a/apps/web/src/components/marketing/landing/customer/featured/index.tsx
+++ b/apps/web/src/components/marketing/landing/customer/featured/index.tsx
@@ -3,7 +3,7 @@ import DotPattern from "@/components/ui/dot-pattern";
import Safari from "@/components/ui/safari";
import Routes from "@/constants/routes";
import { cn } from "@/lib/utils";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import React from "react";
import Balancer from "react-wrap-balancer";
diff --git a/apps/web/src/components/marketing/landing/page-switcher/index.tsx b/apps/web/src/components/marketing/landing/page-switcher/index.tsx
index 7e28ef5fd..e326dc09d 100644
--- a/apps/web/src/components/marketing/landing/page-switcher/index.tsx
+++ b/apps/web/src/components/marketing/landing/page-switcher/index.tsx
@@ -2,30 +2,31 @@
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
import Routes from "@/constants/routes";
-import Link from "next/link";
-import { usePathname } from "next/navigation";
+import { Link, usePathname } from "@onruntime/translations/next";
import React from "react";
const PageSwitcher: React.FC = () => {
const pathname = usePathname();
return (
-
+
-
-
-
+
+
+
Je suis un potentiel client
-
-
+
+
-
- Je suis un simple visiteur
-
+
+
+ Je suis un simple visiteur
+
+
diff --git a/apps/web/src/components/marketing/landing/visitor/featured/index.tsx b/apps/web/src/components/marketing/landing/visitor/featured/index.tsx
index 694f4c56f..fe15f9c67 100644
--- a/apps/web/src/components/marketing/landing/visitor/featured/index.tsx
+++ b/apps/web/src/components/marketing/landing/visitor/featured/index.tsx
@@ -7,7 +7,7 @@ import Partners from "./partners";
import { OnRuntimeWordMark } from "@/logos/components";
import Balancer from "react-wrap-balancer";
import Routes from "@/constants/routes";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
const Featured: React.FC = () => {
return (
diff --git a/apps/web/src/components/marketing/landing/visitor/projects/card/index.tsx b/apps/web/src/components/marketing/landing/visitor/projects/card/index.tsx
index 26c080fc3..42cd37468 100644
--- a/apps/web/src/components/marketing/landing/visitor/projects/card/index.tsx
+++ b/apps/web/src/components/marketing/landing/visitor/projects/card/index.tsx
@@ -3,7 +3,7 @@ import { Badge } from "@/components/ui/badge";
import Routes from "@/constants/routes";
import { Project, Tag } from "@/types/project";
import Image from "next/image";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import React from "react";
export type ProjectCardProps = {
diff --git a/apps/web/src/components/marketing/landing/visitor/projects/index.tsx b/apps/web/src/components/marketing/landing/visitor/projects/index.tsx
index 238ef6451..71720065a 100644
--- a/apps/web/src/components/marketing/landing/visitor/projects/index.tsx
+++ b/apps/web/src/components/marketing/landing/visitor/projects/index.tsx
@@ -3,7 +3,7 @@ import { Button } from "@/components/ui/button";
import { default as ProjectsConst } from "@/constants/projects";
import React from "react";
import ProjectCard from "./card";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Routes from "@/constants/routes";
const Projects: React.FC = () => {
diff --git a/apps/web/src/components/marketing/landing/visitor/team/index.tsx b/apps/web/src/components/marketing/landing/visitor/team/index.tsx
index 0be6d9092..724d9272b 100644
--- a/apps/web/src/components/marketing/landing/visitor/team/index.tsx
+++ b/apps/web/src/components/marketing/landing/visitor/team/index.tsx
@@ -1,6 +1,6 @@
import { Button } from "@/components/ui/button";
import Routes from "@/constants/routes";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import React from "react";
import TeamGrid from "./grid";
diff --git a/apps/web/src/components/marketing/legal/page.tsx b/apps/web/src/components/marketing/legal/page.tsx
index 1314b4878..ab423c6ee 100644
--- a/apps/web/src/components/marketing/legal/page.tsx
+++ b/apps/web/src/components/marketing/legal/page.tsx
@@ -3,7 +3,7 @@ import { Button } from "@/components/ui/button"
import DotPattern from "@/components/ui/dot-pattern"
import { cn } from "@/lib/utils"
import { Mail } from 'lucide-react'
-import Link from "next/link"
+import { Link } from "@onruntime/translations/next"
import Routes from '@/constants/routes'
interface LegalPageProps {
diff --git a/apps/web/src/components/marketing/navbar/index.tsx b/apps/web/src/components/marketing/navbar/index.tsx
index d3c2eb511..3d81d7021 100644
--- a/apps/web/src/components/marketing/navbar/index.tsx
+++ b/apps/web/src/components/marketing/navbar/index.tsx
@@ -1,6 +1,6 @@
"use client";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import type React from "react";
import { useState, useRef, useEffect } from "react";
import { ChevronDown, Menu } from "lucide-react";
diff --git a/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx b/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx
index 2299db0f3..d4733e6fa 100644
--- a/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx
+++ b/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx
@@ -10,7 +10,7 @@ import Routes from "@/constants/routes";
import { getMajorAgencies } from "@/constants/agencies";
import { ArrowRight, MapPin } from "lucide-react";
import React from "react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import { cn } from "@/lib/utils";
import { useTranslation } from "@onruntime/translations/react";
diff --git a/apps/web/src/components/marketing/navbar/navigation/index.tsx b/apps/web/src/components/marketing/navbar/navigation/index.tsx
index 863d43c7b..e3d277cae 100644
--- a/apps/web/src/components/marketing/navbar/navigation/index.tsx
+++ b/apps/web/src/components/marketing/navbar/navigation/index.tsx
@@ -8,7 +8,7 @@ import {
navigationMenuTriggerStyle,
} from "@/components/ui/navigation-menu";
import Routes from "@/constants/routes";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import React from "react";
import { useTranslation } from "@onruntime/translations/react";
diff --git a/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx b/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx
index 740bb0240..42837c95c 100644
--- a/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx
+++ b/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx
@@ -10,7 +10,7 @@ import Projects from "@/constants/projects";
import Routes from "@/constants/routes";
import { ArrowRight, Code, Eye, Github, Rocket } from "lucide-react";
import React from "react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Image from "next/image";
import { Tag } from "@/types/project";
diff --git a/apps/web/src/components/marketing/navbar/navigation/services/index.tsx b/apps/web/src/components/marketing/navbar/navigation/services/index.tsx
index 2838429cd..64ed29b5e 100644
--- a/apps/web/src/components/marketing/navbar/navigation/services/index.tsx
+++ b/apps/web/src/components/marketing/navbar/navigation/services/index.tsx
@@ -11,7 +11,7 @@ import Routes from "@/constants/routes";
import { cn } from "@/lib/utils";
import { ArrowRight, LucideIcon } from "lucide-react";
import React from "react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import { useTranslation } from "@onruntime/translations/react";
diff --git a/apps/web/src/components/marketing/projects/sections/index.tsx b/apps/web/src/components/marketing/projects/sections/index.tsx
index 2d5c9a708..89f1ea62b 100644
--- a/apps/web/src/components/marketing/projects/sections/index.tsx
+++ b/apps/web/src/components/marketing/projects/sections/index.tsx
@@ -6,7 +6,7 @@ import Projects from "@/constants/projects";
import { Tag } from "@/types/project";
import ProjectCard from "@/components/marketing/landing/visitor/projects/card";
import Image from "next/image";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import { Button } from "@/components/ui/button";
import { ArrowRight } from "lucide-react";
import Routes from "@/constants/routes";
diff --git a/apps/web/src/components/marketing/services/sections/index.tsx b/apps/web/src/components/marketing/services/sections/index.tsx
index 33d5a4588..312a2f30c 100644
--- a/apps/web/src/components/marketing/services/sections/index.tsx
+++ b/apps/web/src/components/marketing/services/sections/index.tsx
@@ -1,7 +1,7 @@
import React from "react";
import { Button } from "@/components/ui/button";
import { VelocityScroll } from "@/components/ui/scroll-based-velocity";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import { ArrowRight, GitPullRequestArrow, Timer, Users } from "lucide-react";
import Image from "next/image";
diff --git a/apps/web/src/components/marketing/services/service-layout.tsx b/apps/web/src/components/marketing/services/service-layout.tsx
index 75ec0c865..178533d49 100644
--- a/apps/web/src/components/marketing/services/service-layout.tsx
+++ b/apps/web/src/components/marketing/services/service-layout.tsx
@@ -3,7 +3,7 @@ import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
import { ArrowRight } from "lucide-react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Routes from "@/constants/routes";
interface ServiceLayoutProps {
diff --git a/apps/web/src/components/marketing/services/service-overview.tsx b/apps/web/src/components/marketing/services/service-overview.tsx
index f7110c608..ec6c08c16 100644
--- a/apps/web/src/components/marketing/services/service-overview.tsx
+++ b/apps/web/src/components/marketing/services/service-overview.tsx
@@ -3,7 +3,7 @@ import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
import { ArrowRight } from "lucide-react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Routes from "@/constants/routes";
import { ServiceBenefit, ServiceCategoryData, ServiceProcessStep } from '@/types/service';
import { Badge } from '@/components/ui/badge';
diff --git a/apps/web/src/components/ui/dropdown-menu.tsx b/apps/web/src/components/ui/dropdown-menu.tsx
new file mode 100644
index 000000000..7f71b7724
--- /dev/null
+++ b/apps/web/src/components/ui/dropdown-menu.tsx
@@ -0,0 +1,201 @@
+"use client"
+
+import * as React from "react"
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
+import { Check, ChevronRight, Circle } from "lucide-react"
+
+import { cn } from "@/lib/utils/index"
+
+const DropdownMenu = DropdownMenuPrimitive.Root
+
+const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
+
+const DropdownMenuGroup = DropdownMenuPrimitive.Group
+
+const DropdownMenuPortal = DropdownMenuPrimitive.Portal
+
+const DropdownMenuSub = DropdownMenuPrimitive.Sub
+
+const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
+
+const DropdownMenuSubTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean
+ }
+>(({ className, inset, children, ...props }, ref) => (
+
+ {children}
+
+
+))
+DropdownMenuSubTrigger.displayName =
+ DropdownMenuPrimitive.SubTrigger.displayName
+
+const DropdownMenuSubContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DropdownMenuSubContent.displayName =
+ DropdownMenuPrimitive.SubContent.displayName
+
+const DropdownMenuContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, sideOffset = 4, ...props }, ref) => (
+
+
+
+))
+DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
+
+const DropdownMenuItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean
+ }
+>(({ className, inset, ...props }, ref) => (
+ svg]:size-4 [&>svg]:shrink-0",
+ inset && "pl-8",
+ className
+ )}
+ {...props}
+ />
+))
+DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
+
+const DropdownMenuCheckboxItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, checked, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+))
+DropdownMenuCheckboxItem.displayName =
+ DropdownMenuPrimitive.CheckboxItem.displayName
+
+const DropdownMenuRadioItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+))
+DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
+
+const DropdownMenuLabel = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean
+ }
+>(({ className, inset, ...props }, ref) => (
+
+))
+DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
+
+const DropdownMenuSeparator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
+
+const DropdownMenuShortcut = ({
+ className,
+ ...props
+}: React.HTMLAttributes) => {
+ return (
+
+ )
+}
+DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
+
+export {
+ DropdownMenu,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuCheckboxItem,
+ DropdownMenuRadioItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuShortcut,
+ DropdownMenuGroup,
+ DropdownMenuPortal,
+ DropdownMenuSub,
+ DropdownMenuSubContent,
+ DropdownMenuSubTrigger,
+ DropdownMenuRadioGroup,
+}
diff --git a/apps/web/src/lib/utils/metadata.ts b/apps/web/src/lib/utils/metadata.ts
index 03e2d95d7..a9c4252c2 100644
--- a/apps/web/src/lib/utils/metadata.ts
+++ b/apps/web/src/lib/utils/metadata.ts
@@ -1,9 +1,13 @@
import { Metadata } from "next";
+import { headers } from "next/headers";
+
+import { env } from "@/../env";
+import { locales } from "@/lib/translations";
export const siteConfig = {
name: "onRuntime Studio",
description: "Agence digitale spécialisée en développement web, mobile et design UI/UX. Notre équipe d'experts transforme vos idées en solutions digitales performantes.",
- url: process.env.NEXT_PUBLIC_APP_URL || "https://onruntime.com",
+ url: env.NEXT_PUBLIC_APP_URL || "https://onruntime.com",
ogImage: "/og.jpg",
links: {
discord: "https://discord.gg/ucX9c5yXmX",
@@ -34,14 +38,13 @@ export function getOGImageUrl({
return `${siteConfig.url}/api/og?${params.toString()}`;
}
-export function constructMetadata({
+export async function constructMetadata({
title = siteConfig.name,
description = siteConfig.description,
ogType = "website",
ogImage,
ogImageType = "default",
noIndex = false,
- canonical,
}: {
title?: string;
description?: string;
@@ -49,11 +52,12 @@ export function constructMetadata({
ogImage?: string;
ogImageType?: OGImageType;
noIndex?: boolean;
- canonical?: string;
-} = {}): Metadata {
+} = {}): Promise {
+ const canonical = await generateCanonical();
+
// Titre avec format cohérent
- const formattedTitle = title === siteConfig.name
- ? title
+ const formattedTitle = title === siteConfig.name
+ ? title
: `${title} | ${siteConfig.name}`;
const finalOgImage = ogImage || getOGImageUrl({
@@ -61,27 +65,25 @@ export function constructMetadata({
description,
type: ogImageType,
});
-
+
return {
title: formattedTitle,
description,
-
+
metadataBase: new URL(siteConfig.url),
-
- ...(canonical && {
- alternates: {
- canonical
- }
- }),
-
+
+ alternates: {
+ canonical,
+ },
+
authors: [{ name: "onRuntime Studio", url: siteConfig.url }],
creator: "onRuntime Studio",
publisher: "onRuntime Studio",
-
+
openGraph: {
type: ogType,
locale: "fr_FR",
- url: canonical || siteConfig.url,
+ url: canonical,
title: formattedTitle,
description,
siteName: siteConfig.name,
@@ -94,7 +96,7 @@ export function constructMetadata({
},
],
},
-
+
twitter: {
card: "summary_large_image",
title: formattedTitle,
@@ -103,7 +105,7 @@ export function constructMetadata({
creator: "@onruntime",
site: "@onruntime",
},
-
+
icons: {
icon: [
{ url: "/favicon.ico" },
@@ -113,9 +115,9 @@ export function constructMetadata({
{ url: "/apple-touch-icon.png" },
],
},
-
+
manifest: "/site.webmanifest",
-
+
...(noIndex && {
robots: {
index: false,
@@ -123,4 +125,38 @@ export function constructMetadata({
},
}),
};
+}
+
+/**
+ * Generate a canonical URL automatically from the current request
+ * @returns The full canonical URL for the current page (without locale prefix)
+ */
+export async function generateCanonical(): Promise {
+ const headersList = await headers();
+ const serverUrl = siteConfig.url;
+
+ // Try to get the pathname from various headers
+ const pathname =
+ headersList.get("x-pathname") ||
+ headersList.get("x-invoke-path") ||
+ headersList.get("referer")?.replace(serverUrl, "") ||
+ "/";
+
+ // Clean up the pathname
+ const cleanPath = pathname.split("?")[0] || "/"; // Remove query params
+ const normalizedPath = cleanPath.startsWith("/") ? cleanPath : `/${cleanPath}`;
+
+ // Remove locale prefix from path
+ const segments = normalizedPath.split("/").filter(Boolean);
+ const hasLocalePrefix = locales.includes(segments[0]);
+ const pathWithoutLocale = hasLocalePrefix
+ ? `/${segments.slice(1).join("/")}`
+ : normalizedPath;
+
+ // Combine and clean up double slashes
+ const canonical = `${serverUrl}${pathWithoutLocale}`
+ .replace(/([^:]\/)\/+/g, "$1") // Remove double slashes except after protocol
+ .replace(/\/$/, ""); // Remove trailing slash
+
+ return canonical || serverUrl;
}
\ No newline at end of file
diff --git a/apps/web/src/locales/README.md b/apps/web/src/locales/README.md
index c1d2bb150..92c1bad7b 100644
--- a/apps/web/src/locales/README.md
+++ b/apps/web/src/locales/README.md
@@ -100,3 +100,4 @@ export default async function ProjectPage({ params }: { params: Promise<{ id: st
- Keep keys in English: `greeting`, not `salutation`
- Use interpolation for dynamic values: `"Hello, {name}!"`
- HTML is supported with `dangerouslySetInnerHTML`: `"Visit Paris"`
+- Avoid title case in translations: `"Our services"` (not `"Our Services"`)
diff --git a/apps/web/src/locales/en/layout/footer.json b/apps/web/src/locales/en/layout/footer.json
index 946ef55e4..b636a3108 100644
--- a/apps/web/src/locales/en/layout/footer.json
+++ b/apps/web/src/locales/en/layout/footer.json
@@ -5,7 +5,7 @@
"navigation": "Navigation",
"resources": "Resources",
"other": "Other",
- "social": "Social Media"
+ "social": "Social media"
},
"links": {
"services": "Our services",
@@ -21,5 +21,10 @@
"privacy": "Privacy policy",
"company": "Company details"
},
- "status": "All services are operational"
+ "status": "All services are operational",
+ "language": {
+ "label": "Language",
+ "en": "English",
+ "fr": "Français"
+ }
}
diff --git a/apps/web/src/locales/en/layout/navbar.json b/apps/web/src/locales/en/layout/navbar.json
index 4e6271de3..6ed155471 100644
--- a/apps/web/src/locales/en/layout/navbar.json
+++ b/apps/web/src/locales/en/layout/navbar.json
@@ -15,9 +15,9 @@
"title": "Our portfolio",
"description": "Discover all our projects and achievements across various sectors",
"categories": {
- "web-mobile": "Web & Mobile Apps",
- "open-source": "Open Source Projects",
- "design": "UI/UX Design"
+ "web-mobile": "Web & mobile apps",
+ "open-source": "Open source projects",
+ "design": "UI/UX design"
},
"cta": "View all projects"
},
diff --git a/apps/web/src/locales/fr/layout/footer.json b/apps/web/src/locales/fr/layout/footer.json
index 1596a2171..0161ecff7 100644
--- a/apps/web/src/locales/fr/layout/footer.json
+++ b/apps/web/src/locales/fr/layout/footer.json
@@ -21,5 +21,10 @@
"privacy": "Politique de confidentialité",
"company": "Détails de l'entreprise"
},
- "status": "Tous les services sont opérationnels"
+ "status": "Tous les services sont opérationnels",
+ "language": {
+ "label": "Langue",
+ "en": "English",
+ "fr": "Français"
+ }
}
diff --git a/apps/web/src/mdx-components.tsx b/apps/web/src/mdx-components.tsx
index 06ebdaea3..03a0e352f 100644
--- a/apps/web/src/mdx-components.tsx
+++ b/apps/web/src/mdx-components.tsx
@@ -1,5 +1,5 @@
import type { MDXComponents } from "mdx/types"
-import Link from "next/link"
+import { Link } from "@onruntime/translations/next"
export function useMDXComponents(components: MDXComponents): MDXComponents {
return {
diff --git a/apps/web/src/proxy.ts b/apps/web/src/proxy.ts
index ec93d425f..f4f2d83ee 100644
--- a/apps/web/src/proxy.ts
+++ b/apps/web/src/proxy.ts
@@ -3,7 +3,16 @@ import type { NextRequest } from "next/server";
import { locales, defaultLocale } from "@/lib/translations";
+const LOCALE_COOKIE = "NEXT_LOCALE";
+
function getPreferredLocale(request: NextRequest): string {
+ // Check cookie first (user's explicit choice)
+ const cookieLocale = request.cookies.get(LOCALE_COOKIE)?.value;
+ if (cookieLocale && locales.includes(cookieLocale)) {
+ return cookieLocale;
+ }
+
+ // Fall back to Accept-Language header
const acceptLanguage = request.headers.get("accept-language");
if (!acceptLanguage) return defaultLocale;
diff --git a/apps/web/src/screens/marketing/careers/index.tsx b/apps/web/src/screens/marketing/careers/index.tsx
index 4ef56b87f..385b8903a 100644
--- a/apps/web/src/screens/marketing/careers/index.tsx
+++ b/apps/web/src/screens/marketing/careers/index.tsx
@@ -15,7 +15,7 @@ import {
Search,
Users,
} from "lucide-react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Routes from "@/constants/routes";
import JobList from "./job-list";
import { JobPosting } from "@/types/job";
diff --git a/apps/web/src/screens/marketing/careers/job-details.tsx b/apps/web/src/screens/marketing/careers/job-details.tsx
index cd3ef4cb2..d0f784374 100644
--- a/apps/web/src/screens/marketing/careers/job-details.tsx
+++ b/apps/web/src/screens/marketing/careers/job-details.tsx
@@ -15,7 +15,7 @@ import {
MapPin,
Share2,
} from "lucide-react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
import JobContent from "@/components/ui/job-content";
diff --git a/apps/web/src/screens/marketing/careers/job-list.tsx b/apps/web/src/screens/marketing/careers/job-list.tsx
index d8ae08a3b..febb00359 100644
--- a/apps/web/src/screens/marketing/careers/job-list.tsx
+++ b/apps/web/src/screens/marketing/careers/job-list.tsx
@@ -3,7 +3,7 @@ import { JobPosting } from "@/types/job";
import { Badge } from "@/components/ui/badge";
import { CalendarDays, Clock, MapPin } from "lucide-react";
import { Button } from "@/components/ui/button";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import { formatDate } from "@/lib/utils/date";
interface JobListProps {
diff --git a/apps/web/src/screens/marketing/npo/index.tsx b/apps/web/src/screens/marketing/npo/index.tsx
index 28b829a1c..8013f6a13 100644
--- a/apps/web/src/screens/marketing/npo/index.tsx
+++ b/apps/web/src/screens/marketing/npo/index.tsx
@@ -17,7 +17,7 @@ import {
Users,
} from "lucide-react";
import Image from "next/image";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Routes from "@/constants/routes";
import { OrganizationSchema } from "@/components/json-ld/organization-schema";
import { roleToDisplay, TeamRole } from "@/types/team-member";
diff --git a/apps/web/src/screens/marketing/projects/details/index.tsx b/apps/web/src/screens/marketing/projects/details/index.tsx
index d9c06ce53..b7c129290 100644
--- a/apps/web/src/screens/marketing/projects/details/index.tsx
+++ b/apps/web/src/screens/marketing/projects/details/index.tsx
@@ -4,7 +4,7 @@ import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
import Safari from "@/components/ui/safari";
import { Button } from "@/components/ui/button";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Image from "next/image";
import { Badge } from "@/components/ui/badge";
import {
diff --git a/apps/web/src/screens/marketing/services/index.tsx b/apps/web/src/screens/marketing/services/index.tsx
index dc6c4266f..08ee3db3d 100644
--- a/apps/web/src/screens/marketing/services/index.tsx
+++ b/apps/web/src/screens/marketing/services/index.tsx
@@ -3,7 +3,7 @@ import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
import { ArrowRight, LucideIcon } from "lucide-react";
-import Link from "next/link";
+import { Link } from "@onruntime/translations/next";
import Routes from "@/constants/routes";
import Services from "@/constants/services";
import ProjectTimeline from './timeline';
diff --git a/examples/translations/next-app/proxy.ts b/examples/translations/next-app/proxy.ts
index 6d4e25f79..79801dab4 100644
--- a/examples/translations/next-app/proxy.ts
+++ b/examples/translations/next-app/proxy.ts
@@ -3,7 +3,16 @@ import type { NextRequest } from "next/server";
import { locales, defaultLocale } from "@/lib/translations";
+const LOCALE_COOKIE = "NEXT_LOCALE";
+
function getPreferredLocale(request: NextRequest): string {
+ // Check cookie first (user's explicit choice)
+ const cookieLocale = request.cookies.get(LOCALE_COOKIE)?.value;
+ if (cookieLocale && locales.includes(cookieLocale)) {
+ return cookieLocale;
+ }
+
+ // Fall back to Accept-Language header
const acceptLanguage = request.headers.get("accept-language");
if (!acceptLanguage) return defaultLocale;
diff --git a/packages/translations/README.md b/packages/translations/README.md
index 843b1d243..bff195fda 100644
--- a/packages/translations/README.md
+++ b/packages/translations/README.md
@@ -58,7 +58,7 @@ export const getTranslation = async (namespace = "common") => {
#### 2. Setup proxy
-The proxy detects the user's language from `Accept-Language` header and sets an `x-locale` header for server components.
+The proxy detects the user's language from a `NEXT_LOCALE` cookie (set when user changes language) or falls back to `Accept-Language` header.
```typescript
// proxy.ts
@@ -67,7 +67,16 @@ import type { NextRequest } from "next/server";
import { locales, defaultLocale } from "@/lib/translations";
+const LOCALE_COOKIE = "NEXT_LOCALE";
+
function getPreferredLocale(request: NextRequest): string {
+ // Check cookie first (user's explicit choice)
+ const cookieLocale = request.cookies.get(LOCALE_COOKIE)?.value;
+ if (cookieLocale && locales.includes(cookieLocale)) {
+ return cookieLocale;
+ }
+
+ // Fall back to Accept-Language header
const acceptLanguage = request.headers.get("accept-language");
if (!acceptLanguage) return defaultLocale;
diff --git a/packages/translations/src/next/app-provider.tsx b/packages/translations/src/next/app-provider.tsx
deleted file mode 100644
index db7790bfa..000000000
--- a/packages/translations/src/next/app-provider.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-"use client";
-
-import { type ReactNode, useMemo } from "react";
-import { useRouter, usePathname } from "next/navigation";
-
-import type { TranslationLoader } from "../core/types";
-import { TranslationContext } from "../react/contexts/translation-context";
-
-export type AppTranslationProviderProps = {
- children: ReactNode;
- locale: string;
- locales: readonly string[];
- defaultLocale?: string;
- load: TranslationLoader;
- keySplit?: boolean;
-};
-
-/**
- * Translation provider for Next.js App Router
- * Locale is passed from route params [lang]
- */
-export const AppTranslationProvider = ({
- children,
- locale,
- locales,
- defaultLocale,
- load,
- keySplit = true,
-}: AppTranslationProviderProps) => {
- if (locales.length === 0) {
- throw new Error("AppTranslationProvider: locales array must not be empty");
- }
-
- const router = useRouter();
- const pathname = usePathname();
-
- const value = useMemo(
- () => ({
- locale,
- locales,
- defaultLocale: defaultLocale ?? locales[0],
- setLocale: (newLocale: string) => {
- const segments = pathname.split("/");
- segments[1] = newLocale;
- router.push(segments.join("/"));
- },
- load,
- keySplit,
- }),
- [locale, locales, defaultLocale, pathname, router, load, keySplit],
- );
-
- return (
-
- {children}
-
- );
-};
diff --git a/packages/translations/src/next/link.tsx b/packages/translations/src/next/components/link.tsx
similarity index 95%
rename from packages/translations/src/next/link.tsx
rename to packages/translations/src/next/components/link.tsx
index 4f8e99b57..88162b563 100644
--- a/packages/translations/src/next/link.tsx
+++ b/packages/translations/src/next/components/link.tsx
@@ -3,7 +3,7 @@
import NextLink from "next/link";
import type { ComponentProps } from "react";
-import { useTranslationContext } from "../react/hooks/use-translation-context";
+import { useTranslationContext } from "../../react/hooks/use-translation-context";
export type LinkProps = ComponentProps;
diff --git a/packages/translations/src/next/contexts/app-context.tsx b/packages/translations/src/next/contexts/app-context.tsx
new file mode 100644
index 000000000..78fae2a32
--- /dev/null
+++ b/packages/translations/src/next/contexts/app-context.tsx
@@ -0,0 +1,89 @@
+"use client";
+
+import { type ReactNode, useMemo, useCallback } from "react";
+import { useRouter, usePathname } from "next/navigation";
+
+import type { TranslationLoader } from "../../core/types";
+import { TranslationContext } from "../../react/contexts/translation-context";
+
+export type AppTranslationProviderProps = {
+ children: ReactNode;
+ locale: string;
+ locales: readonly string[];
+ defaultLocale?: string;
+ load: TranslationLoader;
+ keySplit?: boolean;
+};
+
+/**
+ * Translation provider for Next.js App Router
+ * Locale is passed from route params [lang]
+ */
+export const AppTranslationProvider = ({
+ children,
+ locale,
+ locales,
+ defaultLocale,
+ load,
+ keySplit = true,
+}: AppTranslationProviderProps) => {
+ if (locales.length === 0) {
+ throw new Error("AppTranslationProvider: locales array must not be empty");
+ }
+
+ const router = useRouter();
+ const pathname = usePathname();
+
+ const resolvedDefaultLocale = defaultLocale ?? locales[0];
+
+ const setLocale = useCallback(
+ (newLocale: string) => {
+ // Set cookie to remember user's choice
+ document.cookie = `NEXT_LOCALE=${newLocale};path=/;max-age=31536000`;
+
+ const segments = pathname.split("/");
+ const hasLocalePrefix = locales.includes(segments[1]);
+
+ if (hasLocalePrefix) {
+ // URL has locale prefix (e.g., /fr/about) - replace it
+ if (newLocale === resolvedDefaultLocale) {
+ // Going to default locale - remove prefix
+ segments.splice(1, 1);
+ } else {
+ // Going to non-default locale - replace prefix
+ segments[1] = newLocale;
+ }
+ } else {
+ // URL has no locale prefix (e.g., /about) - we're on default locale
+ if (newLocale !== resolvedDefaultLocale) {
+ // Going to non-default locale - add prefix
+ segments.splice(1, 0, newLocale);
+ }
+ // If staying on default locale, no change needed
+ }
+
+ const newPath = segments.join("/") || "/";
+
+ router.push(newPath, { scroll: false });
+ },
+ [pathname, locales, resolvedDefaultLocale, router],
+ );
+
+ const value = useMemo(
+ () => ({
+ locale,
+ locales,
+ defaultLocale: resolvedDefaultLocale,
+ setLocale,
+ load,
+ keySplit,
+ }),
+ [locale, locales, resolvedDefaultLocale, setLocale, load, keySplit],
+ );
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/packages/translations/src/next/provider.tsx b/packages/translations/src/next/contexts/pages-context.tsx
similarity index 54%
rename from packages/translations/src/next/provider.tsx
rename to packages/translations/src/next/contexts/pages-context.tsx
index 14f0c4c6c..4da466b46 100644
--- a/packages/translations/src/next/provider.tsx
+++ b/packages/translations/src/next/contexts/pages-context.tsx
@@ -1,10 +1,10 @@
"use client";
-import { type ReactNode, useMemo } from "react";
+import { type ReactNode, useMemo, useCallback } from "react";
import { useRouter } from "next/router";
-import type { TranslationLoader } from "../core/types";
-import { TranslationContext } from "../react/contexts/translation-context";
+import type { TranslationLoader } from "../../core/types";
+import { TranslationContext } from "../../react/contexts/translation-context";
export type NextTranslationProviderProps = {
children: ReactNode;
@@ -13,7 +13,7 @@ export type NextTranslationProviderProps = {
};
/**
- * Translation provider for Next.js applications
+ * Translation provider for Next.js Pages Router
* Automatically uses locale info from Next.js router
*/
export const NextTranslationProvider = ({
@@ -26,18 +26,28 @@ export const NextTranslationProvider = ({
const locales = router.locales ?? ["en"];
const defaultLocale = router.defaultLocale ?? "en";
+ const setLocale = useCallback(
+ (newLocale: string) => {
+ // Set cookie to remember user's choice
+ document.cookie = `NEXT_LOCALE=${newLocale};path=/;max-age=31536000`;
+ router.push(router.pathname, router.asPath, {
+ locale: newLocale,
+ scroll: false,
+ });
+ },
+ [router],
+ );
+
const value = useMemo(
() => ({
locale,
locales,
defaultLocale,
- setLocale: (newLocale: string) => {
- router.push(router.pathname, router.asPath, { locale: newLocale });
- },
+ setLocale,
load,
keySplit,
}),
- [locale, locales, defaultLocale, router, load, keySplit],
+ [locale, locales, defaultLocale, setLocale, load, keySplit],
);
return (
diff --git a/packages/translations/src/next/hooks/use-pathname.ts b/packages/translations/src/next/hooks/use-pathname.ts
new file mode 100644
index 000000000..04b913876
--- /dev/null
+++ b/packages/translations/src/next/hooks/use-pathname.ts
@@ -0,0 +1,19 @@
+"use client";
+
+import { usePathname as useNextPathname } from "next/navigation";
+
+import { useTranslationContext } from "../../react/hooks/use-translation-context";
+
+/**
+ * Hook that returns the pathname without the locale prefix.
+ * Wraps Next.js usePathname and strips locale from path.
+ */
+export const usePathname = () => {
+ const pathname = useNextPathname();
+ const { locales } = useTranslationContext();
+
+ const segments = pathname.split("/").filter(Boolean);
+ const hasLocalePrefix = locales.includes(segments[0]);
+
+ return hasLocalePrefix ? `/${segments.slice(1).join("/")}` : pathname;
+};
diff --git a/packages/translations/src/next/index.ts b/packages/translations/src/next/index.ts
index 9431dc7bf..a31a23b39 100644
--- a/packages/translations/src/next/index.ts
+++ b/packages/translations/src/next/index.ts
@@ -1,14 +1,16 @@
-// Pages Router
+// Contexts
export {
NextTranslationProvider as TranslationProvider,
type NextTranslationProviderProps as TranslationProviderProps,
-} from "./provider";
+} from "./contexts/pages-context";
-// App Router
export {
AppTranslationProvider,
type AppTranslationProviderProps,
-} from "./app-provider";
+} from "./contexts/app-context";
// Components
-export { Link, type LinkProps } from "./link";
+export { Link, type LinkProps } from "./components/link";
+
+// Hooks
+export { usePathname } from "./hooks/use-pathname";
From 3cb5f43eece959293fd160eae1bde1473a4e7468 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Sun, 28 Dec 2025 19:56:39 +0100
Subject: [PATCH 07/64] =?UTF-8?q?=F0=9F=8C=90=20add=20home=20page=20transl?=
=?UTF-8?q?ations?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../app/[locale]/(landing)/customer/page.ts | 6 ++-
apps/web/src/app/[locale]/(landing)/page.ts | 6 ++-
.../landing/customer/featured/index.tsx | 26 +++++-----
.../marketing/landing/page-switcher/index.tsx | 6 ++-
.../landing/visitor/featured/index.tsx | 31 +++++-------
.../visitor/featured/partners/index.tsx | 7 ++-
.../landing/visitor/projects/index.tsx | 8 ++-
.../landing/visitor/team/grid/card/index.tsx | 9 +++-
.../marketing/landing/visitor/team/index.tsx | 20 ++++----
apps/web/src/locales/README.md | 49 +++++++------------
.../locales/en/app/landing/customer/page.json | 6 +++
apps/web/src/locales/en/app/landing/page.json | 6 +++
.../marketing/landing/customer/featured.json | 8 +++
.../marketing/landing/page-switcher.json | 4 ++
.../marketing/landing/visitor/featured.json | 12 +++++
.../marketing/landing/visitor/projects.json | 4 ++
.../marketing/landing/visitor/team.json | 13 +++++
.../locales/fr/app/landing/customer/page.json | 6 +++
apps/web/src/locales/fr/app/landing/page.json | 6 +++
.../marketing/landing/customer/featured.json | 8 +++
.../marketing/landing/page-switcher.json | 4 ++
.../marketing/landing/visitor/featured.json | 12 +++++
.../marketing/landing/visitor/projects.json | 4 ++
.../marketing/landing/visitor/team.json | 13 +++++
24 files changed, 191 insertions(+), 83 deletions(-)
create mode 100644 apps/web/src/locales/en/app/landing/customer/page.json
create mode 100644 apps/web/src/locales/en/app/landing/page.json
create mode 100644 apps/web/src/locales/en/components/marketing/landing/customer/featured.json
create mode 100644 apps/web/src/locales/en/components/marketing/landing/page-switcher.json
create mode 100644 apps/web/src/locales/en/components/marketing/landing/visitor/featured.json
create mode 100644 apps/web/src/locales/en/components/marketing/landing/visitor/projects.json
create mode 100644 apps/web/src/locales/en/components/marketing/landing/visitor/team.json
create mode 100644 apps/web/src/locales/fr/app/landing/customer/page.json
create mode 100644 apps/web/src/locales/fr/app/landing/page.json
create mode 100644 apps/web/src/locales/fr/components/marketing/landing/customer/featured.json
create mode 100644 apps/web/src/locales/fr/components/marketing/landing/page-switcher.json
create mode 100644 apps/web/src/locales/fr/components/marketing/landing/visitor/featured.json
create mode 100644 apps/web/src/locales/fr/components/marketing/landing/visitor/projects.json
create mode 100644 apps/web/src/locales/fr/components/marketing/landing/visitor/team.json
diff --git a/apps/web/src/app/[locale]/(landing)/customer/page.ts b/apps/web/src/app/[locale]/(landing)/customer/page.ts
index 1c18676d0..3d92132eb 100644
--- a/apps/web/src/app/[locale]/(landing)/customer/page.ts
+++ b/apps/web/src/app/[locale]/(landing)/customer/page.ts
@@ -1,10 +1,12 @@
import { constructMetadata } from "@/lib/utils/metadata";
+import { getTranslation } from "@/lib/translations.server";
import CustomerLanding from "@/screens/marketing/landing/customer";
export async function generateMetadata() {
+ const { t } = await getTranslation("app/landing/customer/page");
return constructMetadata({
- title: "Solutions digitales professionnelles pour votre entreprise",
- description: "Votre partenaire digital pour le développement web, mobile et design UI/UX. Notre agence crée des solutions sur mesure qui répondent à vos objectifs commerciaux.",
+ title: t("metadata.title"),
+ description: t("metadata.description"),
});
}
diff --git a/apps/web/src/app/[locale]/(landing)/page.ts b/apps/web/src/app/[locale]/(landing)/page.ts
index 3660aac71..128c3398d 100644
--- a/apps/web/src/app/[locale]/(landing)/page.ts
+++ b/apps/web/src/app/[locale]/(landing)/page.ts
@@ -1,10 +1,12 @@
import { constructMetadata } from "@/lib/utils/metadata";
+import { getTranslation } from "@/lib/translations.server";
import VisitorLanding from "@/screens/marketing/landing/visitor";
export async function generateMetadata() {
+ const { t } = await getTranslation("app/landing/page");
return constructMetadata({
- title: "Agence web de développement et design UI/UX à Paris et Rouen",
- description: "Agence digitale spécialisée en développement web, mobile et design UI/UX. Notre équipe d'experts transforme vos idées en solutions digitales performantes.",
+ title: t("metadata.title"),
+ description: t("metadata.description"),
});
}
diff --git a/apps/web/src/components/marketing/landing/customer/featured/index.tsx b/apps/web/src/components/marketing/landing/customer/featured/index.tsx
index 2effdb248..37318eaf4 100644
--- a/apps/web/src/components/marketing/landing/customer/featured/index.tsx
+++ b/apps/web/src/components/marketing/landing/customer/featured/index.tsx
@@ -6,33 +6,37 @@ import { cn } from "@/lib/utils";
import { Link } from "@onruntime/translations/next";
import React from "react";
import Balancer from "react-wrap-balancer";
+import { getTranslation } from "@/lib/translations.server";
+
+const Featured: React.FC = async () => {
+ const { t } = await getTranslation("components/marketing/landing/customer/featured");
-const Featured: React.FC = () => {
return (
- {"Vous méritez "}
- le meilleur
- {" pour votre projet."}
+ {t("title").split("")[0]}
+
+ {t("title").split("")[1]?.split("")[0]}
+
+ {t("title").split("")[1]}
-
- Parce que le meilleur c’est nous, onRuntime Studio,
- votre allié pour réaliser cet objectif grâce à nos équipes de
- passionnés.
-
+
-
+
-
+
diff --git a/apps/web/src/components/marketing/landing/page-switcher/index.tsx b/apps/web/src/components/marketing/landing/page-switcher/index.tsx
index e326dc09d..7e4a14b31 100644
--- a/apps/web/src/components/marketing/landing/page-switcher/index.tsx
+++ b/apps/web/src/components/marketing/landing/page-switcher/index.tsx
@@ -4,9 +4,11 @@ import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
import Routes from "@/constants/routes";
import { Link, usePathname } from "@onruntime/translations/next";
import React from "react";
+import { useTranslation } from "@onruntime/translations/react";
const PageSwitcher: React.FC = () => {
const pathname = usePathname();
+ const { t } = useTranslation("components/marketing/landing/page-switcher");
return (
@@ -18,13 +20,13 @@ const PageSwitcher: React.FC = () => {
- Je suis un potentiel client
+ {t("customer")}
- Je suis un simple visiteur
+ {t("visitor")}
diff --git a/apps/web/src/components/marketing/landing/visitor/featured/index.tsx b/apps/web/src/components/marketing/landing/visitor/featured/index.tsx
index fe15f9c67..a0b623d4e 100644
--- a/apps/web/src/components/marketing/landing/visitor/featured/index.tsx
+++ b/apps/web/src/components/marketing/landing/visitor/featured/index.tsx
@@ -8,37 +8,38 @@ import { OnRuntimeWordMark } from "@/logos/components";
import Balancer from "react-wrap-balancer";
import Routes from "@/constants/routes";
import { Link } from "@onruntime/translations/next";
+import { getTranslation } from "@/lib/translations.server";
+
+const Featured: React.FC = async () => {
+ const { t } = await getTranslation("components/marketing/landing/visitor/featured");
-const Featured: React.FC = () => {
return (
- La machine à rêves,{" "}
+ {t("title").split("")[0]}
- onRuntime Studio
+ {t("title").split("")[1]?.split("")[0]}
- .
+ {t("title").split("")[1]}
- Une communauté dynamique de créateurs : développeurs, designers et
- artistes de divers horizons, unis par l'innovation et la
- créativité.
+ {t("description")}
- À la base, nous sommes passionnés par le développement web et le
- développement en général depuis plus de 6 ans. Nous sommes très
- intéressés par les nouvelles technologies et le monde de la
- création (design, musique, etc.). À partir de là nous avons créé
- un Studio et une communauté autour de celui-ci, nous adorons
- nous retrouver autour d'une tasse de café ☕️ pour
- discuter, jouer et surtout créer des projets.
+ {t("testimonial")}
- Une équipe de créatifs passionnés pour briller.
+ {t("title")}
- Composée de talents variés, allant de développeurs à des designers
- passionnés. Chacun apporte sa touche unique à nos projets. Ensemble,
- nous formons un collectif où l'innovation est au cœur de tout ce que
- nous entreprenons.
+ {t("description")}
@@ -54,7 +54,7 @@ const Team: React.FC = () => {
-
+
diff --git a/apps/web/src/locales/README.md b/apps/web/src/locales/README.md
index 92c1bad7b..02baf0658 100644
--- a/apps/web/src/locales/README.md
+++ b/apps/web/src/locales/README.md
@@ -4,6 +4,8 @@ Translation files for the onRuntime website.
## Structure
+The translation files mirror the `app/` and `components/` structure:
+
```
locales/
├── en/
@@ -11,38 +13,21 @@ locales/
│ ├── layout/
│ │ ├── footer.json
│ │ └── navbar.json
-│ └── marketing/
-│ ├── landing/
-│ │ ├── common.json
-│ │ ├── customer.json
-│ │ └── visitor.json
-│ ├── services/
-│ │ ├── common.json
-│ │ ├── backend/
-│ │ │ ├── common.json
-│ │ │ └── [service].json
-│ │ ├── design/
-│ │ │ └── ...
-│ │ ├── frontend/
-│ │ │ └── ...
-│ │ └── integration/
-│ │ └── ...
-│ ├── projects/
-│ │ ├── common.json
-│ │ └── [project].json
-│ ├── agency/
-│ │ ├── common.json
-│ │ └── [city].json
-│ ├── careers/
-│ │ └── common.json
-│ ├── contact.json
-│ ├── glossary/
-│ │ └── common.json
-│ ├── legal/
-│ │ ├── company.json
-│ │ ├── privacy.json
-│ │ └── terms.json
-│ └── npo.json
+│ ├── app/
+│ │ └── landing/
+│ │ ├── page.json # → app/[locale]/(landing)/page.ts
+│ │ └── customer/
+│ │ └── page.json # → app/[locale]/(landing)/customer/page.ts
+│ └── components/
+│ └── marketing/
+│ └── landing/
+│ ├── page-switcher.json
+│ ├── visitor/
+│ │ ├── featured.json
+│ │ ├── team.json
+│ │ └── projects.json
+│ └── customer/
+│ └── featured.json
└── fr/
└── ...
```
diff --git a/apps/web/src/locales/en/app/landing/customer/page.json b/apps/web/src/locales/en/app/landing/customer/page.json
new file mode 100644
index 000000000..6a8eb4252
--- /dev/null
+++ b/apps/web/src/locales/en/app/landing/customer/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Professional digital solutions for your business",
+ "description": "Your digital partner for web, mobile development and UI/UX design. Our agency creates tailored solutions that meet your business objectives."
+ }
+}
diff --git a/apps/web/src/locales/en/app/landing/page.json b/apps/web/src/locales/en/app/landing/page.json
new file mode 100644
index 000000000..28248daf9
--- /dev/null
+++ b/apps/web/src/locales/en/app/landing/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Web development and UI/UX design agency in Paris and Rouen",
+ "description": "Digital agency specialized in web, mobile development and UI/UX design. Our team of experts transforms your ideas into high-performance digital solutions."
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/landing/customer/featured.json b/apps/web/src/locales/en/components/marketing/landing/customer/featured.json
new file mode 100644
index 000000000..01ea597a1
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/landing/customer/featured.json
@@ -0,0 +1,8 @@
+{
+ "title": "You deserve the best for your project.",
+ "description": "Because the best is us, onRuntime Studio, your ally to achieve this goal thanks to our passionate teams.",
+ "cta": {
+ "book": "Book a service",
+ "work": "View our work"
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/landing/page-switcher.json b/apps/web/src/locales/en/components/marketing/landing/page-switcher.json
new file mode 100644
index 000000000..6cc687bd8
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/landing/page-switcher.json
@@ -0,0 +1,4 @@
+{
+ "customer": "I am a potential client",
+ "visitor": "I am a simple visitor"
+}
diff --git a/apps/web/src/locales/en/components/marketing/landing/visitor/featured.json b/apps/web/src/locales/en/components/marketing/landing/visitor/featured.json
new file mode 100644
index 000000000..608e7989d
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/landing/visitor/featured.json
@@ -0,0 +1,12 @@
+{
+ "title": "The dream machine, onRuntime Studio.",
+ "description": "A dynamic community of creators: developers, designers and artists from diverse backgrounds, united by innovation and creativity.",
+ "cta": {
+ "book": "Book a service",
+ "work": "View our work"
+ },
+ "image-alt": "onRuntime Studio team",
+ "quote-alt": "stylized quote",
+ "testimonial": "At the core, we've been passionate about web development and development in general for over 6 years. We're very interested in new technologies and the world of creation (design, music, etc.). From there, we created a Studio and a community around it. We love getting together over a cup of coffee ☕️ to discuss, play, and especially create projects.",
+ "partners": "They support us"
+}
diff --git a/apps/web/src/locales/en/components/marketing/landing/visitor/projects.json b/apps/web/src/locales/en/components/marketing/landing/visitor/projects.json
new file mode 100644
index 000000000..c2b49aa4e
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/landing/visitor/projects.json
@@ -0,0 +1,4 @@
+{
+ "title": "Our latest projects",
+ "cta": "View all projects"
+}
diff --git a/apps/web/src/locales/en/components/marketing/landing/visitor/team.json b/apps/web/src/locales/en/components/marketing/landing/visitor/team.json
new file mode 100644
index 000000000..dd7a30169
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/landing/visitor/team.json
@@ -0,0 +1,13 @@
+{
+ "title": "A team of passionate creatives to shine.",
+ "description": "Composed of varied talents, from developers to passionate designers. Each brings their unique touch to our projects. Together, we form a collective where innovation is at the heart of everything we do.",
+ "stats": {
+ "experience": "Years of experience",
+ "projects": "Projects completed",
+ "clients": "Satisfied clients"
+ },
+ "cta": "Learn more",
+ "card": {
+ "details": "Details"
+ }
+}
diff --git a/apps/web/src/locales/fr/app/landing/customer/page.json b/apps/web/src/locales/fr/app/landing/customer/page.json
new file mode 100644
index 000000000..9661aba0c
--- /dev/null
+++ b/apps/web/src/locales/fr/app/landing/customer/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Solutions digitales professionnelles pour votre entreprise",
+ "description": "Votre partenaire digital pour le développement web, mobile et design UI/UX. Notre agence crée des solutions sur mesure qui répondent à vos objectifs commerciaux."
+ }
+}
diff --git a/apps/web/src/locales/fr/app/landing/page.json b/apps/web/src/locales/fr/app/landing/page.json
new file mode 100644
index 000000000..730e80f6c
--- /dev/null
+++ b/apps/web/src/locales/fr/app/landing/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Agence web de développement et design UI/UX à Paris et Rouen",
+ "description": "Agence digitale spécialisée en développement web, mobile et design UI/UX. Notre équipe d'experts transforme vos idées en solutions digitales performantes."
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/landing/customer/featured.json b/apps/web/src/locales/fr/components/marketing/landing/customer/featured.json
new file mode 100644
index 000000000..748bce01e
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/landing/customer/featured.json
@@ -0,0 +1,8 @@
+{
+ "title": "Vous méritez le meilleur pour votre projet.",
+ "description": "Parce que le meilleur c'est nous, onRuntime Studio, votre allié pour réaliser cet objectif grâce à nos équipes de passionnés.",
+ "cta": {
+ "book": "Réserver une prestation",
+ "work": "Voir notre travail"
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/landing/page-switcher.json b/apps/web/src/locales/fr/components/marketing/landing/page-switcher.json
new file mode 100644
index 000000000..663be13df
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/landing/page-switcher.json
@@ -0,0 +1,4 @@
+{
+ "customer": "Je suis un potentiel client",
+ "visitor": "Je suis un simple visiteur"
+}
diff --git a/apps/web/src/locales/fr/components/marketing/landing/visitor/featured.json b/apps/web/src/locales/fr/components/marketing/landing/visitor/featured.json
new file mode 100644
index 000000000..74670b17d
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/landing/visitor/featured.json
@@ -0,0 +1,12 @@
+{
+ "title": "La machine à rêves, onRuntime Studio.",
+ "description": "Une communauté dynamique de créateurs : développeurs, designers et artistes de divers horizons, unis par l'innovation et la créativité.",
+ "cta": {
+ "book": "Réserver une prestation",
+ "work": "Voir notre travail"
+ },
+ "image-alt": "Équipe onRuntime Studio",
+ "quote-alt": "guillemet stylisé",
+ "testimonial": "À la base, nous sommes passionnés par le développement web et le développement en général depuis plus de 6 ans. Nous sommes très intéressés par les nouvelles technologies et le monde de la création (design, musique, etc.). À partir de là nous avons créé un Studio et une communauté autour de celui-ci, nous adorons nous retrouver autour d'une tasse de café ☕️ pour discuter, jouer et surtout créer des projets.",
+ "partners": "Ils nous accompagnent"
+}
diff --git a/apps/web/src/locales/fr/components/marketing/landing/visitor/projects.json b/apps/web/src/locales/fr/components/marketing/landing/visitor/projects.json
new file mode 100644
index 000000000..7ed8ada03
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/landing/visitor/projects.json
@@ -0,0 +1,4 @@
+{
+ "title": "Nos derniers projets",
+ "cta": "Voir tous les projets"
+}
diff --git a/apps/web/src/locales/fr/components/marketing/landing/visitor/team.json b/apps/web/src/locales/fr/components/marketing/landing/visitor/team.json
new file mode 100644
index 000000000..ae56dbb8c
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/landing/visitor/team.json
@@ -0,0 +1,13 @@
+{
+ "title": "Une équipe de créatifs passionnés pour briller.",
+ "description": "Composée de talents variés, allant de développeurs à des designers passionnés. Chacun apporte sa touche unique à nos projets. Ensemble, nous formons un collectif où l'innovation est au cœur de tout ce que nous entreprenons.",
+ "stats": {
+ "experience": "Années d'expérience",
+ "projects": "Projets réalisés",
+ "clients": "Clients satisfaits"
+ },
+ "cta": "En savoir plus",
+ "card": {
+ "details": "Détails"
+ }
+}
From fdd64c3fcd602661fd6334d3ec9ab97cdbaabda1 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Sun, 28 Dec 2025 20:20:36 +0100
Subject: [PATCH 08/64] =?UTF-8?q?=F0=9F=8C=90=20add=20npo=20page=20transla?=
=?UTF-8?q?tions?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/npo/page.tsx | 6 +-
.../marketing/npo/donations/index.tsx | 54 +++--
apps/web/src/locales/en/app/npo/page.json | 6 +
.../components/marketing/npo/donations.json | 19 ++
.../src/locales/en/screens/marketing/npo.json | 113 ++++++++++
apps/web/src/locales/fr/app/npo/page.json | 6 +
.../components/marketing/npo/donations.json | 19 ++
.../src/locales/fr/screens/marketing/npo.json | 113 ++++++++++
apps/web/src/screens/marketing/npo/index.tsx | 207 ++++++------------
9 files changed, 380 insertions(+), 163 deletions(-)
create mode 100644 apps/web/src/locales/en/app/npo/page.json
create mode 100644 apps/web/src/locales/en/components/marketing/npo/donations.json
create mode 100644 apps/web/src/locales/en/screens/marketing/npo.json
create mode 100644 apps/web/src/locales/fr/app/npo/page.json
create mode 100644 apps/web/src/locales/fr/components/marketing/npo/donations.json
create mode 100644 apps/web/src/locales/fr/screens/marketing/npo.json
diff --git a/apps/web/src/app/[locale]/npo/page.tsx b/apps/web/src/app/[locale]/npo/page.tsx
index 77025a394..4f4f56aa2 100644
--- a/apps/web/src/app/[locale]/npo/page.tsx
+++ b/apps/web/src/app/[locale]/npo/page.tsx
@@ -1,10 +1,12 @@
import { constructMetadata } from "@/lib/utils/metadata";
+import { getTranslation } from "@/lib/translations.server";
import NPOPage from "@/screens/marketing/npo";
export async function generateMetadata() {
+ const { t } = await getTranslation("app/npo/page");
return constructMetadata({
- title: "onRuntime Studio - Association de créateurs numériques",
- description: "Découvrez notre association loi 1901 dédiée à l'innovation et la créativité digitale. Une communauté dynamique de développeurs, designers et artistes numériques.",
+ title: t("metadata.title"),
+ description: t("metadata.description"),
});
}
diff --git a/apps/web/src/components/marketing/npo/donations/index.tsx b/apps/web/src/components/marketing/npo/donations/index.tsx
index 488822a7c..79e69efa9 100644
--- a/apps/web/src/components/marketing/npo/donations/index.tsx
+++ b/apps/web/src/components/marketing/npo/donations/index.tsx
@@ -4,22 +4,24 @@ import React, { useState } from "react";
import { Button } from "@/components/ui/button";
import { useToast } from "@/hooks/use-toast";
import { Check, CreditCard, Gift, Heart } from "lucide-react";
+import { useTranslation } from "@onruntime/translations/react";
const Donations: React.FC = () => {
+ const { t } = useTranslation("components/marketing/npo/donations");
const { toast } = useToast();
const [selectedAmount, setSelectedAmount] = useState(null);
const [customAmount, setCustomAmount] = useState("");
const [isProcessing, setIsProcessing] = useState(false);
const handleDonation = async () => {
-
setIsProcessing(true);
setTimeout(() => {
setIsProcessing(false);
+ const amount = selectedAmount || customAmount;
toast({
- title: "Paiement simulé",
- description: `Votre don de ${selectedAmount || customAmount}€ a été traité avec succès. Dans une implémentation réelle, vous seriez redirigé vers Stripe.`,
+ title: t("toast.title"),
+ description: `${t("toast.description-prefix")} ${amount}€ ${t("toast.description-suffix")}`,
});
setSelectedAmount(null);
@@ -27,22 +29,22 @@ const Donations: React.FC = () => {
}, 1500);
};
+ const displayAmount = selectedAmount || customAmount || "0";
+
return (
-
Faire un don
+
{t("title")}
-
-
- Soutenez notre association et nos projets en faisant un don ponctuel. Votre contribution nous aide à financer nos activités, nos événements et nos outils de développement.
-
- Paiement sécurisé par Stripe
+
+ {t("secure-payment")}
+
);
diff --git a/apps/web/src/locales/en/app/npo/page.json b/apps/web/src/locales/en/app/npo/page.json
new file mode 100644
index 000000000..fe6d38433
--- /dev/null
+++ b/apps/web/src/locales/en/app/npo/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "onRuntime Studio - Non-profit organization for digital creators",
+ "description": "Discover our French non-profit organization dedicated to innovation and digital creativity. A dynamic community of developers, designers, and digital artists."
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/npo/donations.json b/apps/web/src/locales/en/components/marketing/npo/donations.json
new file mode 100644
index 000000000..edd4cebae
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/npo/donations.json
@@ -0,0 +1,19 @@
+{
+ "title": "Make a donation",
+ "description": "Support our organization and projects by making a one-time donation. Your contribution helps us fund our activities, events, and development tools.",
+ "other": "Other",
+ "custom-amount": {
+ "label": "Custom amount",
+ "placeholder": "Enter an amount"
+ },
+ "button": {
+ "donate": "Donate",
+ "processing": "Processing..."
+ },
+ "secure-payment": "Secure payment by Stripe",
+ "toast": {
+ "title": "Payment simulated",
+ "description-prefix": "Your donation of",
+ "description-suffix": "has been processed successfully. In a real implementation, you would be redirected to Stripe."
+ }
+}
diff --git a/apps/web/src/locales/en/screens/marketing/npo.json b/apps/web/src/locales/en/screens/marketing/npo.json
new file mode 100644
index 000000000..612da319e
--- /dev/null
+++ b/apps/web/src/locales/en/screens/marketing/npo.json
@@ -0,0 +1,113 @@
+{
+ "hero": {
+ "title": "The onRuntime Studio Association",
+ "description": "A French non-profit organization dedicated to innovation and creativity in web development, mobile development, and design."
+ },
+ "cta": {
+ "become-member": "Become a member",
+ "our-projects": "Our projects"
+ },
+ "history": {
+ "title": "Our story",
+ "description": "Founded in 2020, onRuntime Studio was born from the shared passion of developers and designers who have been collaborating since 2015. Our organization aims to create a collaborative space to innovate and share our knowledge, with the ambition to soon become a full-fledged company.",
+ "timeline": {
+ "2015": {
+ "title": "First collaborations",
+ "description": "Beginning of collaborations between Jérémy, Antoine, and Lucas, mainly on video game platforms."
+ },
+ "2020": {
+ "title": "Creation of the organization",
+ "description": "Official founding of onRuntime Studio as a French non-profit organization, on the advice of Bryan Recher."
+ },
+ "2021": {
+ "title": "Meeting in Rouen",
+ "description": "The founders meet in Rouen to accelerate projects, particularly their flagship project: Tonight Pass."
+ },
+ "2022": {
+ "title": "First recruitments",
+ "description": "The organization recruits its first employees to support the development of its projects."
+ },
+ "2023-2025": {
+ "title": "Continued expansion",
+ "description": "Focus on developing Tonight Pass and preparing for a future transformation into a company."
+ }
+ }
+ },
+ "founders": {
+ "title": "The founders",
+ "description": "Our organization was founded by three enthusiasts who have been working together for several years to bring innovative projects to life.",
+ "website": "Website",
+ "linkedin": "LinkedIn"
+ },
+ "values": {
+ "title": "Our values",
+ "description": "These fundamental principles guide our approach and vision, influencing each of our actions and decisions.",
+ "items": {
+ "innovation": {
+ "title": "Innovation",
+ "description": "We constantly push the boundaries of creativity and technology to offer innovative solutions."
+ },
+ "community": {
+ "title": "Community",
+ "description": "We believe in the strength of the collective and foster a collaborative environment where everyone can thrive."
+ },
+ "passion": {
+ "title": "Passion",
+ "description": "Every project is approached with passion and dedication, because we deeply love what we do."
+ },
+ "learning": {
+ "title": "Learning",
+ "description": "We value continuous learning and knowledge sharing to progress together."
+ }
+ }
+ },
+ "expertise": {
+ "title": "Our technical expertise",
+ "description": "The technologies we master and use in our association projects."
+ },
+ "membership": {
+ "title": "Become a member",
+ "description": "Join our community of enthusiasts and participate in the development of innovative projects.",
+ "annual": {
+ "title": "Annual membership",
+ "price": "30€",
+ "period": "/year",
+ "description": "Annual fee to become a volunteer member of the organization.",
+ "benefits": {
+ "hours": "Commitment of 3 to 6 hours per week",
+ "projects": "Participation in association projects",
+ "discord": "Dedicated Discord role and access to private channels",
+ "mentoring": "Personalized mentoring by our experienced members",
+ "resources": "Access to all our resources and training",
+ "autonomy": "Autonomy on the organization's projects"
+ },
+ "cta": "Request my membership"
+ }
+ },
+ "initiatives": {
+ "title": "Our programs and initiatives",
+ "description": "Discover the initiatives we are currently developing and our upcoming projects.",
+ "mentoring": {
+ "title": "Technical mentoring program",
+ "description": "Our mentoring program allows beginner members to be accompanied in their skill development by experienced developers and designers from the organization.",
+ "status": "Currently active"
+ },
+ "workshops": {
+ "title": "Collaborative technical workshops",
+ "description": "Group work and learning sessions on specific technologies, organized online and in-person when possible.",
+ "status": "In development phase"
+ },
+ "hackathons": {
+ "title": "Community hackathons",
+ "description": "Organization of 48-hour events where teams will develop innovative solutions together on specific issues.",
+ "status": "Future project"
+ },
+ "contribute": "Would you like to contribute to the development of these initiatives?",
+ "contact": "Contact us"
+ },
+ "discord": {
+ "title": "Join our Discord community",
+ "description": "Connect with other members, participate in technical discussions, and stay informed about the latest news from the organization.",
+ "cta": "Join Discord"
+ }
+}
diff --git a/apps/web/src/locales/fr/app/npo/page.json b/apps/web/src/locales/fr/app/npo/page.json
new file mode 100644
index 000000000..70463aa3e
--- /dev/null
+++ b/apps/web/src/locales/fr/app/npo/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "onRuntime Studio - Association de créateurs numériques",
+ "description": "Découvrez notre association loi 1901 dédiée à l'innovation et la créativité digitale. Une communauté dynamique de développeurs, designers et artistes numériques."
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/npo/donations.json b/apps/web/src/locales/fr/components/marketing/npo/donations.json
new file mode 100644
index 000000000..a8c892a6d
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/npo/donations.json
@@ -0,0 +1,19 @@
+{
+ "title": "Faire un don",
+ "description": "Soutenez notre association et nos projets en faisant un don ponctuel. Votre contribution nous aide à financer nos activités, nos événements et nos outils de développement.",
+ "other": "Autre",
+ "custom-amount": {
+ "label": "Montant personnalisé",
+ "placeholder": "Entrez un montant"
+ },
+ "button": {
+ "donate": "Faire un don de",
+ "processing": "Traitement..."
+ },
+ "secure-payment": "Paiement sécurisé par Stripe",
+ "toast": {
+ "title": "Paiement simulé",
+ "description-prefix": "Votre don de",
+ "description-suffix": "a été traité avec succès. Dans une implémentation réelle, vous seriez redirigé vers Stripe."
+ }
+}
diff --git a/apps/web/src/locales/fr/screens/marketing/npo.json b/apps/web/src/locales/fr/screens/marketing/npo.json
new file mode 100644
index 000000000..f2d81a341
--- /dev/null
+++ b/apps/web/src/locales/fr/screens/marketing/npo.json
@@ -0,0 +1,113 @@
+{
+ "hero": {
+ "title": "L'Association onRuntime Studio",
+ "description": "Une association loi 1901 dédiée à l'innovation et la créativité dans le domaine du développement web, mobile et design."
+ },
+ "cta": {
+ "become-member": "Devenir membre",
+ "our-projects": "Nos projets"
+ },
+ "history": {
+ "title": "Notre histoire",
+ "description": "Fondée en 2020, onRuntime Studio est née de la passion commune de développeurs et designers qui collaborent ensemble depuis 2015. Notre association a pour vocation de créer un espace collaboratif pour innover et partager nos connaissances, avec l'ambition de devenir prochainement une entreprise à part entière.",
+ "timeline": {
+ "2015": {
+ "title": "Premières collaborations",
+ "description": "Début des collaborations entre Jérémy, Antoine et Lucas, principalement sur des plateformes de jeux vidéos."
+ },
+ "2020": {
+ "title": "Création de l'association",
+ "description": "Fondation officielle d'onRuntime Studio en tant qu'association loi 1901, sur les conseils de Bryan Recher."
+ },
+ "2021": {
+ "title": "Réunion à Rouen",
+ "description": "Les fondateurs se réunissent à Rouen afin d'accélérer les projets, notamment avec leur projet phare: Tonight Pass."
+ },
+ "2022": {
+ "title": "Premiers recrutements",
+ "description": "L'association recrute ses premiers salariés pour soutenir le développement de ses projets."
+ },
+ "2023-2025": {
+ "title": "Expansion continue",
+ "description": "Focus sur le développement de Tonight Pass et préparation à une transformation future en entreprise."
+ }
+ }
+ },
+ "founders": {
+ "title": "Les fondateurs",
+ "description": "Notre association a été fondée par trois passionnés qui travaillent ensemble depuis plusieurs années pour donner vie à des projets innovants.",
+ "website": "Site web",
+ "linkedin": "LinkedIn"
+ },
+ "values": {
+ "title": "Nos valeurs",
+ "description": "Ces principes fondamentaux guident notre approche et notre vision, influençant chacune de nos actions et décisions.",
+ "items": {
+ "innovation": {
+ "title": "Innovation",
+ "description": "Nous repoussons constamment les limites de la créativité et de la technologie pour offrir des solutions novatrices."
+ },
+ "community": {
+ "title": "Communauté",
+ "description": "Nous croyons en la force du collectif et favorisons un environnement collaboratif où chacun peut s'épanouir."
+ },
+ "passion": {
+ "title": "Passion",
+ "description": "Chaque projet est abordé avec passion et dévouement, car nous aimons profondément ce que nous faisons."
+ },
+ "learning": {
+ "title": "Apprentissage",
+ "description": "Nous valorisons l'apprentissage continu et le partage des connaissances pour progresser ensemble."
+ }
+ }
+ },
+ "expertise": {
+ "title": "Notre expertise technique",
+ "description": "Les technologies que nous maîtrisons et utilisons dans nos projets associatifs."
+ },
+ "membership": {
+ "title": "Devenir membre",
+ "description": "Rejoignez notre communauté de passionnés et participez au développement de projets innovants.",
+ "annual": {
+ "title": "Adhésion annuelle",
+ "price": "30€",
+ "period": "/an",
+ "description": "Cotisation annuelle pour devenir membre bénévole de l'association.",
+ "benefits": {
+ "hours": "Engagement de 3 à 6 heures par semaine",
+ "projects": "Participation aux projets associatifs",
+ "discord": "Rôle Discord dédié et accès aux salons privés",
+ "mentoring": "Mentorat personnalisé par nos membres expérimentés",
+ "resources": "Accès à toutes nos ressources et formations",
+ "autonomy": "Autonomie sur les projets de l'association"
+ },
+ "cta": "Demander mon adhésion"
+ }
+ },
+ "initiatives": {
+ "title": "Nos programmes et initiatives",
+ "description": "Découvrez les initiatives que nous développons actuellement et nos projets à venir.",
+ "mentoring": {
+ "title": "Programme de mentorat technique",
+ "description": "Notre programme de mentorat permet aux membres débutants d'être accompagnés dans leur montée en compétences par des développeurs et designers expérimentés de l'association.",
+ "status": "Actuellement actif"
+ },
+ "workshops": {
+ "title": "Ateliers techniques collaboratifs",
+ "description": "Sessions de travail et d'apprentissage en groupe sur des technologies spécifiques, organisées en ligne et en présentiel quand possible.",
+ "status": "En phase de développement"
+ },
+ "hackathons": {
+ "title": "Hackathons communautaires",
+ "description": "Organisation d'événements de 48h où des équipes développeront ensemble des solutions innovantes sur des problématiques précises.",
+ "status": "Projet futur"
+ },
+ "contribute": "Vous souhaitez contribuer au développement de ces initiatives ?",
+ "contact": "Nous contacter"
+ },
+ "discord": {
+ "title": "Rejoignez notre communauté Discord",
+ "description": "Connectez-vous avec les autres membres, participez aux discussions techniques et restez informé des dernières actualités de l'association.",
+ "cta": "Rejoindre le Discord"
+ }
+}
diff --git a/apps/web/src/screens/marketing/npo/index.tsx b/apps/web/src/screens/marketing/npo/index.tsx
index 8013f6a13..7bb2bfdae 100644
--- a/apps/web/src/screens/marketing/npo/index.tsx
+++ b/apps/web/src/screens/marketing/npo/index.tsx
@@ -23,6 +23,7 @@ import { OrganizationSchema } from "@/components/json-ld/organization-schema";
import { roleToDisplay, TeamRole } from "@/types/team-member";
import { TechnologiesSection } from "@/components/marketing/services/sections";
import Donations from "@/components/marketing/npo/donations";
+import { getTranslation } from "@/lib/translations.server";
const coFounders = Object.entries(TeamMembers)
.filter(([, member]) => member.roles.includes(TeamRole.CO_FOUNDER))
@@ -31,91 +32,41 @@ const coFounders = Object.entries(TeamMembers)
...member,
}));
-const npoValues = [
- {
- title: "Innovation",
- description:
- "Nous repoussons constamment les limites de la créativité et de la technologie pour offrir des solutions novatrices.",
- icon: Rocket,
- },
- {
- title: "Communauté",
- description:
- "Nous croyons en la force du collectif et favorisons un environnement collaboratif où chacun peut s'épanouir.",
- icon: Users,
- },
- {
- title: "Passion",
- description:
- "Chaque projet est abordé avec passion et dévouement, car nous aimons profondément ce que nous faisons.",
- icon: Heart,
- },
- {
- title: "Apprentissage",
- description:
- "Nous valorisons l'apprentissage continu et le partage des connaissances pour progresser ensemble.",
- icon: GraduationCap,
- },
-];
-
-const historyTimeline = [
- {
- year: "2015",
- title: "Premières collaborations",
- description:
- "Début des collaborations entre Jérémy, Antoine et Lucas, principalement sur des plateformes de jeux vidéos.",
- },
- {
- year: "2020",
- title: "Création de l'association",
- description:
- "Fondation officielle d'onRuntime Studio en tant qu'association loi 1901, sur les conseils de Bryan Recher.",
- },
- {
- year: "2021",
- title: "Réunion à Rouen",
- description:
- "Les fondateurs se réunissent à Rouen afin d'accélérer les projets, notamment avec leur projet phare: Tonight Pass.",
- },
- {
- year: "2022",
- title: "Premiers recrutements",
- description:
- "L'association recrute ses premiers salariés pour soutenir le développement de ses projets.",
- },
- {
- year: "2023-2025",
- title: "Expansion continue",
- description:
- "Focus sur le développement de Tonight Pass et préparation à une transformation future en entreprise.",
- },
-];
-
-const NPOPage: React.FC = () => {
+const values = [
+ { key: "innovation", icon: Rocket },
+ { key: "community", icon: Users },
+ { key: "passion", icon: Heart },
+ { key: "learning", icon: GraduationCap },
+] as const;
+
+const timelineYears = ["2015", "2020", "2021", "2022", "2023-2025"] as const;
+
+const NPOPage: React.FC = async () => {
+ const { t } = await getTranslation("screens/marketing/npo");
+
return (
<>
-
+
- L'Association onRuntime Studio
+ {t("hero.title")}
- Une association loi 1901 dédiée à l'innovation et la
- créativité dans le domaine du développement web, mobile et design.
+ {t("hero.description")}
- Fondée en 2020, onRuntime Studio est née de la passion commune
- de développeurs et designers qui collaborent ensemble depuis
- 2015. Notre association a pour vocation de créer un espace
- collaboratif pour innover et partager nos connaissances, avec
- l'ambition de devenir prochainement une entreprise à part
- entière.
+ {t("history.description")}
- Notre association a été fondée par trois passionnés qui
- travaillent ensemble depuis plusieurs années pour donner vie à
- des projets innovants.
+ {t("founders.description")}
- Programme de mentorat technique
+ {t("initiatives.mentoring.title")}
- Notre programme de mentorat permet aux membres débutants
- d'être accompagnés dans leur montée en compétences par des
- développeurs et designers expérimentés de l'association.
+ {t("initiatives.mentoring.description")}
- Sessions de travail et d'apprentissage en groupe sur des
- technologies spécifiques, organisées en ligne et en présentiel
- quand possible.
+ {t("initiatives.workshops.description")}
- En phase de développement
+ {t("initiatives.workshops.status")}
- Organisation d'événements de 48h où des équipes développeront
- ensemble des solutions innovantes sur des problématiques
- précises.
+ {t("initiatives.hackathons.description")}
- Projet futur
+ {t("initiatives.hackathons.status")}
- Connectez-vous avec les autres membres, participez aux
- discussions techniques et restez informé des dernières
- actualités de l'association.
+ {t("discord.description")}
From a47f7801f81803335d641ff4b1bbd34ce73ef103 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Sun, 28 Dec 2025 20:31:36 +0100
Subject: [PATCH 09/64] =?UTF-8?q?=F0=9F=8C=90=20add=20contact=20page=20tra?=
=?UTF-8?q?nslations?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/contact/page.tsx | 6 +-
apps/web/src/locales/en/app/contact/page.json | 6 ++
.../locales/en/screens/marketing/contact.json | 55 ++++++++++++++
apps/web/src/locales/fr/app/contact/page.json | 6 ++
.../locales/fr/screens/marketing/contact.json | 55 ++++++++++++++
.../src/screens/marketing/contact/index.tsx | 74 ++++++++++---------
6 files changed, 165 insertions(+), 37 deletions(-)
create mode 100644 apps/web/src/locales/en/app/contact/page.json
create mode 100644 apps/web/src/locales/en/screens/marketing/contact.json
create mode 100644 apps/web/src/locales/fr/app/contact/page.json
create mode 100644 apps/web/src/locales/fr/screens/marketing/contact.json
diff --git a/apps/web/src/app/[locale]/contact/page.tsx b/apps/web/src/app/[locale]/contact/page.tsx
index 6a33d7733..30807ddad 100644
--- a/apps/web/src/app/[locale]/contact/page.tsx
+++ b/apps/web/src/app/[locale]/contact/page.tsx
@@ -1,10 +1,12 @@
import { constructMetadata } from "@/lib/utils/metadata";
+import { getTranslation } from "@/lib/translations.server";
import ContactPage from "@/screens/marketing/contact";
export async function generateMetadata() {
+ const { t } = await getTranslation("app/contact/page");
return constructMetadata({
- title: "Contactez notre agence web pour votre projet digital",
- description: "Besoin d'une agence web pour votre projet ? Contactez notre équipe d'experts en développement et design pour transformer votre vision en réalité digitale.",
+ title: t("metadata.title"),
+ description: t("metadata.description"),
});
}
diff --git a/apps/web/src/locales/en/app/contact/page.json b/apps/web/src/locales/en/app/contact/page.json
new file mode 100644
index 000000000..bd88a9d51
--- /dev/null
+++ b/apps/web/src/locales/en/app/contact/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Contact our web agency for your digital project",
+ "description": "Need a web agency for your project? Contact our team of development and design experts to transform your vision into digital reality."
+ }
+}
diff --git a/apps/web/src/locales/en/screens/marketing/contact.json b/apps/web/src/locales/en/screens/marketing/contact.json
new file mode 100644
index 000000000..60409c689
--- /dev/null
+++ b/apps/web/src/locales/en/screens/marketing/contact.json
@@ -0,0 +1,55 @@
+{
+ "hero": {
+ "title": "Let's discuss your project",
+ "description": "We are always happy to discuss new projects. Contact us to share your ideas and see how we can help you."
+ },
+ "form": {
+ "name": {
+ "label": "Full name",
+ "placeholder": "John Doe"
+ },
+ "email": {
+ "label": "Email",
+ "placeholder": "you@example.com"
+ },
+ "message": {
+ "label": "Message",
+ "placeholder": "Describe your project..."
+ },
+ "submit": "Send message",
+ "submitting": "Sending..."
+ },
+ "toast": {
+ "success": {
+ "title": "Message sent",
+ "description": "We will get back to you as soon as possible."
+ },
+ "error": {
+ "title": "Error",
+ "description": "An error occurred while sending the message",
+ "fallback": "An error occurred"
+ }
+ },
+ "info": {
+ "title": "Contact information",
+ "email": {
+ "label": "Email"
+ },
+ "offices": {
+ "label": "Our offices",
+ "value": "Rouen & Paris, France"
+ },
+ "phone": {
+ "label": "Phone"
+ }
+ },
+ "hours": {
+ "title": "Opening hours",
+ "timezone": "(Paris time)",
+ "weekdays": "Monday - Friday:",
+ "weekdays-time": "9:00 - 18:00",
+ "weekend": "Weekend:",
+ "weekend-time": "Closed"
+ },
+ "tagline": "A creative studio dedicated to transforming your ideas into digital reality."
+}
diff --git a/apps/web/src/locales/fr/app/contact/page.json b/apps/web/src/locales/fr/app/contact/page.json
new file mode 100644
index 000000000..d58e40b4b
--- /dev/null
+++ b/apps/web/src/locales/fr/app/contact/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Contactez notre agence web pour votre projet digital",
+ "description": "Besoin d'une agence web pour votre projet ? Contactez notre équipe d'experts en développement et design pour transformer votre vision en réalité digitale."
+ }
+}
diff --git a/apps/web/src/locales/fr/screens/marketing/contact.json b/apps/web/src/locales/fr/screens/marketing/contact.json
new file mode 100644
index 000000000..812ea5e6d
--- /dev/null
+++ b/apps/web/src/locales/fr/screens/marketing/contact.json
@@ -0,0 +1,55 @@
+{
+ "hero": {
+ "title": "Discutons de votre projet",
+ "description": "Nous sommes toujours ravis d'échanger sur de nouveaux projets. Contactez-nous pour discuter de vos idées et voir comment nous pouvons vous aider."
+ },
+ "form": {
+ "name": {
+ "label": "Nom complet",
+ "placeholder": "John Doe"
+ },
+ "email": {
+ "label": "Email",
+ "placeholder": "you@example.com"
+ },
+ "message": {
+ "label": "Message",
+ "placeholder": "Décrivez votre projet..."
+ },
+ "submit": "Envoyer le message",
+ "submitting": "Envoi en cours..."
+ },
+ "toast": {
+ "success": {
+ "title": "Message envoyé",
+ "description": "Nous vous répondrons dans les plus brefs délais."
+ },
+ "error": {
+ "title": "Erreur",
+ "description": "Une erreur est survenue lors de l'envoi du message",
+ "fallback": "Une erreur est survenue"
+ }
+ },
+ "info": {
+ "title": "Informations de contact",
+ "email": {
+ "label": "Email"
+ },
+ "offices": {
+ "label": "Nos bureaux",
+ "value": "Rouen & Paris, France"
+ },
+ "phone": {
+ "label": "Téléphone"
+ }
+ },
+ "hours": {
+ "title": "Horaires d'ouverture",
+ "timezone": "(heure de Paris)",
+ "weekdays": "Lundi - Vendredi:",
+ "weekdays-time": "9:00 - 18:00",
+ "weekend": "Weekend:",
+ "weekend-time": "Fermé"
+ },
+ "tagline": "Un studio créatif dédié à transformer vos idées en réalité numérique."
+}
diff --git a/apps/web/src/screens/marketing/contact/index.tsx b/apps/web/src/screens/marketing/contact/index.tsx
index 802c49631..34b532a9b 100644
--- a/apps/web/src/screens/marketing/contact/index.tsx
+++ b/apps/web/src/screens/marketing/contact/index.tsx
@@ -12,10 +12,12 @@ import { contactFormSchema } from "@/lib/schema/contact";
import { z } from "zod";
import { useToast } from "@/hooks/use-toast";
import { LocalBusinessSchema } from "@/components/json-ld/localbusiness-schema";
+import { useTranslation } from "@onruntime/translations/react";
type FormData = z.infer;
const ContactPage = () => {
+ const { t } = useTranslation("screens/marketing/contact");
const { toast } = useToast();
const {
register,
@@ -40,23 +42,23 @@ const ContactPage = () => {
if (!response.ok) {
toast({
- title: "Erreur",
- description: result.error || "Une erreur est survenue",
+ title: t("toast.error.title"),
+ description: result.error || t("toast.error.fallback"),
variant: "destructive",
});
return;
}
toast({
- title: "Message envoyé",
- description: "Nous vous répondrons dans les plus brefs délais.",
+ title: t("toast.success.title"),
+ description: t("toast.success.description"),
});
reset();
} catch {
toast({
- title: "Erreur",
- description: "Une erreur est survenue lors de l'envoi du message",
+ title: t("toast.error.title"),
+ description: t("toast.error.description"),
variant: "destructive",
});
}
@@ -67,17 +69,12 @@ const ContactPage = () => {
-
- Discutons de votre projet
+ {t("hero.title")}
-
- Nous sommes toujours ravis d'échanger sur de nouveaux
- projets. Contactez-nous pour discuter de vos idées et voir comment
- nous pouvons vous aider.
-
+
{t("hero.description")}
{
-
- Impact Global
+ {t("why-join.cards.impact.title")}
- Contribuez à des projets qui ont un impact réel et touchent des
- utilisateurs à travers le monde.
+ {t("why-join.cards.impact.description")}
- Notre équipe de designers crée des interfaces utilisateur
- élégantes et intuitives, en veillant à ce que chaque pixel soit
- parfaitement aligné avec l'identité visuelle du projet.
+ {t("teams.design.description")}
- Nos chefs de projet et product managers assurent le bon
- déroulement des projets et veillent à ce que les solutions
- développées répondent parfaitement aux besoins des utilisateurs.
+ {t("teams.project.description")}
- Marketing & Communication
+ {t("teams.marketing.title")}
- Notre équipe marketing travaille à faire connaître nos projets
- et à communiquer efficacement sur nos réalisations, tant en
- interne qu'auprès du grand public.
+ {t("teams.marketing.description")}
-
- Prêt à nous rejoindre ?
+ {t("cta.title")}
- Parcourez nos offres d'emploi et trouvez le poste qui
- correspond à vos compétences et aspirations. Nous avons hâte de vous
- accueillir dans notre équipe !
+ {t("cta.description")}
- Chez onRuntime Studio, nous cultivons un environnement de travail
- collaboratif et stimulant où chaque membre de l'équipe peut
- exprimer sa créativité et développer ses compétences. Nous
- privilégions l'innovation, la qualité et le bien-être de nos
- collaborateurs.
+ {t("culture.description")}
- Rejoignez notre équipe et participez à des projets stimulants qui
- vous permettront de développer vos compétences et dexprimer votre
- créativité.
+ {t("cta.description")}
+ {index === 0
+ ? `Notre expérience avec ce projet nous a permis de développer une expertise particulièrement applicable au secteur ${project.tags.includes(Tag.FEATURED) ? 'des nouvelles technologies' : 'du commerce digital'} dans la région ${agency.region}.`
+ : `Les compétences et technologies utilisées dans ce projet sont directement transférables aux besoins des entreprises de ${agency.name}, notamment dans ${project.tags.includes(Tag.FEATURED) ? 'l\'innovation ouverte' : 'la transformation numérique'}.`}
+
- Découvrez quelques-unes de nos réalisations qui illustrent notre savoir-faire,
+ Découvrez quelques-unes de nos réalisations qui illustrent notre savoir-faire,
applicable aux défis numériques des entreprises de {agency.region}.
{displayProjects.map((project, index) => (
-
-
-
-
-
-
{project.name}
-
{project.description}
-
-
-
Application au marché {agency.region}
-
- {index === 0
- ? `Notre expérience avec ce projet nous a permis de développer une expertise particulièrement applicable au secteur ${project.tags.includes(Tag.FEATURED) ? 'des nouvelles technologies' : 'du commerce digital'} dans la région ${agency.region}.`
- : `Les compétences et technologies utilisées dans ce projet sont directement transférables aux besoins des entreprises de ${agency.name}, notamment dans ${project.tags.includes(Tag.OPEN_SOURCE) ? 'l\'innovation ouverte' : 'la transformation numérique'}.`}
-
- Nos projets clients sont en cours de préparation.
- Contactez-nous pour en savoir plus sur nos réalisations
- ou pour discuter de votre projet.
+ {t("customer.empty.description")}
- Discuter de votre projet
+ {t("customer.empty.button")}
@@ -124,4 +156,4 @@ export const CustomerProjects = () => {
)}
);
-};
\ No newline at end of file
+};
diff --git a/apps/web/src/constants/projects/dark-theme-instagram.ts b/apps/web/src/constants/projects/dark-theme-instagram.ts
index 4b7b9b9e3..e5b2d993b 100644
--- a/apps/web/src/constants/projects/dark-theme-instagram.ts
+++ b/apps/web/src/constants/projects/dark-theme-instagram.ts
@@ -2,120 +2,60 @@ import { type Project, Tag } from "@/types/project";
import { Chrome, Code, Paintbrush, Shield, Smartphone } from "lucide-react";
export const darkThemeForInstagram: Project = {
- id: "dark-theme-instagram",
- name: "Dark Theme for Instagram",
- tags: [Tag.OPEN_SOURCE],
- shortDescription:
- "Une extension de navigateur qui transforme Instagram en mode sombre, similaire à l'application iOS.",
- description:
- "Changez le thème de Instagram.com en mode sombre lorsque le système est en mode sombre.",
- longDescription: `Dark Theme for Instagram™ est une extension de navigateur qui transforme l'expérience visuelle de Instagram.com en adoptant un thème sombre, similaire à l'apparence de l'application iOS.
-
-L'extension offre une solution simple et élégante pour réduire la fatigue oculaire et améliorer l'expérience de navigation sur Instagram, tout en respectant les préférences du système d'exploitation.`,
- iconUrl: "/static/images/projects/dark-theme-instagram/icon.png",
- showcaseUrl: "/static/images/projects/dark-theme-instagram/showcase.jpg",
- thumbnailUrl: "/static/images/projects/dark-theme-instagram/thumbnail.webp",
- website:
- "https://chromewebstore.google.com/detail/hhpaefgagkcciebgfdmoljlebdmpfcfb",
- repository: "https://github.com/onRuntime/instagram-dark-extension",
- startDate: "2020-07",
- status: "archived",
-
- features: [
- {
- title: "Mode Sombre Automatique",
- description:
- "Activez automatiquement le thème sombre basé sur les paramètres système",
- icon: Chrome,
- },
- {
- title: "Compatible Multi-Navigateurs",
- description: "Disponible pour Firefox, Edge et Chrome",
- icon: Smartphone,
- },
- {
- title: "Open Source",
- description: "Code source librement accessible et vérifiable",
- icon: Shield,
- },
- ],
-
- technologies: [
- {
- name: "JavaScript",
- description: "Développement de l'extension",
- icon: Code,
- },
- {
- name: "Chrome API",
- description: "Intégration navigateur",
- icon: Chrome,
- },
- {
- name: "CSS",
- description: "Personnalisation du thème",
- icon: Paintbrush,
- },
- ],
-
- metrics: [
- {
- label: "Utilisateurs",
- value: "52k+",
- description: "Utilisateurs actifs",
- },
- {
- label: "Installations",
- value: "82k+",
- description: "Total d'installations",
- },
- {
- label: "Open Source",
- value: "100%",
- description: "Code source public",
- },
- ],
-
- team: [
- {
- ref: "lucas-bodin",
- role: "Lead Designer",
- },
- {
- ref: "antoine-kingue",
- role: "Lead Developer",
- },
- {
- ref: "jeremy-baudrin",
- role: "Developer",
- },
- {
- ref: "johann-six",
- role: "Developer",
- },
- ],
-
- screenshots: [
- {
- url: "/static/images/projects/dark-theme-instagram/showcase.jpg",
- caption: "Interface Instagram en mode sombre",
- },
- ],
-
- challenges: [
- "Maintenir la compatibilité avec les mises à jour fréquentes d'Instagram",
- "Assurer un thème sombre cohérent sur différents navigateurs",
- "Minimiser l'impact sur les performances du navigateur",
- ],
-
- learnings: [
- "Complexité de la modification dynamique des interfaces web",
- "Importance de la compatibilité cross-navigateurs",
- "Gestion des mises à jour fréquentes des plateformes web",
- ],
-
- futurePlans: [
- "Ajout de plus d'options de personnalisation",
- "Amélioration de la compatibilité avec différentes versions d'Instagram",
- ],
+ id: "dark-theme-instagram",
+ name: "Dark Theme for Instagram",
+ tags: [Tag.OPEN_SOURCE],
+ iconUrl: "/static/images/projects/dark-theme-instagram/icon.png",
+ showcaseUrl: "/static/images/projects/dark-theme-instagram/showcase.jpg",
+ thumbnailUrl: "/static/images/projects/dark-theme-instagram/thumbnail.webp",
+ website: "https://chromewebstore.google.com/detail/hhpaefgagkcciebgfdmoljlebdmpfcfb",
+ repository: "https://github.com/onRuntime/instagram-dark-extension",
+ startDate: "2020-07",
+ status: "archived",
+
+ features: [
+ { key: "auto-dark-mode", icon: Chrome },
+ { key: "multi-browser", icon: Smartphone },
+ { key: "open-source", icon: Shield },
+ ],
+
+ technologies: [
+ { key: "javascript", name: "JavaScript", icon: Code },
+ { key: "chrome-api", name: "Chrome API", icon: Chrome },
+ { key: "css", name: "CSS", icon: Paintbrush },
+ ],
+
+ metrics: [
+ { key: "users", value: "52k+" },
+ { key: "installs", value: "82k+" },
+ { key: "open-source", value: "100%" },
+ ],
+
+ team: [
+ { ref: "lucas-bodin", role: "Lead Designer" },
+ { ref: "antoine-kingue", role: "Lead Developer" },
+ { ref: "jeremy-baudrin", role: "Developer" },
+ { ref: "johann-six", role: "Developer" },
+ ],
+
+ screenshots: [
+ { key: "dark-interface", url: "/static/images/projects/dark-theme-instagram/showcase.jpg" },
+ ],
+
+ challenges: [
+ "instagram-updates-compatibility",
+ "cross-browser-consistency",
+ "browser-performance",
+ ],
+
+ learnings: [
+ "dynamic-interface-modification",
+ "cross-browser-compatibility",
+ "platform-updates-management",
+ ],
+
+ futurePlans: [
+ "more-customization",
+ "instagram-versions-compatibility",
+ ],
};
diff --git a/apps/web/src/constants/projects/expatfacilities.ts b/apps/web/src/constants/projects/expatfacilities.ts
index 0b3b32afe..52cb9a98e 100644
--- a/apps/web/src/constants/projects/expatfacilities.ts
+++ b/apps/web/src/constants/projects/expatfacilities.ts
@@ -5,15 +5,6 @@ export const expatFacilitiesProject: Project = {
id: "expatfacilities",
name: "Expat Facilities",
tags: [Tag.CUSTOMER],
- shortDescription:
- "Plateforme complète d'accompagnement pour l'expatriation étudiante, intégrant logement, visa, transport et support local.",
- description:
- "Développement d'une plateforme full-stack permettant aux étudiants français de gérer leur expatriation de A à Z avec des services intégrés et un réseau d'ambassadeurs locaux.",
- longDescription: `Expat Facilities était une startup française révolutionnaire qui simplifiait l'expatriation pour les étudiants. Notre équipe a développé une plateforme complète from scratch, évoluant d'une simple landing page vers une solution sophistiquée combinant les fonctionnalités d'Airbnb avec un écosystème de services d'expatriation.
-
-La plateforme intégrait de multiples APIs partenaires pour offrir une expérience unifiée : recherche de logements via des partenaires comme Spotahome, réservations de vols avec Lufthansa, assurances spécialisées, et un système unique d'ambassadeurs locaux présents dans plus de 70 pays.
-
-Le défi technique principal était l'orchestration de dizaines d'APIs tierces pour créer une expérience utilisateur fluide et cohérente, tout en gérant les complexités des paiements internationaux et du matching entre étudiants et ambassadeurs locaux.`,
iconUrl: "/static/images/projects/expatfacilities/icon.webp",
showcaseUrl: "/static/images/projects/expatfacilities/showcase.webp",
thumbnailUrl: "/static/images/projects/expatfacilities/thumbnail.webp",
@@ -21,206 +12,79 @@ Le défi technique principal était l'orchestration de dizaines d'APIs tierces p
repository: undefined,
startDate: "2020-07",
status: "completed",
+
features: [
- {
- title: "Plateforme de logement intégrée",
- description:
- "Recherche et réservation de logements étudiants via l'intégration d'APIs partenaires comme Spotahome",
- icon: Building2,
- },
- {
- title: "Réseau d'ambassadeurs locaux",
- description:
- "Plus de 300 ambassadeurs étudiants dans 70 pays pour accompagner sur place les nouveaux arrivants",
- icon: Users,
- },
- {
- title: "Services visa et administratif",
- description:
- "Gestion complète des démarches de visa et accompagnement administratif personnalisé",
- icon: Shield,
- },
- {
- title: "Transport et logistique",
- description:
- "Réservation de vols (partenariat Lufthansa), trains, et transport local avec tarifs préférentiels",
- icon: Plane,
- },
- {
- title: "Assurances expatriation",
- description:
- "Assurances spécialisées pour expatriation temporaire en partenariat avec Mondial Assistance et Allianz",
- icon: Shield,
- },
- {
- title: "Tracking avancé",
- description:
- "Suivi en temps réel de toutes les démarches avec notifications et interface de pilotage",
- icon: Smartphone,
- },
+ { key: "housing-platform", icon: Building2 },
+ { key: "ambassador-network", icon: Users },
+ { key: "visa-services", icon: Shield },
+ { key: "transport-logistics", icon: Plane },
+ { key: "expat-insurance", icon: Shield },
+ { key: "advanced-tracking", icon: Smartphone },
],
technologies: [
- {
- name: "Next.js",
- description: "Framework React pour le frontend",
- icon: Globe,
- },
- {
- name: "NestJS",
- description: "Backend API robuste et modulaire",
- icon: Globe,
- },
- {
- name: "MongoDB",
- description: "Base de données principale",
- icon: Globe,
- },
- {
- name: "GraphQL",
- description: "API unifiée pour les données",
- icon: Globe,
- },
- {
- name: "Google Cloud",
- description: "Infrastructure cloud et services",
- icon: Globe,
- },
- {
- name: "Stripe",
- description: "Paiements internationaux",
- icon: CreditCard,
- },
- {
- name: "TypeScript",
- description: "Développement type-safe",
- icon: Globe,
- },
- {
- name: "Styled Components",
- description: "Styling et thématisation",
- icon: Globe,
- },
+ { key: "nextjs", name: "Next.js", icon: Globe },
+ { key: "nestjs", name: "NestJS", icon: Globe },
+ { key: "mongodb", name: "MongoDB", icon: Globe },
+ { key: "graphql", name: "GraphQL", icon: Globe },
+ { key: "google-cloud", name: "Google Cloud", icon: Globe },
+ { key: "stripe", name: "Stripe", icon: CreditCard },
+ { key: "typescript", name: "TypeScript", icon: Globe },
+ { key: "styled-components", name: "Styled Components", icon: Globe },
],
metrics: [
- {
- label: "Pays couverts",
- value: "70+",
- description: "Destinations d'expatriation disponibles",
- },
- {
- label: "Ambassadeurs",
- value: "300+",
- description: "Étudiants ambassadeurs dans le monde",
- },
- {
- label: "Utilisateurs",
- value: "2000+",
- description: "Étudiants utilisateurs de la plateforme",
- },
+ { key: "countries", value: "70+" },
+ { key: "ambassadors", value: "300+" },
+ { key: "users", value: "2000+" },
],
team: [
- {
- ref: "antoine-kingue",
- role: "Lead Developer",
- },
- {
- ref: "lucas-bodin",
- role: "Lead Designer",
- },
- {
- ref: "younes-bessa",
- role: "Lead Frontend Developer",
- },
- {
- ref: "jeremy-baudrin",
- role: "Lead Backend Developer",
- },
- {
- ref: "mareh-mannaa",
- role: "Marketing & Communication",
- },
- {
- ref: "alexis-mouchon",
- role: "Backend Developer",
- },
- {
- ref: "johann-six",
- role: "Frontend Developer",
- },
+ { ref: "antoine-kingue", role: "Lead Developer" },
+ { ref: "lucas-bodin", role: "Lead Designer" },
+ { ref: "younes-bessa", role: "Lead Frontend Developer" },
+ { ref: "jeremy-baudrin", role: "Lead Backend Developer" },
+ { ref: "mareh-mannaa", role: "Marketing & Communication" },
+ { ref: "alexis-mouchon", role: "Backend Developer" },
+ { ref: "johann-six", role: "Frontend Developer" },
],
screenshots: [
- {
- url: "/static/images/projects/expatfacilities/screenshots/redesign.png",
- caption: "Redesign de la plateforme",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/testimonials.png",
- caption: "Témoignages et partenaires",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/flyer-banque.jpg",
- caption: "Flyer pour les banques partenaires",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/about-team-and-cta.jpg",
- caption: "À propos de l'équipe et call to Action",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/housing-hero.jpg",
- caption: "Section logement avec recherche intégrée",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/housing-cta.jpg",
- caption: "Call to Action pour la section logement",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/services-hero.jpg",
- caption: "Section services avec présentation des offres",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/assurance-hero.jpg",
- caption: "Section assurance avec explication des offres",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/assurance-formules.jpg",
- caption: "Formules d'assurance détaillées",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/assurance-avantages.jpg",
- caption: "Avantages des assurances proposées",
- },
- {
- url: "/static/images/projects/expatfacilities/screenshots/formulaire-contact-success.jpg",
- caption: "Formulaire de contact avec succès",
- },
+ { key: "redesign", url: "/static/images/projects/expatfacilities/screenshots/redesign.png" },
+ { key: "testimonials", url: "/static/images/projects/expatfacilities/screenshots/testimonials.png" },
+ { key: "flyer-bank", url: "/static/images/projects/expatfacilities/screenshots/flyer-banque.jpg" },
+ { key: "about-team", url: "/static/images/projects/expatfacilities/screenshots/about-team-and-cta.jpg" },
+ { key: "housing-hero", url: "/static/images/projects/expatfacilities/screenshots/housing-hero.jpg" },
+ { key: "housing-cta", url: "/static/images/projects/expatfacilities/screenshots/housing-cta.jpg" },
+ { key: "services-hero", url: "/static/images/projects/expatfacilities/screenshots/services-hero.jpg" },
+ { key: "insurance-hero", url: "/static/images/projects/expatfacilities/screenshots/assurance-hero.jpg" },
+ { key: "insurance-plans", url: "/static/images/projects/expatfacilities/screenshots/assurance-formules.jpg" },
+ { key: "insurance-benefits", url: "/static/images/projects/expatfacilities/screenshots/assurance-avantages.jpg" },
+ { key: "contact-success", url: "/static/images/projects/expatfacilities/screenshots/formulaire-contact-success.jpg" },
],
challenges: [
- "Intégration de dizaines d'APIs tierces (Spotahome, Lufthansa, assurances) dans une expérience unifiée",
- "Gestion des paiements internationaux avec Stripe dans multiple devises et réglementations",
- "Développement d'un système de matching étudiants/ambassadeurs basé sur la géolocalisation",
- "Architecture scalable pour supporter la croissance rapide (70 pays, 300+ ambassadeurs)",
- "Synchronisation en temps réel des disponibilités logements entre plateformes partenaires",
- "Interface multilingue et adaptation aux spécificités locales de chaque pays",
+ "third-party-api-integration",
+ "international-payments",
+ "student-ambassador-matching",
+ "scalable-architecture",
+ "real-time-availability",
+ "multilingual-interface",
],
learnings: [
- "Complexité de l'orchestration d'APIs tierces avec des formats et limitations différents",
- "Importance cruciale de la gestion d'erreur dans un écosystème multi-partenaires",
- "Défis de l'internationalisation au-delà de la traduction (devises, réglementations, cultures)",
- "Architecture microservices essentielle pour isoler les intégrations partenaires",
- "UX/UI critique pour transformer un processus complexe en expérience fluide",
- "Gestion des relations partenaires et négociations techniques pour les intégrations",
+ "api-orchestration-complexity",
+ "multi-partner-error-handling",
+ "internationalization-challenges",
+ "microservices-architecture",
+ "complex-ux-simplification",
+ "partner-relations",
],
futurePlans: [
- "Expansion vers d'autres types d'expatriation (professionnels, retraités)",
- "IA pour optimiser le matching étudiants/ambassadeurs",
- "Application mobile native pour les ambassadeurs",
- "Plateforme de formation pour les ambassadeurs",
+ "other-expat-types",
+ "ai-matching",
+ "ambassador-mobile-app",
+ "ambassador-training",
],
-};
\ No newline at end of file
+};
diff --git a/apps/web/src/constants/projects/kartrak.ts b/apps/web/src/constants/projects/kartrak.ts
index d02546e2d..b06cee9ad 100644
--- a/apps/web/src/constants/projects/kartrak.ts
+++ b/apps/web/src/constants/projects/kartrak.ts
@@ -5,134 +5,64 @@ export const kartrakProject: Project = {
id: "kartrak",
name: "Kartrak",
tags: [Tag.OPEN_SOURCE],
- shortDescription:
- "Le suivi d'activité tourné vers l'écologie. Surveillez votre empreinte en ligne de façon ludique.",
- description:
- "Une extension de navigateur qui vous aide à comprendre et réduire votre impact environnemental en ligne.",
- longDescription: `Kartrak est une extension de navigateur innovante qui sensibilise les utilisateurs à leur empreinte carbone numérique. En surveillant votre activité en ligne, Kartrak fournit des insights détaillés sur votre consommation internet et son impact environnemental.
-
-L'extension utilise des algorithmes avancés basés sur l'Écoindex pour calculer l'empreinte carbone de votre navigation, tout en proposant des suggestions personnalisées pour réduire votre impact. L'Écoindex est une méthodologie reconnue qui évalue l'impact environnemental des sites web en analysant leur complexité technique, leur poids et leur efficacité énergétique.
-
-Avec une approche ludique et éducative, Kartrak rend la conscience environnementale accessible et engageante.`,
iconUrl: "/static/images/projects/kartrak/icon.svg",
showcaseUrl: "/static/images/projects/kartrak/showcase.jpg",
thumbnailUrl: "/static/images/projects/kartrak/thumbnail.webp",
- website:
- "https://chromewebstore.google.com/detail/kartrak/bheoaeahkgfmogmgkfldoecmnlbhlibf",
+ website: "https://chromewebstore.google.com/detail/kartrak/bheoaeahkgfmogmgkfldoecmnlbhlibf",
repository: "https://github.com/onruntime/kartrak",
startDate: "2023-10",
status: "active",
features: [
- {
- title: "Suivi en temps réel",
- description:
- "Visualisez votre empreinte carbone numérique en temps réel",
- icon: Activity,
- },
- {
- title: "Suggestions personnalisées",
- description: "Recevez des conseils adaptés pour réduire votre impact",
- icon: Lightbulb,
- },
- {
- title: "Statistiques détaillées",
- description: "Analysez vos habitudes de navigation et leur impact",
- icon: BarChart,
- },
- {
- title: "Objectifs écologiques",
- description: "Fixez-vous des objectifs et suivez vos progrès",
- icon: Target,
- },
+ { key: "real-time-tracking", icon: Activity },
+ { key: "personalized-suggestions", icon: Lightbulb },
+ { key: "detailed-stats", icon: BarChart },
+ { key: "ecological-goals", icon: Target },
],
technologies: [
- {
- name: "TypeScript",
- description: "Extension navigateur",
- icon: FileCode,
- },
- {
- name: "React",
- description: "Interface utilisateur",
- icon: Code,
- },
- {
- name: "Node.js",
- description: "Backend et API",
- icon: Server,
- },
- {
- name: "Chrome API",
- description: "Intégration avec le navigateur",
- icon: Chrome,
- },
+ { key: "typescript", name: "TypeScript", icon: FileCode },
+ { key: "react", name: "React", icon: Code },
+ { key: "nodejs", name: "Node.js", icon: Server },
+ { key: "chrome-api", name: "Chrome API", icon: Chrome },
],
metrics: [
- {
- label: "Sites analysés",
- value: "∞",
- description: "Compatible avec tous les sites web",
- },
- {
- label: "Open Source",
- value: "100%",
- description: "Code source public",
- },
- {
- label: "Confidentiel",
- value: "100%",
- description: "Aucune donnée utilisateur collectée",
- },
+ { key: "sites-analyzed", value: "∞" },
+ { key: "open-source", value: "100%" },
+ { key: "confidential", value: "100%" },
],
team: [
- {
- ref: "lucas-bodin",
- role: "Product Manager",
- },
- {
- ref: "antoine-kingue",
- role: "Lead Developer",
- },
- {
- ref: "jeremy-baudrin",
- role: "Developer",
- },
+ { ref: "lucas-bodin", role: "Product Manager" },
+ { ref: "antoine-kingue", role: "Lead Developer" },
+ { ref: "jeremy-baudrin", role: "Developer" },
],
screenshots: [
- {
- url: "/static/images/projects/kartrak/screenshots/dashboard.jpg",
- caption: "Dashboard principal",
- },
- {
- url: "/static/images/projects/kartrak/screenshots/stats.jpg",
- caption: "Statistiques détaillées",
- },
+ { key: "dashboard", url: "/static/images/projects/kartrak/screenshots/dashboard.jpg" },
+ { key: "stats", url: "/static/images/projects/kartrak/screenshots/stats.jpg" },
],
challenges: [
- "Calcul précis de l'empreinte carbone",
- "Protection de la vie privée des utilisateurs",
- "Performance de l'extension en arrière-plan",
- "Précision des données environnementales",
+ "carbon-calculation",
+ "privacy-protection",
+ "background-performance",
+ "environmental-data-accuracy",
],
learnings: [
- "Complexité du calcul d'impact environnemental",
- "Importance de l'engagement utilisateur",
- "Équilibre entre précision et performance",
- "UX adaptée aux habitudes de navigation",
+ "environmental-impact-complexity",
+ "user-engagement",
+ "accuracy-performance-balance",
+ "navigation-ux",
],
futurePlans: [
- "Support de plus de navigateurs",
- "Intégration avec d'autres outils écologiques",
- "Fonctionnalités communautaires",
- "Rapports détaillés personnalisés",
- "Fermeture automatique des onglets inutilisés",
+ "more-browsers",
+ "eco-tools-integration",
+ "community-features",
+ "personalized-reports",
+ "auto-close-tabs",
],
-};
\ No newline at end of file
+};
diff --git a/apps/web/src/constants/projects/kitchn.ts b/apps/web/src/constants/projects/kitchn.ts
index 2a09dff4a..64c4c757e 100644
--- a/apps/web/src/constants/projects/kitchn.ts
+++ b/apps/web/src/constants/projects/kitchn.ts
@@ -5,15 +5,6 @@ export const kitchnProject: Project = {
id: "kitchn",
name: "Kitchn",
tags: [Tag.OPEN_SOURCE],
- shortDescription:
- "Une bibliothèque de composants React et React Native moderne, performante et hautement personnalisable, inspirée par Geist UI et Vercel Design.",
- description:
- "Une suite complète de composants styled-components conçue pour créer des interfaces utilisateur cohérentes et élégantes, maintenue par Tonight Pass.",
- longDescription: `Kitchn est une bibliothèque de composants UI complète qui accélère le développement d'applications web et mobiles modernes.
-
-Inspirée par Geist UI et Vercel Design, elle se distingue par son approche minimaliste et sa facilité d'utilisation, offrant une collection de composants optimisés construits avec styled-components et TypeScript.
-
-Chaque composant est conçu pour être modulaire, performant et hautement personnalisable, permettant aux équipes de développement de créer rapidement des interfaces utilisateur cohérentes tout en maintenant une excellente expérience développeur.`,
iconUrl: "/static/images/projects/kitchn/icon.svg",
showcaseUrl: "/static/images/projects/kitchn/showcase.jpg",
thumbnailUrl: "/static/images/projects/kitchn/thumbnail.webp",
@@ -23,141 +14,59 @@ Chaque composant est conçu pour être modulaire, performant et hautement person
status: "active",
features: [
- {
- title: "Architecture Modulaire",
- description:
- "Composants indépendants et réutilisables conçus pour fonctionner ensemble harmonieusement",
- icon: Blocks,
- },
- {
- title: "Thèmes Flexibles",
- description:
- "Support complet des modes clair et sombre avec un système de thème extensible",
- icon: Palette,
- },
- {
- title: "Cross-Platform",
- description:
- "Support natif de React et React Native pour une expérience cohérente sur toutes les plateformes",
- icon: Smartphone,
- },
- {
- title: "Documentation Interactive",
- description:
- "Documentation exhaustive avec exemples et playground pour une prise en main rapide",
- icon: FileText,
- },
+ { key: "modular-architecture", icon: Blocks },
+ { key: "flexible-themes", icon: Palette },
+ { key: "cross-platform", icon: Smartphone },
+ { key: "interactive-docs", icon: FileText },
],
technologies: [
- {
- name: "Styled Components",
- description: "Styles CSS-in-JS",
- icon: Paintbrush,
- },
- {
- name: "React",
- description: "Bibliothèque UI web",
- icon: Code,
- },
- {
- name: "React Native",
- description: "Composants mobiles natifs",
- icon: Smartphone,
- },
- {
- name: "TypeScript",
- description: "Type safety et auto-complétion",
- icon: FileCode,
- },
- {
- name: "Storybook",
- description: "Documentation interactive",
- icon: BookOpen,
- },
+ { key: "styled-components", name: "Styled Components", icon: Paintbrush },
+ { key: "react", name: "React", icon: Code },
+ { key: "react-native", name: "React Native", icon: Smartphone },
+ { key: "typescript", name: "TypeScript", icon: FileCode },
+ { key: "storybook", name: "Storybook", icon: BookOpen },
],
metrics: [
- {
- label: "Composants",
- value: "35+",
- description: "Composants UI réutilisables",
- },
- {
- label: "Téléchargements",
- value: "20k+",
- description: "Téléchargements mensuels",
- },
- {
- label: "Github Stars",
- value: "50+",
- description: "Stars sur GitHub",
- },
+ { key: "components", value: "35+" },
+ { key: "downloads", value: "20k+" },
+ { key: "github-stars", value: "50+" },
],
team: [
- {
- ref: "lucas-bodin",
- role: "Lead Designer",
- },
- {
- ref: "maceo-vaz-da-mota",
- role: "Designer",
- },
- {
- ref: "antoine-kingue",
- role: "Lead Developer",
- },
- {
- ref: "jeremy-baudrin",
- role: "Developer",
- },
- {
- ref: "younes-bessa",
- role: "Developer",
- },
- {
- ref: "alexis-mouchon",
- role: "Developer",
- },
- {
- ref: "alexis-lecourt",
- role: "Developer",
- },
- {
- ref: "ines-ferreira",
- role: "Developer",
- },
+ { ref: "lucas-bodin", role: "Lead Designer" },
+ { ref: "maceo-vaz-da-mota", role: "Designer" },
+ { ref: "antoine-kingue", role: "Lead Developer" },
+ { ref: "jeremy-baudrin", role: "Developer" },
+ { ref: "younes-bessa", role: "Developer" },
+ { ref: "alexis-mouchon", role: "Developer" },
+ { ref: "alexis-lecourt", role: "Developer" },
+ { ref: "ines-ferreira", role: "Developer" },
],
screenshots: [
- {
- url: "/static/images/projects/kitchn/screenshots/responsive.jpg",
- caption: "Composants responsive",
- },
- {
- url: "/static/images/projects/kitchn/screenshots/themable.jpg",
- caption: "Thèmes personnalisables",
- },
+ { key: "responsive", url: "/static/images/projects/kitchn/screenshots/responsive.jpg" },
+ { key: "themable", url: "/static/images/projects/kitchn/screenshots/themable.jpg" },
],
challenges: [
- "Maintenir une cohérence visuelle parfaite entre les plateformes web et mobile",
- "Optimiser la taille du bundle tout en préservant la richesse fonctionnelle",
- "Assurer la compatibilité avec les différentes versions de React",
- "Garantir la rétrocompatibilité lors des mises à jour",
+ "visual-consistency",
+ "bundle-optimization",
+ "react-compatibility",
+ "backward-compatibility",
],
learnings: [
- "Importance cruciale d'une documentation claire et détaillée",
- "Nécessité d'une architecture modulaire pour la maintenabilité",
- "Valeur des tests automatisés pour la fiabilité",
- "Impact de l'expérience développeur sur l'adoption",
+ "clear-documentation",
+ "modular-architecture",
+ "automated-testing",
+ "developer-experience",
],
futurePlans: [
- "Enrichissement de la bibliothèque de composants",
- "Optimisations continues des performances",
- "Extension de la compatibilité avec les frameworks modernes",
+ "component-library-expansion",
+ "performance-optimization",
+ "framework-compatibility",
],
-};
\ No newline at end of file
+};
diff --git a/apps/web/src/constants/projects/shadowbonus.ts b/apps/web/src/constants/projects/shadowbonus.ts
index 8f017ed63..a0fa7689a 100644
--- a/apps/web/src/constants/projects/shadowbonus.ts
+++ b/apps/web/src/constants/projects/shadowbonus.ts
@@ -5,14 +5,6 @@ export const shadowbonusProject: Project = {
id: "shadowbonus",
name: "ShadowBonus",
tags: [Tag.CUSTOMER],
- shortDescription: "Plateforme d'affiliation pour streameur spécialisée dans les bonus de casinos en ligne et box opening.",
- description: "Site web d'affiliation développé pour le streameur vitapvp, présentant les meilleurs bonus et avantages des casinos partenaires avec redirection vers les liens d'affiliation.",
- longDescription: `ShadowBonus est une plateforme d'affiliation développée pour le streameur vitapvp, conçue pour présenter de manière claire et attractive les meilleurs bonus et avantages des casinos en ligne partenaires.
-
-Le projet se concentre sur l'essentiel : une interface épurée qui met en valeur les offres partenaires et facilite la conversion vers les liens d'affiliation. Développé avec React et styled-components, le site privilégie la simplicité d'utilisation et l'efficacité de conversion.
-
-Notre approche s'est concentrée sur une expérience utilisateur fluide permettant aux viewers de vitapvp de découvrir rapidement les meilleures offres disponibles et d'accéder facilement aux plateformes partenaires.`,
-
iconUrl: "/static/images/projects/shadowbonus/icon.jpg",
showcaseUrl: "/static/images/projects/shadowbonus/showcase.webp",
thumbnailUrl: "/static/images/projects/shadowbonus/thumbnail.webp",
@@ -22,106 +14,51 @@ Notre approche s'est concentrée sur une expérience utilisateur fluide permetta
status: "completed",
features: [
- {
- title: "Vitrine des partenaires",
- description: "Présentation claire et attractive des casinos et plateformes partenaires du streameur",
- icon: Users,
- },
- {
- title: "Comparaison de bonus",
- description: "Mise en avant des meilleurs bonus et avantages disponibles pour les viewers",
- icon: Target,
- },
- {
- title: "Redirection d'affiliation",
- description: "Système de redirection optimisé vers les liens d'affiliation partenaires",
- icon: ExternalLink,
- },
- {
- title: "Interface responsive",
- description: "Design adaptatif pour une expérience optimale sur tous les appareils",
- icon: Globe,
- },
+ { key: "partner-showcase", icon: Users },
+ { key: "bonus-comparison", icon: Target },
+ { key: "affiliate-redirect", icon: ExternalLink },
+ { key: "responsive-interface", icon: Globe },
],
technologies: [
- {
- name: "React",
- description: "Bibliothèque JavaScript pour l'interface utilisateur",
- icon: Code,
- },
- {
- name: "Styled Components",
- description: "Styling CSS-in-JS pour une approche moderne",
- icon: Code,
- },
- {
- name: "Cloudflare Pages",
- description: "Hébergement et déploiement continu",
- icon: Cloud,
- },
+ { key: "react", name: "React", icon: Code },
+ { key: "styled-components", name: "Styled Components", icon: Code },
+ { key: "cloudflare", name: "Cloudflare Pages", icon: Cloud },
],
metrics: [
- {
- label: "Visites hebdomadaires",
- value: "1500+",
- description: "Au lancement en juillet 2021",
- },
- {
- label: "Temps de développement",
- value: "2 mois",
- description: "Livraison rapide et efficace",
- },
- {
- label: "Équipe",
- value: "3 pers.",
- description: "Équipe réduite et agile",
- },
+ { key: "weekly-visits", value: "1500+" },
+ { key: "dev-time", value: "2 mois" },
+ { key: "team-size", value: "3 pers." },
],
team: [
- {
- ref: "antoine-kingue",
- role: "Lead Developer",
- },
- {
- ref: "jeremy-baudrin",
- role: "Frontend Developer",
- },
- {
- ref: "lucas-bodin",
- role: "Designer",
- },
+ { ref: "antoine-kingue", role: "Lead Developer" },
+ { ref: "jeremy-baudrin", role: "Frontend Developer" },
+ { ref: "lucas-bodin", role: "Designer" },
],
screenshots: [
- {
- url: "/static/images/projects/shadowbonus/screenshots/homepage.webp",
- caption: "Page d'accueil présentant les offres partenaires",
- },
- {
- url: "/static/images/projects/shadowbonus/screenshots/partners.webp",
- caption: "Section des casinos et plateformes partenaires",
- },
+ { key: "homepage", url: "/static/images/projects/shadowbonus/screenshots/homepage.webp" },
+ { key: "partners", url: "/static/images/projects/shadowbonus/screenshots/partners.webp" },
],
challenges: [
- "Créer une interface attractive pour mettre en valeur les offres partenaires",
- "Optimiser les taux de conversion vers les liens d'affiliation",
- "Développer une solution simple mais efficace en React",
- "Assurer une expérience utilisateur fluide sur tous les appareils",
+ "attractive-interface",
+ "conversion-optimization",
+ "simple-react-solution",
+ "cross-device-experience",
],
learnings: [
- "Importance de la simplicité dans les projets d'affiliation",
- "Optimisation des parcours de conversion pour streameurs",
- "Développement rapide et efficace avec React et styled-components",
- "Adaptation aux besoins spécifiques du monde du streaming gaming",
+ "affiliate-simplicity",
+ "streamer-conversion",
+ "react-styled-components",
+ "gaming-streaming-needs",
],
futurePlans: [
- "Le projet a été transféré au client pour maintenance",
- "Évolutions possibles selon les besoins du streameur",
+ "client-transfer",
+ "streamer-evolutions",
],
-};
\ No newline at end of file
+};
diff --git a/apps/web/src/constants/projects/tonightpass.ts b/apps/web/src/constants/projects/tonightpass.ts
index 7ef9a3bf0..24e91b579 100644
--- a/apps/web/src/constants/projects/tonightpass.ts
+++ b/apps/web/src/constants/projects/tonightpass.ts
@@ -5,11 +5,6 @@ export const tonightpassProject: Project = {
id: "tonightpass",
name: "Tonight Pass",
tags: [Tag.FEATURED],
- shortDescription: "Découvrez et réservez les meilleurs événements adaptés à vos goûts.",
- description: "Tonight Pass est une plateforme innovante qui simplifie la découverte et la réservation d'événements grâce à un système de recommandations personnalisées basé sur vos préférences.",
- longDescription: `Tonight Pass révolutionne la façon dont les gens découvrent et participent aux événements. Notre plateforme combine technologie et expérience utilisateur pour offrir des recommandations personnalisées et une billetterie simplifiée.
-
-La plateforme met en relation les organisateurs d'événements et les participants, offrant une solution complète de gestion des réservations, de recommandations intelligentes et d'analyse de données. L'application a été conçue pour optimiser l'expérience de découverte d'événements tout en simplifiant leur gestion pour les organisateurs.`,
iconUrl: "/static/images/projects/tonightpass/icon.svg",
showcaseUrl: "/static/images/projects/tonightpass/showcase.jpg",
thumbnailUrl: "/static/images/projects/tonightpass/thumbnail.webp",
@@ -19,165 +14,66 @@ La plateforme met en relation les organisateurs d'événements et les participan
status: "active",
features: [
- {
- title: "Billetterie simplifiée",
- description: "Réservez vos billets en quelques clics pour tous types d'événements",
- icon: Ticket
- },
- {
- title: "Recommandations personnalisées",
- description: "Découvrez des événements adaptés à vos goûts",
- icon: Compass
- },
- {
- title: "E-tickets sécurisés",
- description: "Accédez aux événements avec des billets numériques sécurisés",
- icon: Shield
- }
+ { key: "ticketing", icon: Ticket },
+ { key: "recommendations", icon: Compass },
+ { key: "e-tickets", icon: Shield },
],
technologies: [
- {
- name: "React & React Native",
- description: "Applications web et mobile",
- icon: Code
- },
- {
- name: "Nest.js",
- description: "Backend API",
- icon: Server
- },
- {
- name: "MongoDB",
- description: "Base de données principale",
- icon: Database
- }
+ { key: "react", name: "React & React Native", icon: Code },
+ { key: "nestjs", name: "Nest.js", icon: Server },
+ { key: "mongodb", name: "MongoDB", icon: Database },
],
metrics: [
- {
- label: "Temps gagné",
- value: "45min",
- description: "En moyenne par recherche d'événement",
- },
- {
- label: "Couverture",
- value: "100%",
- description: "Disponible partout en France",
- },
- {
- label: "Facilité",
- value: "1-clic",
- description: "Pour réserver n'importe quel événement",
- }
+ { key: "time-saved", value: "45min" },
+ { key: "coverage", value: "100%" },
+ { key: "ease", value: "1-clic" },
],
team: [
- {
- ref: "antoine-kingue",
- role: "Product Manager",
- },
- {
- ref: "killian-mendy",
- role: "Product Manager",
- },
- {
- ref: "jeremy-baudrin",
- role: "Lead Developer",
- },
- {
- ref: "lucas-bodin",
- role: "Lead Designer",
- },
- {
- ref: "maeva-leclerc",
- role: "Lead Marketing",
- },
- {
- ref: "mareh-mannaa",
- role: "Marketing",
- },
- {
- ref: "alois-gradelet",
- role: "Community Manager",
- },
- {
- ref: "ines-munoz",
- role: "Community Manager",
- },
- {
- ref: "maceo-vaz-da-mota",
- role: "Designer",
- },
- {
- ref: "younes-bessa",
- role: "Developer",
- },
- {
- ref: "alexis-lecourt",
- role: "Developer",
- },
- {
- ref: "oumaima-haddar",
- role: "Developer",
- },
- {
- ref: "alexis-mouchon",
- role: "Developer",
- },
- {
- ref: "amel-tolba",
- role: "Developer",
- },
- {
- ref: "ines-ferreira",
- role: "Developer",
- },
- {
- ref: "jeremy-cailly",
- role: "Developer",
- },
- {
- ref: "asma-derragui",
- role: "Developer"
- },
- {
- ref: "louis-lazare",
- role: "Developer",
- },
+ { ref: "antoine-kingue", role: "Product Manager" },
+ { ref: "killian-mendy", role: "Product Manager" },
+ { ref: "jeremy-baudrin", role: "Lead Developer" },
+ { ref: "lucas-bodin", role: "Lead Designer" },
+ { ref: "maeva-leclerc", role: "Lead Marketing" },
+ { ref: "mareh-mannaa", role: "Marketing" },
+ { ref: "alois-gradelet", role: "Community Manager" },
+ { ref: "ines-munoz", role: "Community Manager" },
+ { ref: "maceo-vaz-da-mota", role: "Designer" },
+ { ref: "younes-bessa", role: "Developer" },
+ { ref: "alexis-lecourt", role: "Developer" },
+ { ref: "oumaima-haddar", role: "Developer" },
+ { ref: "alexis-mouchon", role: "Developer" },
+ { ref: "amel-tolba", role: "Developer" },
+ { ref: "ines-ferreira", role: "Developer" },
+ { ref: "jeremy-cailly", role: "Developer" },
+ { ref: "asma-derragui", role: "Developer" },
+ { ref: "louis-lazare", role: "Developer" },
],
- screenshots: [
- // {
- // url: "/static/images/projects/tonightpass/screenshots/home.jpg",
- // caption: "Page d'accueil de l'application",
- // },
- // {
- // url: "/static/images/projects/tonightpass/screenshots/booking.jpg",
- // caption: "Processus de réservation",
- // },
- ],
+ screenshots: [],
challenges: [
- "Développement d'une expérience de billetterie fluide et intuitive",
- "Création d'un système de recommandation personnalisé",
- "Mise en place d'une infrastructure scalable",
- "Gestion des pics de trafic lors des mises en vente",
+ "ticketing-experience",
+ "recommendation-system",
+ "scalable-infrastructure",
+ "traffic-peaks",
],
-
+
learnings: [
- "Importance de la simplicité dans le parcours de réservation",
- "Nécessité d'une interface adaptée aux différents types d'événements",
- "Gestion efficace d'une base de données d'événements",
- "Équilibre entre rapidité et fiabilité du service",
+ "booking-simplicity",
+ "event-type-interface",
+ "database-management",
+ "speed-reliability-balance",
],
-
+
futurePlans: [
- "Déploiement de bornes dans les établissements",
- "Lancement d'une plateforme de recrutement événementiel",
- "Mise en place d'un service de location de salles",
- "Création d'un réseau de fournisseurs événementiels",
- "Développement d'outils avancés pour les organisateurs",
- "Perfectionnement du système de recommandations",
+ "venue-kiosks",
+ "recruitment-platform",
+ "venue-rental",
+ "supplier-network",
+ "organizer-tools",
+ "recommendation-improvement",
],
-};
\ No newline at end of file
+};
diff --git a/apps/web/src/locales/README.md b/apps/web/src/locales/README.md
index 02baf0658..dcb7220d3 100644
--- a/apps/web/src/locales/README.md
+++ b/apps/web/src/locales/README.md
@@ -4,34 +4,35 @@ Translation files for the onRuntime website.
## Structure
-The translation files mirror the `app/` and `components/` structure:
+The translation files mirror the `src/` structure:
```
locales/
├── en/
│ ├── common.json # Shared (buttons, errors, forms)
-│ ├── layout/
+│ ├── layout/ # → src/components/layout/
│ │ ├── footer.json
│ │ └── navbar.json
-│ ├── app/
-│ │ └── landing/
-│ │ ├── page.json # → app/[locale]/(landing)/page.ts
-│ │ └── customer/
-│ │ └── page.json # → app/[locale]/(landing)/customer/page.ts
-│ └── components/
+│ ├── app/ # → src/app/[locale]/
+│ │ ├── projects/
+│ │ │ └── [id]/
+│ │ │ └── page.json # → src/app/[locale]/projects/[id]/page.tsx
+│ │ └── careers/
+│ │ └── [id]/
+│ │ └── page.json # → src/app/[locale]/careers/[id]/page.tsx
+│ └── components/ # → src/components/
│ └── marketing/
+│ ├── projects/
+│ │ └── sections.json
│ └── landing/
-│ ├── page-switcher.json
-│ ├── visitor/
-│ │ ├── featured.json
-│ │ ├── team.json
-│ │ └── projects.json
-│ └── customer/
-│ └── featured.json
+│ └── visitor/
+│ └── projects.json
└── fr/
└── ...
```
+The namespace used in `getTranslation()` or `useTranslation()` matches the path from `locales/{locale}/`.
+
## Usage
### Server Components
@@ -83,6 +84,10 @@ export default async function ProjectPage({ params }: { params: Promise<{ id: st
- Never use kebab-case as prefix for grouping keys: `hero.title`, `hero.description` (not `hero-title`, `hero-description`)
- Use nested keys for grouping: `nav.home`, `links.contact`
- Keep keys in English: `greeting`, not `salutation`
-- Use interpolation for dynamic values: `"Hello, {name}!"`
+- Use interpolation for dynamic values: `"Hello, {name}!"` (variables can be camelCase to match JS)
+ ```tsx
+ // In JSON: "greeting": "Hello, {name}!"
+ t("greeting", { name: "John" }) // → "Hello, John!"
+ ```
- HTML is supported with `dangerouslySetInnerHTML`: `"Visit Paris"`
- Avoid title case in translations: `"Our services"` (not `"Our Services"`)
diff --git a/apps/web/src/locales/en/app/careers/[id]/page.json b/apps/web/src/locales/en/app/careers/[id]/page.json
index 5cb9690f9..a47ad6f85 100644
--- a/apps/web/src/locales/en/app/careers/[id]/page.json
+++ b/apps/web/src/locales/en/app/careers/[id]/page.json
@@ -4,12 +4,7 @@
"title": "Job posting not found",
"description": "This job posting does not exist or is no longer available."
},
- "title": {
- "suffix": " | Careers"
- },
- "description": {
- "prefix": "Join onRuntime Studio as ",
- "suffix": ". Discover this career opportunity and apply now."
- }
+ "title": "{jobTitle} | Careers",
+ "description": "Join onRuntime Studio as {jobTitle}. Discover this career opportunity and apply now."
}
}
diff --git a/apps/web/src/locales/en/app/projects/[id]/page.json b/apps/web/src/locales/en/app/projects/[id]/page.json
new file mode 100644
index 000000000..16e46aed6
--- /dev/null
+++ b/apps/web/src/locales/en/app/projects/[id]/page.json
@@ -0,0 +1,10 @@
+{
+ "metadata": {
+ "not-found": {
+ "title": "Project not found",
+ "description": "This project does not exist."
+ },
+ "title": "Case study: {name} - Digital project",
+ "description": "Discover how our agency designed and developed {name}. {shortDescription}"
+ }
+}
diff --git a/apps/web/src/locales/en/app/projects/page.json b/apps/web/src/locales/en/app/projects/page.json
new file mode 100644
index 000000000..d69236888
--- /dev/null
+++ b/apps/web/src/locales/en/app/projects/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Project portfolio | Web, mobile and design",
+ "description": "Discover our portfolio of web, mobile and design development projects. Creations for various clients and our innovative internal projects."
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/careers/job-details.json b/apps/web/src/locales/en/components/marketing/careers/job-details.json
index 9de1b5456..30fb64a95 100644
--- a/apps/web/src/locales/en/components/marketing/careers/job-details.json
+++ b/apps/web/src/locales/en/components/marketing/careers/job-details.json
@@ -2,10 +2,7 @@
"back": "Back to job offers",
"share": {
"button": "Share",
- "text": {
- "prefix": "Discover this opportunity: ",
- "suffix": " at onRuntime Studio"
- },
+ "text": "Discover this opportunity: {jobTitle} at onRuntime Studio",
"copied": "Link copied to clipboard!"
},
"apply": "Apply now",
diff --git a/apps/web/src/locales/en/components/marketing/projects/card.json b/apps/web/src/locales/en/components/marketing/projects/card.json
new file mode 100644
index 000000000..856eb8880
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/projects/card.json
@@ -0,0 +1,6 @@
+{
+ "tags": {
+ "featured": "Featured",
+ "open-source": "Open Source"
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/projects/sections.json b/apps/web/src/locales/en/components/marketing/projects/sections.json
new file mode 100644
index 000000000..aa75b40b2
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/projects/sections.json
@@ -0,0 +1,22 @@
+{
+ "featured": {
+ "title": "Featured projects",
+ "view-project": "View project"
+ },
+ "studio": {
+ "title": "Studio projects"
+ },
+ "customer": {
+ "title": "Customer projects",
+ "coming-soon": "Coming soon",
+ "empty": {
+ "description": "Our customer projects are being prepared. Contact us to learn more about our work or to discuss your project.",
+ "button": "Discuss your project"
+ }
+ },
+ "tags": {
+ "featured": "Featured",
+ "open-source": "Open Source",
+ "customer": "Customer"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/projects/dark-theme-instagram.json b/apps/web/src/locales/en/constants/projects/dark-theme-instagram.json
new file mode 100644
index 000000000..500e53db0
--- /dev/null
+++ b/apps/web/src/locales/en/constants/projects/dark-theme-instagram.json
@@ -0,0 +1,46 @@
+{
+ "short-description": "A browser extension that transforms Instagram into dark mode, similar to the iOS app.",
+ "description": "Change the theme of Instagram.com to dark mode when the system is in dark mode.",
+ "long-description": "Dark Theme for Instagram™ is a browser extension that transforms the visual experience of Instagram.com by adopting a dark theme, similar to the iOS app appearance.\n\nThe extension offers a simple and elegant solution to reduce eye strain and improve the Instagram browsing experience, while respecting operating system preferences.",
+ "features": {
+ "auto-dark-mode": {
+ "title": "Automatic Dark Mode",
+ "description": "Automatically enable dark theme based on system settings"
+ },
+ "multi-browser": {
+ "title": "Multi-Browser Compatible",
+ "description": "Available for Firefox, Edge, and Chrome"
+ },
+ "open-source": {
+ "title": "Open Source",
+ "description": "Freely accessible and verifiable source code"
+ }
+ },
+ "technologies": {
+ "javascript": { "description": "Extension development" },
+ "chrome-api": { "description": "Browser integration" },
+ "css": { "description": "Theme customization" }
+ },
+ "metrics": {
+ "users": { "label": "Users", "description": "Active users" },
+ "installs": { "label": "Installs", "description": "Total installations" },
+ "open-source": { "label": "Open Source", "description": "Public source code" }
+ },
+ "screenshots": {
+ "dark-interface": { "caption": "Instagram interface in dark mode" }
+ },
+ "challenges": {
+ "instagram-updates-compatibility": "Maintaining compatibility with Instagram's frequent updates",
+ "cross-browser-consistency": "Ensuring a consistent dark theme across different browsers",
+ "browser-performance": "Minimizing impact on browser performance"
+ },
+ "learnings": {
+ "dynamic-interface-modification": "Complexity of dynamically modifying web interfaces",
+ "cross-browser-compatibility": "Importance of cross-browser compatibility",
+ "platform-updates-management": "Managing frequent web platform updates"
+ },
+ "future-plans": {
+ "more-customization": "Adding more customization options",
+ "instagram-versions-compatibility": "Improving compatibility with different Instagram versions"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/projects/expatfacilities.json b/apps/web/src/locales/en/constants/projects/expatfacilities.json
new file mode 100644
index 000000000..96d61fb7e
--- /dev/null
+++ b/apps/web/src/locales/en/constants/projects/expatfacilities.json
@@ -0,0 +1,81 @@
+{
+ "short-description": "Complete platform for student expatriation support, integrating housing, visa, transport, and local support.",
+ "description": "Development of a full-stack platform enabling French students to manage their expatriation from A to Z with integrated services and a network of local ambassadors.",
+ "long-description": "Expat Facilities was a revolutionary French startup that simplified expatriation for students. Our team developed a complete platform from scratch, evolving from a simple landing page to a sophisticated solution combining Airbnb-like features with an expatriation services ecosystem.\n\nThe platform integrated multiple partner APIs to offer a unified experience: housing search via partners like Spotahome, flight bookings with Lufthansa, specialized insurance, and a unique system of local ambassadors present in over 70 countries.\n\nThe main technical challenge was orchestrating dozens of third-party APIs to create a smooth and coherent user experience, while managing the complexities of international payments and matching between students and local ambassadors.",
+ "features": {
+ "housing-platform": {
+ "title": "Integrated housing platform",
+ "description": "Search and book student housing via partner API integrations like Spotahome"
+ },
+ "ambassador-network": {
+ "title": "Local ambassador network",
+ "description": "Over 300 student ambassadors in 70 countries to support newcomers on-site"
+ },
+ "visa-services": {
+ "title": "Visa and administrative services",
+ "description": "Complete visa process management and personalized administrative support"
+ },
+ "transport-logistics": {
+ "title": "Transport and logistics",
+ "description": "Flight bookings (Lufthansa partnership), trains, and local transport with preferential rates"
+ },
+ "expat-insurance": {
+ "title": "Expatriation insurance",
+ "description": "Specialized insurance for temporary expatriation in partnership with Mondial Assistance and Allianz"
+ },
+ "advanced-tracking": {
+ "title": "Advanced tracking",
+ "description": "Real-time tracking of all processes with notifications and dashboard interface"
+ }
+ },
+ "technologies": {
+ "nextjs": { "description": "React framework for frontend" },
+ "nestjs": { "description": "Robust and modular API backend" },
+ "mongodb": { "description": "Main database" },
+ "graphql": { "description": "Unified API for data" },
+ "google-cloud": { "description": "Cloud infrastructure and services" },
+ "stripe": { "description": "International payments" },
+ "typescript": { "description": "Type-safe development" },
+ "styled-components": { "description": "Styling and theming" }
+ },
+ "metrics": {
+ "countries": { "label": "Countries covered", "description": "Available expatriation destinations" },
+ "ambassadors": { "label": "Ambassadors", "description": "Student ambassadors worldwide" },
+ "users": { "label": "Users", "description": "Student platform users" }
+ },
+ "screenshots": {
+ "redesign": { "caption": "Platform redesign" },
+ "testimonials": { "caption": "Testimonials and partners" },
+ "flyer-bank": { "caption": "Flyer for partner banks" },
+ "about-team": { "caption": "About the team and call to Action" },
+ "housing-hero": { "caption": "Housing section with integrated search" },
+ "housing-cta": { "caption": "Call to Action for housing section" },
+ "services-hero": { "caption": "Services section with offer presentation" },
+ "insurance-hero": { "caption": "Insurance section with offer explanation" },
+ "insurance-plans": { "caption": "Detailed insurance plans" },
+ "insurance-benefits": { "caption": "Insurance benefits offered" },
+ "contact-success": { "caption": "Contact form with success" }
+ },
+ "challenges": {
+ "third-party-api-integration": "Integrating dozens of third-party APIs (Spotahome, Lufthansa, insurance) into a unified experience",
+ "international-payments": "Managing international payments with Stripe in multiple currencies and regulations",
+ "student-ambassador-matching": "Developing a student/ambassador matching system based on geolocation",
+ "scalable-architecture": "Scalable architecture to support rapid growth (70 countries, 300+ ambassadors)",
+ "real-time-availability": "Real-time synchronization of housing availability between partner platforms",
+ "multilingual-interface": "Multilingual interface and adaptation to local specificities of each country"
+ },
+ "learnings": {
+ "api-orchestration-complexity": "Complexity of orchestrating third-party APIs with different formats and limitations",
+ "multi-partner-error-handling": "Crucial importance of error handling in a multi-partner ecosystem",
+ "internationalization-challenges": "Internationalization challenges beyond translation (currencies, regulations, cultures)",
+ "microservices-architecture": "Essential microservices architecture to isolate partner integrations",
+ "complex-ux-simplification": "Critical UX/UI to transform a complex process into a smooth experience",
+ "partner-relations": "Managing partner relations and technical negotiations for integrations"
+ },
+ "future-plans": {
+ "other-expat-types": "Expansion to other types of expatriation (professionals, retirees)",
+ "ai-matching": "AI to optimize student/ambassador matching",
+ "ambassador-mobile-app": "Native mobile app for ambassadors",
+ "ambassador-training": "Training platform for ambassadors"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/projects/kartrak.json b/apps/web/src/locales/en/constants/projects/kartrak.json
new file mode 100644
index 000000000..bebdedf04
--- /dev/null
+++ b/apps/web/src/locales/en/constants/projects/kartrak.json
@@ -0,0 +1,57 @@
+{
+ "short-description": "Eco-friendly activity tracking. Monitor your online footprint in a fun way.",
+ "description": "A browser extension that helps you understand and reduce your environmental impact online.",
+ "long-description": "Kartrak is an innovative browser extension that raises user awareness about their digital carbon footprint. By monitoring your online activity, Kartrak provides detailed insights into your internet consumption and its environmental impact.\n\nThe extension uses advanced algorithms based on Ecoindex to calculate your browsing carbon footprint, while offering personalized suggestions to reduce your impact. Ecoindex is a recognized methodology that evaluates the environmental impact of websites by analyzing their technical complexity, weight, and energy efficiency.\n\nWith a fun and educational approach, Kartrak makes environmental awareness accessible and engaging.",
+ "features": {
+ "real-time-tracking": {
+ "title": "Real-time tracking",
+ "description": "Visualize your digital carbon footprint in real-time"
+ },
+ "personalized-suggestions": {
+ "title": "Personalized suggestions",
+ "description": "Receive tailored advice to reduce your impact"
+ },
+ "detailed-stats": {
+ "title": "Detailed statistics",
+ "description": "Analyze your browsing habits and their impact"
+ },
+ "ecological-goals": {
+ "title": "Ecological goals",
+ "description": "Set goals and track your progress"
+ }
+ },
+ "technologies": {
+ "typescript": { "description": "Browser extension" },
+ "react": { "description": "User interface" },
+ "nodejs": { "description": "Backend and API" },
+ "chrome-api": { "description": "Browser integration" }
+ },
+ "metrics": {
+ "sites-analyzed": { "label": "Sites analyzed", "description": "Compatible with all websites" },
+ "open-source": { "label": "Open Source", "description": "Public source code" },
+ "confidential": { "label": "Confidential", "description": "No user data collected" }
+ },
+ "screenshots": {
+ "dashboard": { "caption": "Main dashboard" },
+ "stats": { "caption": "Detailed statistics" }
+ },
+ "challenges": {
+ "carbon-calculation": "Accurate carbon footprint calculation",
+ "privacy-protection": "Protecting user privacy",
+ "background-performance": "Extension performance in the background",
+ "environmental-data-accuracy": "Accuracy of environmental data"
+ },
+ "learnings": {
+ "environmental-impact-complexity": "Complexity of environmental impact calculation",
+ "user-engagement": "Importance of user engagement",
+ "accuracy-performance-balance": "Balance between accuracy and performance",
+ "navigation-ux": "UX adapted to browsing habits"
+ },
+ "future-plans": {
+ "more-browsers": "Support for more browsers",
+ "eco-tools-integration": "Integration with other eco-friendly tools",
+ "community-features": "Community features",
+ "personalized-reports": "Personalized detailed reports",
+ "auto-close-tabs": "Automatic closing of unused tabs"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/projects/kitchn.json b/apps/web/src/locales/en/constants/projects/kitchn.json
new file mode 100644
index 000000000..82f9421bc
--- /dev/null
+++ b/apps/web/src/locales/en/constants/projects/kitchn.json
@@ -0,0 +1,56 @@
+{
+ "short-description": "A modern, performant, and highly customizable React and React Native component library, inspired by Geist UI and Vercel Design.",
+ "description": "A complete suite of styled-components designed to create consistent and elegant user interfaces, maintained by Tonight Pass.",
+ "long-description": "Kitchn is a comprehensive UI component library that accelerates the development of modern web and mobile applications.\n\nInspired by Geist UI and Vercel Design, it stands out with its minimalist approach and ease of use, offering a collection of optimized components built with styled-components and TypeScript.\n\nEach component is designed to be modular, performant, and highly customizable, allowing development teams to quickly create consistent user interfaces while maintaining an excellent developer experience.",
+ "features": {
+ "modular-architecture": {
+ "title": "Modular Architecture",
+ "description": "Independent and reusable components designed to work together harmoniously"
+ },
+ "flexible-themes": {
+ "title": "Flexible Themes",
+ "description": "Full support for light and dark modes with an extensible theme system"
+ },
+ "cross-platform": {
+ "title": "Cross-Platform",
+ "description": "Native support for React and React Native for a consistent experience across all platforms"
+ },
+ "interactive-docs": {
+ "title": "Interactive Documentation",
+ "description": "Comprehensive documentation with examples and playground for quick onboarding"
+ }
+ },
+ "technologies": {
+ "styled-components": { "description": "CSS-in-JS styles" },
+ "react": { "description": "Web UI library" },
+ "react-native": { "description": "Native mobile components" },
+ "typescript": { "description": "Type safety and auto-completion" },
+ "storybook": { "description": "Interactive documentation" }
+ },
+ "metrics": {
+ "components": { "label": "Components", "description": "Reusable UI components" },
+ "downloads": { "label": "Downloads", "description": "Monthly downloads" },
+ "github-stars": { "label": "Github Stars", "description": "Stars on GitHub" }
+ },
+ "screenshots": {
+ "responsive": { "caption": "Responsive components" },
+ "themable": { "caption": "Customizable themes" }
+ },
+ "challenges": {
+ "visual-consistency": "Maintaining perfect visual consistency between web and mobile platforms",
+ "bundle-optimization": "Optimizing bundle size while preserving feature richness",
+ "react-compatibility": "Ensuring compatibility with different React versions",
+ "backward-compatibility": "Guaranteeing backward compatibility during updates"
+ },
+ "learnings": {
+ "clear-documentation": "Crucial importance of clear and detailed documentation",
+ "modular-architecture": "Need for modular architecture for maintainability",
+ "automated-testing": "Value of automated testing for reliability",
+ "developer-experience": "Impact of developer experience on adoption"
+ },
+ "future-plans": {
+ "component-library-expansion": "Enriching the component library",
+ "performance-optimization": "Continuous performance optimizations",
+ "framework-compatibility": "Extending compatibility with modern frameworks"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/projects/shadowbonus.json b/apps/web/src/locales/en/constants/projects/shadowbonus.json
new file mode 100644
index 000000000..581d4a6e5
--- /dev/null
+++ b/apps/web/src/locales/en/constants/projects/shadowbonus.json
@@ -0,0 +1,53 @@
+{
+ "short-description": "Affiliate platform for streamers specialized in online casino bonuses and box opening.",
+ "description": "Affiliate website developed for streamer vitapvp, showcasing the best bonuses and benefits from partner casinos with redirection to affiliate links.",
+ "long-description": "ShadowBonus is an affiliate platform developed for streamer vitapvp, designed to clearly and attractively present the best bonuses and benefits from partner online casinos.\n\nThe project focuses on the essentials: a clean interface that highlights partner offers and facilitates conversion to affiliate links. Developed with React and styled-components, the site prioritizes ease of use and conversion efficiency.\n\nOur approach focused on a smooth user experience allowing vitapvp's viewers to quickly discover the best available offers and easily access partner platforms.",
+ "features": {
+ "partner-showcase": {
+ "title": "Partner showcase",
+ "description": "Clear and attractive presentation of the streamer's partner casinos and platforms"
+ },
+ "bonus-comparison": {
+ "title": "Bonus comparison",
+ "description": "Highlighting the best bonuses and benefits available for viewers"
+ },
+ "affiliate-redirect": {
+ "title": "Affiliate redirection",
+ "description": "Optimized redirection system to partner affiliate links"
+ },
+ "responsive-interface": {
+ "title": "Responsive interface",
+ "description": "Adaptive design for optimal experience on all devices"
+ }
+ },
+ "technologies": {
+ "react": { "description": "JavaScript library for user interface" },
+ "styled-components": { "description": "CSS-in-JS styling for a modern approach" },
+ "cloudflare": { "description": "Hosting and continuous deployment" }
+ },
+ "metrics": {
+ "weekly-visits": { "label": "Weekly visits", "description": "At launch in July 2021" },
+ "dev-time": { "label": "Development time", "description": "Fast and efficient delivery" },
+ "team-size": { "label": "Team", "description": "Small and agile team" }
+ },
+ "screenshots": {
+ "homepage": { "caption": "Homepage showcasing partner offers" },
+ "partners": { "caption": "Partner casinos and platforms section" }
+ },
+ "challenges": {
+ "attractive-interface": "Creating an attractive interface to highlight partner offers",
+ "conversion-optimization": "Optimizing conversion rates to affiliate links",
+ "simple-react-solution": "Developing a simple but effective React solution",
+ "cross-device-experience": "Ensuring a smooth user experience on all devices"
+ },
+ "learnings": {
+ "affiliate-simplicity": "Importance of simplicity in affiliate projects",
+ "streamer-conversion": "Optimizing conversion journeys for streamers",
+ "react-styled-components": "Fast and efficient development with React and styled-components",
+ "gaming-streaming-needs": "Adapting to the specific needs of the gaming streaming world"
+ },
+ "future-plans": {
+ "client-transfer": "The project was transferred to the client for maintenance",
+ "streamer-evolutions": "Possible evolutions based on the streamer's needs"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/projects/tonightpass.json b/apps/web/src/locales/en/constants/projects/tonightpass.json
new file mode 100644
index 000000000..d6c2758a5
--- /dev/null
+++ b/apps/web/src/locales/en/constants/projects/tonightpass.json
@@ -0,0 +1,50 @@
+{
+ "short-description": "Discover and book the best events tailored to your tastes.",
+ "description": "Tonight Pass is an innovative platform that simplifies event discovery and booking through a personalized recommendation system based on your preferences.",
+ "long-description": "Tonight Pass revolutionizes the way people discover and attend events. Our platform combines technology and user experience to offer personalized recommendations and simplified ticketing.\n\nThe platform connects event organizers and attendees, providing a complete solution for booking management, smart recommendations, and data analytics. The application was designed to optimize the event discovery experience while simplifying management for organizers.",
+ "features": {
+ "ticketing": {
+ "title": "Simplified ticketing",
+ "description": "Book your tickets in just a few clicks for all types of events"
+ },
+ "recommendations": {
+ "title": "Personalized recommendations",
+ "description": "Discover events tailored to your tastes"
+ },
+ "e-tickets": {
+ "title": "Secure e-tickets",
+ "description": "Access events with secure digital tickets"
+ }
+ },
+ "technologies": {
+ "react": { "description": "Web and mobile applications" },
+ "nestjs": { "description": "Backend API" },
+ "mongodb": { "description": "Main database" }
+ },
+ "metrics": {
+ "time-saved": { "label": "Time saved", "description": "On average per event search" },
+ "coverage": { "label": "Coverage", "description": "Available throughout France" },
+ "ease": { "label": "Ease", "description": "To book any event" }
+ },
+ "screenshots": {},
+ "challenges": {
+ "ticketing-experience": "Developing a smooth and intuitive ticketing experience",
+ "recommendation-system": "Creating a personalized recommendation system",
+ "scalable-infrastructure": "Setting up a scalable infrastructure",
+ "traffic-peaks": "Managing traffic peaks during ticket releases"
+ },
+ "learnings": {
+ "booking-simplicity": "Importance of simplicity in the booking journey",
+ "event-type-interface": "Need for an interface adapted to different event types",
+ "database-management": "Efficient management of an event database",
+ "speed-reliability-balance": "Balance between speed and service reliability"
+ },
+ "future-plans": {
+ "venue-kiosks": "Deploying kiosks in venues",
+ "recruitment-platform": "Launching an event recruitment platform",
+ "venue-rental": "Setting up a venue rental service",
+ "supplier-network": "Creating a network of event suppliers",
+ "organizer-tools": "Developing advanced tools for organizers",
+ "recommendation-improvement": "Improving the recommendation system"
+ }
+}
diff --git a/apps/web/src/locales/en/screens/marketing/projects.json b/apps/web/src/locales/en/screens/marketing/projects.json
new file mode 100644
index 000000000..6b077fb84
--- /dev/null
+++ b/apps/web/src/locales/en/screens/marketing/projects.json
@@ -0,0 +1,97 @@
+{
+ "hero": {
+ "title": "Our projects and achievements",
+ "description": "Discover our portfolio of web, mobile and UI/UX design development projects. Innovative solutions and modern interfaces created by our team of experts.",
+ "subdescription": "From conception to completion, each project reflects our expertise and commitment to creating exceptional digital experiences."
+ },
+ "expertise": {
+ "title": "Our project development expertise",
+ "description": "At onRuntime Studio, we combine creativity, technical expertise and proven methodology to transform your ideas into high-performance, innovative digital solutions.",
+ "cards": {
+ "development": {
+ "title": "Custom development",
+ "description": "Carefully coded solutions using the most suitable technologies for your project and specific objectives."
+ },
+ "design": {
+ "title": "Exceptional UI/UX design",
+ "description": "Elegant and intuitive interfaces that engage your users and effectively convey your brand identity."
+ },
+ "performance": {
+ "title": "Optimal performance",
+ "description": "Fast, responsive and optimized applications to deliver a smooth and enjoyable user experience."
+ }
+ }
+ },
+ "process": {
+ "title": "Our delivery process",
+ "description": "A proven methodology that guarantees quality and success for every project, from initial design to final deployment.",
+ "steps": {
+ "discovery": {
+ "title": "Discovery",
+ "description": "In-depth analysis of your needs, objectives and the specifics of your sector."
+ },
+ "conception": {
+ "title": "Design",
+ "description": "Creating mockups and prototypes to visualize and validate the user experience."
+ },
+ "development": {
+ "title": "Development",
+ "description": "Careful coding with modern technologies and rigorous testing to ensure quality."
+ },
+ "deployment": {
+ "title": "Deployment",
+ "description": "Production launch with ongoing monitoring and support to ensure your project's success."
+ }
+ }
+ },
+ "testimonials": {
+ "title": "What our clients say about us",
+ "description": "Client satisfaction is our top priority. Here are some testimonials from partners we've had the pleasure of working with.",
+ "items": [
+ {
+ "quote": "The onRuntime Studio team transformed our vision into an exceptional digital solution that exceeded all our expectations. Their technical expertise and creativity made all the difference.",
+ "author": "Thomas M. - Marketing director"
+ },
+ {
+ "quote": "A reliable and innovative partner who truly understands our needs. Their methodical approach and transparent communication made the development process enjoyable and stress-free.",
+ "author": "Sophie D. - Startup founder"
+ }
+ ]
+ },
+ "industries": {
+ "title": "Industries we serve",
+ "description": "Our expertise extends to many sectors, with solutions adapted to the specificities of each industry.",
+ "items": {
+ "ecommerce": "E-commerce",
+ "startups": "Startups",
+ "luxury": "Luxury",
+ "institutions": "Institutions"
+ }
+ },
+ "why-us": {
+ "title": "Why choose onRuntime Studio?",
+ "description": "We stand out through our client-centric approach and commitment to excellence.",
+ "items": {
+ "expertise": {
+ "title": "Technical expertise",
+ "description": "A team of experienced developers and designers mastering the latest technologies."
+ },
+ "custom": {
+ "title": "Custom solutions",
+ "description": "Personalized developments that precisely meet your specific needs."
+ },
+ "support": {
+ "title": "Ongoing support",
+ "description": "Quality support throughout the project and after launch."
+ }
+ }
+ },
+ "cta": {
+ "title": "Ready to bring your project to life?",
+ "description": "Contact us today to discuss your idea and discover how our expertise can help you turn it into reality.",
+ "buttons": {
+ "start": "Start a project",
+ "services": "Discover our services"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/screens/marketing/projects/details.json b/apps/web/src/locales/en/screens/marketing/projects/details.json
new file mode 100644
index 000000000..2532b907a
--- /dev/null
+++ b/apps/web/src/locales/en/screens/marketing/projects/details.json
@@ -0,0 +1,65 @@
+{
+ "tags": {
+ "featured": "Featured",
+ "open-source": "Open Source"
+ },
+ "buttons": {
+ "view-project": "View project",
+ "source-code": "Source code"
+ },
+ "info": {
+ "start-date": "Start date",
+ "status": "Status",
+ "team": "Team",
+ "members": "members"
+ },
+ "sections": {
+ "about": "About the project",
+ "metrics": "Impact and metrics",
+ "features": "Key features",
+ "technologies": "Technologies used",
+ "gallery": "Gallery",
+ "team": "The team",
+ "challenges": "Challenges encountered",
+ "learnings": "Key learnings",
+ "future": "Future perspectives"
+ },
+ "cta": {
+ "title": "Interested in this project?",
+ "description": "Discover how we can help you create a similar project.",
+ "button": "Discuss your project"
+ },
+ "tonightpass": {
+ "hero": {
+ "title": "The ticketing that simplifies your events",
+ "subtitle": "From creation to entry, manage everything in 5 minutes",
+ "description": "Complete ticketing solution for event organizers. Create your events, sell your tickets and manage access with professional tools and dedicated support.",
+ "buttons": {
+ "create": "Create my event",
+ "discover": "Discover the solution"
+ },
+ "stats": {
+ "setup": {
+ "value": "5min",
+ "label": "Setup"
+ },
+ "cost": {
+ "value": "$0",
+ "label": "Installation"
+ },
+ "support": {
+ "value": "24/7",
+ "label": "Support"
+ }
+ }
+ },
+ "cta": {
+ "title": "Ready to simplify your ticketing?",
+ "description": "Simplify your event management with a complete and intuitive solution",
+ "buttons": {
+ "start": "Start now",
+ "features": "See all features"
+ }
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/app/careers/[id]/page.json b/apps/web/src/locales/fr/app/careers/[id]/page.json
index c04bf3afb..df8fcb636 100644
--- a/apps/web/src/locales/fr/app/careers/[id]/page.json
+++ b/apps/web/src/locales/fr/app/careers/[id]/page.json
@@ -4,12 +4,7 @@
"title": "Offre d'emploi non trouvée",
"description": "Cette offre d'emploi n'existe pas ou n'est plus disponible."
},
- "title": {
- "suffix": " | Carrières"
- },
- "description": {
- "prefix": "Rejoignez onRuntime Studio en tant que ",
- "suffix": ". Découvrez cette opportunité de carrière et postulez dès maintenant."
- }
+ "title": "{jobTitle} | Carrieres",
+ "description": "Rejoignez onRuntime Studio en tant que {jobTitle}. Decouvrez cette opportunite de carriere et postulez des maintenant."
}
}
diff --git a/apps/web/src/locales/fr/app/projects/[id]/page.json b/apps/web/src/locales/fr/app/projects/[id]/page.json
new file mode 100644
index 000000000..58c16f5e1
--- /dev/null
+++ b/apps/web/src/locales/fr/app/projects/[id]/page.json
@@ -0,0 +1,10 @@
+{
+ "metadata": {
+ "not-found": {
+ "title": "Projet non trouve",
+ "description": "Ce projet n'existe pas."
+ },
+ "title": "Etude de cas : {name} - Projet digital",
+ "description": "Decouvrez comment notre agence a concu et developpe {name}. {shortDescription}"
+ }
+}
diff --git a/apps/web/src/locales/fr/app/projects/page.json b/apps/web/src/locales/fr/app/projects/page.json
new file mode 100644
index 000000000..e57ae37b2
--- /dev/null
+++ b/apps/web/src/locales/fr/app/projects/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Portfolio de projets | Web, mobile et design",
+ "description": "Découvrez notre portfolio de projets en développement web, mobile et design. Des réalisations pour des clients variés et nos projets internes innovants."
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/careers/job-details.json b/apps/web/src/locales/fr/components/marketing/careers/job-details.json
index 1e74580eb..da28898b0 100644
--- a/apps/web/src/locales/fr/components/marketing/careers/job-details.json
+++ b/apps/web/src/locales/fr/components/marketing/careers/job-details.json
@@ -2,11 +2,8 @@
"back": "Retour aux offres",
"share": {
"button": "Partager",
- "text": {
- "prefix": "Découvrez cette opportunité: ",
- "suffix": " chez onRuntime Studio"
- },
- "copied": "Lien copié dans le presse-papier!"
+ "text": "Decouvrez cette opportunite: {jobTitle} chez onRuntime Studio",
+ "copied": "Lien copie dans le presse-papier!"
},
"apply": "Postuler maintenant",
"published": "Publié le",
diff --git a/apps/web/src/locales/fr/components/marketing/projects/card.json b/apps/web/src/locales/fr/components/marketing/projects/card.json
new file mode 100644
index 000000000..05d861eb1
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/projects/card.json
@@ -0,0 +1,6 @@
+{
+ "tags": {
+ "featured": "En vedette",
+ "open-source": "Open Source"
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/projects/sections.json b/apps/web/src/locales/fr/components/marketing/projects/sections.json
new file mode 100644
index 000000000..7eb6cbd7b
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/projects/sections.json
@@ -0,0 +1,22 @@
+{
+ "featured": {
+ "title": "Projets à la une",
+ "view-project": "Voir le projet"
+ },
+ "studio": {
+ "title": "Projets studio"
+ },
+ "customer": {
+ "title": "Projets clients",
+ "coming-soon": "Prochainement",
+ "empty": {
+ "description": "Nos projets clients sont en cours de préparation. Contactez-nous pour en savoir plus sur nos réalisations ou pour discuter de votre projet.",
+ "button": "Discuter de votre projet"
+ }
+ },
+ "tags": {
+ "featured": "Featured",
+ "open-source": "Open Source",
+ "customer": "Client"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/projects/dark-theme-instagram.json b/apps/web/src/locales/fr/constants/projects/dark-theme-instagram.json
new file mode 100644
index 000000000..e81347024
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/projects/dark-theme-instagram.json
@@ -0,0 +1,46 @@
+{
+ "short-description": "Une extension de navigateur qui transforme Instagram en mode sombre, similaire à l'application iOS.",
+ "description": "Changez le thème de Instagram.com en mode sombre lorsque le système est en mode sombre.",
+ "long-description": "Dark Theme for Instagram™ est une extension de navigateur qui transforme l'expérience visuelle de Instagram.com en adoptant un thème sombre, similaire à l'apparence de l'application iOS.\n\nL'extension offre une solution simple et élégante pour réduire la fatigue oculaire et améliorer l'expérience de navigation sur Instagram, tout en respectant les préférences du système d'exploitation.",
+ "features": {
+ "auto-dark-mode": {
+ "title": "Mode Sombre Automatique",
+ "description": "Activez automatiquement le thème sombre basé sur les paramètres système"
+ },
+ "multi-browser": {
+ "title": "Compatible Multi-Navigateurs",
+ "description": "Disponible pour Firefox, Edge et Chrome"
+ },
+ "open-source": {
+ "title": "Open Source",
+ "description": "Code source librement accessible et vérifiable"
+ }
+ },
+ "technologies": {
+ "javascript": { "description": "Développement de l'extension" },
+ "chrome-api": { "description": "Intégration navigateur" },
+ "css": { "description": "Personnalisation du thème" }
+ },
+ "metrics": {
+ "users": { "label": "Utilisateurs", "description": "Utilisateurs actifs" },
+ "installs": { "label": "Installations", "description": "Total d'installations" },
+ "open-source": { "label": "Open Source", "description": "Code source public" }
+ },
+ "screenshots": {
+ "dark-interface": { "caption": "Interface Instagram en mode sombre" }
+ },
+ "challenges": {
+ "instagram-updates-compatibility": "Maintenir la compatibilité avec les mises à jour fréquentes d'Instagram",
+ "cross-browser-consistency": "Assurer un thème sombre cohérent sur différents navigateurs",
+ "browser-performance": "Minimiser l'impact sur les performances du navigateur"
+ },
+ "learnings": {
+ "dynamic-interface-modification": "Complexité de la modification dynamique des interfaces web",
+ "cross-browser-compatibility": "Importance de la compatibilité cross-navigateurs",
+ "platform-updates-management": "Gestion des mises à jour fréquentes des plateformes web"
+ },
+ "future-plans": {
+ "more-customization": "Ajout de plus d'options de personnalisation",
+ "instagram-versions-compatibility": "Amélioration de la compatibilité avec différentes versions d'Instagram"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/projects/expatfacilities.json b/apps/web/src/locales/fr/constants/projects/expatfacilities.json
new file mode 100644
index 000000000..b8b197ae2
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/projects/expatfacilities.json
@@ -0,0 +1,81 @@
+{
+ "short-description": "Plateforme complète d'accompagnement pour l'expatriation étudiante, intégrant logement, visa, transport et support local.",
+ "description": "Développement d'une plateforme full-stack permettant aux étudiants français de gérer leur expatriation de A à Z avec des services intégrés et un réseau d'ambassadeurs locaux.",
+ "long-description": "Expat Facilities était une startup française révolutionnaire qui simplifiait l'expatriation pour les étudiants. Notre équipe a développé une plateforme complète from scratch, évoluant d'une simple landing page vers une solution sophistiquée combinant les fonctionnalités d'Airbnb avec un écosystème de services d'expatriation.\n\nLa plateforme intégrait de multiples APIs partenaires pour offrir une expérience unifiée : recherche de logements via des partenaires comme Spotahome, réservations de vols avec Lufthansa, assurances spécialisées, et un système unique d'ambassadeurs locaux présents dans plus de 70 pays.\n\nLe défi technique principal était l'orchestration de dizaines d'APIs tierces pour créer une expérience utilisateur fluide et cohérente, tout en gérant les complexités des paiements internationaux et du matching entre étudiants et ambassadeurs locaux.",
+ "features": {
+ "housing-platform": {
+ "title": "Plateforme de logement intégrée",
+ "description": "Recherche et réservation de logements étudiants via l'intégration d'APIs partenaires comme Spotahome"
+ },
+ "ambassador-network": {
+ "title": "Réseau d'ambassadeurs locaux",
+ "description": "Plus de 300 ambassadeurs étudiants dans 70 pays pour accompagner sur place les nouveaux arrivants"
+ },
+ "visa-services": {
+ "title": "Services visa et administratif",
+ "description": "Gestion complète des démarches de visa et accompagnement administratif personnalisé"
+ },
+ "transport-logistics": {
+ "title": "Transport et logistique",
+ "description": "Réservation de vols (partenariat Lufthansa), trains, et transport local avec tarifs préférentiels"
+ },
+ "expat-insurance": {
+ "title": "Assurances expatriation",
+ "description": "Assurances spécialisées pour expatriation temporaire en partenariat avec Mondial Assistance et Allianz"
+ },
+ "advanced-tracking": {
+ "title": "Tracking avancé",
+ "description": "Suivi en temps réel de toutes les démarches avec notifications et interface de pilotage"
+ }
+ },
+ "technologies": {
+ "nextjs": { "description": "Framework React pour le frontend" },
+ "nestjs": { "description": "Backend API robuste et modulaire" },
+ "mongodb": { "description": "Base de données principale" },
+ "graphql": { "description": "API unifiée pour les données" },
+ "google-cloud": { "description": "Infrastructure cloud et services" },
+ "stripe": { "description": "Paiements internationaux" },
+ "typescript": { "description": "Développement type-safe" },
+ "styled-components": { "description": "Styling et thématisation" }
+ },
+ "metrics": {
+ "countries": { "label": "Pays couverts", "description": "Destinations d'expatriation disponibles" },
+ "ambassadors": { "label": "Ambassadeurs", "description": "Étudiants ambassadeurs dans le monde" },
+ "users": { "label": "Utilisateurs", "description": "Étudiants utilisateurs de la plateforme" }
+ },
+ "screenshots": {
+ "redesign": { "caption": "Redesign de la plateforme" },
+ "testimonials": { "caption": "Témoignages et partenaires" },
+ "flyer-bank": { "caption": "Flyer pour les banques partenaires" },
+ "about-team": { "caption": "À propos de l'équipe et call to Action" },
+ "housing-hero": { "caption": "Section logement avec recherche intégrée" },
+ "housing-cta": { "caption": "Call to Action pour la section logement" },
+ "services-hero": { "caption": "Section services avec présentation des offres" },
+ "insurance-hero": { "caption": "Section assurance avec explication des offres" },
+ "insurance-plans": { "caption": "Formules d'assurance détaillées" },
+ "insurance-benefits": { "caption": "Avantages des assurances proposées" },
+ "contact-success": { "caption": "Formulaire de contact avec succès" }
+ },
+ "challenges": {
+ "third-party-api-integration": "Intégration de dizaines d'APIs tierces (Spotahome, Lufthansa, assurances) dans une expérience unifiée",
+ "international-payments": "Gestion des paiements internationaux avec Stripe dans multiple devises et réglementations",
+ "student-ambassador-matching": "Développement d'un système de matching étudiants/ambassadeurs basé sur la géolocalisation",
+ "scalable-architecture": "Architecture scalable pour supporter la croissance rapide (70 pays, 300+ ambassadeurs)",
+ "real-time-availability": "Synchronisation en temps réel des disponibilités logements entre plateformes partenaires",
+ "multilingual-interface": "Interface multilingue et adaptation aux spécificités locales de chaque pays"
+ },
+ "learnings": {
+ "api-orchestration-complexity": "Complexité de l'orchestration d'APIs tierces avec des formats et limitations différents",
+ "multi-partner-error-handling": "Importance cruciale de la gestion d'erreur dans un écosystème multi-partenaires",
+ "internationalization-challenges": "Défis de l'internationalisation au-delà de la traduction (devises, réglementations, cultures)",
+ "microservices-architecture": "Architecture microservices essentielle pour isoler les intégrations partenaires",
+ "complex-ux-simplification": "UX/UI critique pour transformer un processus complexe en expérience fluide",
+ "partner-relations": "Gestion des relations partenaires et négociations techniques pour les intégrations"
+ },
+ "future-plans": {
+ "other-expat-types": "Expansion vers d'autres types d'expatriation (professionnels, retraités)",
+ "ai-matching": "IA pour optimiser le matching étudiants/ambassadeurs",
+ "ambassador-mobile-app": "Application mobile native pour les ambassadeurs",
+ "ambassador-training": "Plateforme de formation pour les ambassadeurs"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/projects/kartrak.json b/apps/web/src/locales/fr/constants/projects/kartrak.json
new file mode 100644
index 000000000..f14a08abc
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/projects/kartrak.json
@@ -0,0 +1,57 @@
+{
+ "short-description": "Le suivi d'activité tourné vers l'écologie. Surveillez votre empreinte en ligne de façon ludique.",
+ "description": "Une extension de navigateur qui vous aide à comprendre et réduire votre impact environnemental en ligne.",
+ "long-description": "Kartrak est une extension de navigateur innovante qui sensibilise les utilisateurs à leur empreinte carbone numérique. En surveillant votre activité en ligne, Kartrak fournit des insights détaillés sur votre consommation internet et son impact environnemental.\n\nL'extension utilise des algorithmes avancés basés sur l'Écoindex pour calculer l'empreinte carbone de votre navigation, tout en proposant des suggestions personnalisées pour réduire votre impact. L'Écoindex est une méthodologie reconnue qui évalue l'impact environnemental des sites web en analysant leur complexité technique, leur poids et leur efficacité énergétique.\n\nAvec une approche ludique et éducative, Kartrak rend la conscience environnementale accessible et engageante.",
+ "features": {
+ "real-time-tracking": {
+ "title": "Suivi en temps réel",
+ "description": "Visualisez votre empreinte carbone numérique en temps réel"
+ },
+ "personalized-suggestions": {
+ "title": "Suggestions personnalisées",
+ "description": "Recevez des conseils adaptés pour réduire votre impact"
+ },
+ "detailed-stats": {
+ "title": "Statistiques détaillées",
+ "description": "Analysez vos habitudes de navigation et leur impact"
+ },
+ "ecological-goals": {
+ "title": "Objectifs écologiques",
+ "description": "Fixez-vous des objectifs et suivez vos progrès"
+ }
+ },
+ "technologies": {
+ "typescript": { "description": "Extension navigateur" },
+ "react": { "description": "Interface utilisateur" },
+ "nodejs": { "description": "Backend et API" },
+ "chrome-api": { "description": "Intégration avec le navigateur" }
+ },
+ "metrics": {
+ "sites-analyzed": { "label": "Sites analysés", "description": "Compatible avec tous les sites web" },
+ "open-source": { "label": "Open Source", "description": "Code source public" },
+ "confidential": { "label": "Confidentiel", "description": "Aucune donnée utilisateur collectée" }
+ },
+ "screenshots": {
+ "dashboard": { "caption": "Dashboard principal" },
+ "stats": { "caption": "Statistiques détaillées" }
+ },
+ "challenges": {
+ "carbon-calculation": "Calcul précis de l'empreinte carbone",
+ "privacy-protection": "Protection de la vie privée des utilisateurs",
+ "background-performance": "Performance de l'extension en arrière-plan",
+ "environmental-data-accuracy": "Précision des données environnementales"
+ },
+ "learnings": {
+ "environmental-impact-complexity": "Complexité du calcul d'impact environnemental",
+ "user-engagement": "Importance de l'engagement utilisateur",
+ "accuracy-performance-balance": "Équilibre entre précision et performance",
+ "navigation-ux": "UX adaptée aux habitudes de navigation"
+ },
+ "future-plans": {
+ "more-browsers": "Support de plus de navigateurs",
+ "eco-tools-integration": "Intégration avec d'autres outils écologiques",
+ "community-features": "Fonctionnalités communautaires",
+ "personalized-reports": "Rapports détaillés personnalisés",
+ "auto-close-tabs": "Fermeture automatique des onglets inutilisés"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/projects/kitchn.json b/apps/web/src/locales/fr/constants/projects/kitchn.json
new file mode 100644
index 000000000..56a607399
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/projects/kitchn.json
@@ -0,0 +1,56 @@
+{
+ "short-description": "Une bibliothèque de composants React et React Native moderne, performante et hautement personnalisable, inspirée par Geist UI et Vercel Design.",
+ "description": "Une suite complète de composants styled-components conçue pour créer des interfaces utilisateur cohérentes et élégantes, maintenue par Tonight Pass.",
+ "long-description": "Kitchn est une bibliothèque de composants UI complète qui accélère le développement d'applications web et mobiles modernes.\n\nInspirée par Geist UI et Vercel Design, elle se distingue par son approche minimaliste et sa facilité d'utilisation, offrant une collection de composants optimisés construits avec styled-components et TypeScript.\n\nChaque composant est conçu pour être modulaire, performant et hautement personnalisable, permettant aux équipes de développement de créer rapidement des interfaces utilisateur cohérentes tout en maintenant une excellente expérience développeur.",
+ "features": {
+ "modular-architecture": {
+ "title": "Architecture Modulaire",
+ "description": "Composants indépendants et réutilisables conçus pour fonctionner ensemble harmonieusement"
+ },
+ "flexible-themes": {
+ "title": "Thèmes Flexibles",
+ "description": "Support complet des modes clair et sombre avec un système de thème extensible"
+ },
+ "cross-platform": {
+ "title": "Cross-Platform",
+ "description": "Support natif de React et React Native pour une expérience cohérente sur toutes les plateformes"
+ },
+ "interactive-docs": {
+ "title": "Documentation Interactive",
+ "description": "Documentation exhaustive avec exemples et playground pour une prise en main rapide"
+ }
+ },
+ "technologies": {
+ "styled-components": { "description": "Styles CSS-in-JS" },
+ "react": { "description": "Bibliothèque UI web" },
+ "react-native": { "description": "Composants mobiles natifs" },
+ "typescript": { "description": "Type safety et auto-complétion" },
+ "storybook": { "description": "Documentation interactive" }
+ },
+ "metrics": {
+ "components": { "label": "Composants", "description": "Composants UI réutilisables" },
+ "downloads": { "label": "Téléchargements", "description": "Téléchargements mensuels" },
+ "github-stars": { "label": "Github Stars", "description": "Stars sur GitHub" }
+ },
+ "screenshots": {
+ "responsive": { "caption": "Composants responsive" },
+ "themable": { "caption": "Thèmes personnalisables" }
+ },
+ "challenges": {
+ "visual-consistency": "Maintenir une cohérence visuelle parfaite entre les plateformes web et mobile",
+ "bundle-optimization": "Optimiser la taille du bundle tout en préservant la richesse fonctionnelle",
+ "react-compatibility": "Assurer la compatibilité avec les différentes versions de React",
+ "backward-compatibility": "Garantir la rétrocompatibilité lors des mises à jour"
+ },
+ "learnings": {
+ "clear-documentation": "Importance cruciale d'une documentation claire et détaillée",
+ "modular-architecture": "Nécessité d'une architecture modulaire pour la maintenabilité",
+ "automated-testing": "Valeur des tests automatisés pour la fiabilité",
+ "developer-experience": "Impact de l'expérience développeur sur l'adoption"
+ },
+ "future-plans": {
+ "component-library-expansion": "Enrichissement de la bibliothèque de composants",
+ "performance-optimization": "Optimisations continues des performances",
+ "framework-compatibility": "Extension de la compatibilité avec les frameworks modernes"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/projects/shadowbonus.json b/apps/web/src/locales/fr/constants/projects/shadowbonus.json
new file mode 100644
index 000000000..39c784a7b
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/projects/shadowbonus.json
@@ -0,0 +1,53 @@
+{
+ "short-description": "Plateforme d'affiliation pour streameur spécialisée dans les bonus de casinos en ligne et box opening.",
+ "description": "Site web d'affiliation développé pour le streameur vitapvp, présentant les meilleurs bonus et avantages des casinos partenaires avec redirection vers les liens d'affiliation.",
+ "long-description": "ShadowBonus est une plateforme d'affiliation développée pour le streameur vitapvp, conçue pour présenter de manière claire et attractive les meilleurs bonus et avantages des casinos en ligne partenaires.\n\nLe projet se concentre sur l'essentiel : une interface épurée qui met en valeur les offres partenaires et facilite la conversion vers les liens d'affiliation. Développé avec React et styled-components, le site privilégie la simplicité d'utilisation et l'efficacité de conversion.\n\nNotre approche s'est concentrée sur une expérience utilisateur fluide permettant aux viewers de vitapvp de découvrir rapidement les meilleures offres disponibles et d'accéder facilement aux plateformes partenaires.",
+ "features": {
+ "partner-showcase": {
+ "title": "Vitrine des partenaires",
+ "description": "Présentation claire et attractive des casinos et plateformes partenaires du streameur"
+ },
+ "bonus-comparison": {
+ "title": "Comparaison de bonus",
+ "description": "Mise en avant des meilleurs bonus et avantages disponibles pour les viewers"
+ },
+ "affiliate-redirect": {
+ "title": "Redirection d'affiliation",
+ "description": "Système de redirection optimisé vers les liens d'affiliation partenaires"
+ },
+ "responsive-interface": {
+ "title": "Interface responsive",
+ "description": "Design adaptatif pour une expérience optimale sur tous les appareils"
+ }
+ },
+ "technologies": {
+ "react": { "description": "Bibliothèque JavaScript pour l'interface utilisateur" },
+ "styled-components": { "description": "Styling CSS-in-JS pour une approche moderne" },
+ "cloudflare": { "description": "Hébergement et déploiement continu" }
+ },
+ "metrics": {
+ "weekly-visits": { "label": "Visites hebdomadaires", "description": "Au lancement en juillet 2021" },
+ "dev-time": { "label": "Temps de développement", "description": "Livraison rapide et efficace" },
+ "team-size": { "label": "Équipe", "description": "Équipe réduite et agile" }
+ },
+ "screenshots": {
+ "homepage": { "caption": "Page d'accueil présentant les offres partenaires" },
+ "partners": { "caption": "Section des casinos et plateformes partenaires" }
+ },
+ "challenges": {
+ "attractive-interface": "Créer une interface attractive pour mettre en valeur les offres partenaires",
+ "conversion-optimization": "Optimiser les taux de conversion vers les liens d'affiliation",
+ "simple-react-solution": "Développer une solution simple mais efficace en React",
+ "cross-device-experience": "Assurer une expérience utilisateur fluide sur tous les appareils"
+ },
+ "learnings": {
+ "affiliate-simplicity": "Importance de la simplicité dans les projets d'affiliation",
+ "streamer-conversion": "Optimisation des parcours de conversion pour streameurs",
+ "react-styled-components": "Développement rapide et efficace avec React et styled-components",
+ "gaming-streaming-needs": "Adaptation aux besoins spécifiques du monde du streaming gaming"
+ },
+ "future-plans": {
+ "client-transfer": "Le projet a été transféré au client pour maintenance",
+ "streamer-evolutions": "Évolutions possibles selon les besoins du streameur"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/projects/tonightpass.json b/apps/web/src/locales/fr/constants/projects/tonightpass.json
new file mode 100644
index 000000000..3779e1550
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/projects/tonightpass.json
@@ -0,0 +1,50 @@
+{
+ "short-description": "Découvrez et réservez les meilleurs événements adaptés à vos goûts.",
+ "description": "Tonight Pass est une plateforme innovante qui simplifie la découverte et la réservation d'événements grâce à un système de recommandations personnalisées basé sur vos préférences.",
+ "long-description": "Tonight Pass révolutionne la façon dont les gens découvrent et participent aux événements. Notre plateforme combine technologie et expérience utilisateur pour offrir des recommandations personnalisées et une billetterie simplifiée.\n\nLa plateforme met en relation les organisateurs d'événements et les participants, offrant une solution complète de gestion des réservations, de recommandations intelligentes et d'analyse de données. L'application a été conçue pour optimiser l'expérience de découverte d'événements tout en simplifiant leur gestion pour les organisateurs.",
+ "features": {
+ "ticketing": {
+ "title": "Billetterie simplifiée",
+ "description": "Réservez vos billets en quelques clics pour tous types d'événements"
+ },
+ "recommendations": {
+ "title": "Recommandations personnalisées",
+ "description": "Découvrez des événements adaptés à vos goûts"
+ },
+ "e-tickets": {
+ "title": "E-tickets sécurisés",
+ "description": "Accédez aux événements avec des billets numériques sécurisés"
+ }
+ },
+ "technologies": {
+ "react": { "description": "Applications web et mobile" },
+ "nestjs": { "description": "Backend API" },
+ "mongodb": { "description": "Base de données principale" }
+ },
+ "metrics": {
+ "time-saved": { "label": "Temps gagné", "description": "En moyenne par recherche d'événement" },
+ "coverage": { "label": "Couverture", "description": "Disponible partout en France" },
+ "ease": { "label": "Facilité", "description": "Pour réserver n'importe quel événement" }
+ },
+ "screenshots": {},
+ "challenges": {
+ "ticketing-experience": "Développement d'une expérience de billetterie fluide et intuitive",
+ "recommendation-system": "Création d'un système de recommandation personnalisé",
+ "scalable-infrastructure": "Mise en place d'une infrastructure scalable",
+ "traffic-peaks": "Gestion des pics de trafic lors des mises en vente"
+ },
+ "learnings": {
+ "booking-simplicity": "Importance de la simplicité dans le parcours de réservation",
+ "event-type-interface": "Nécessité d'une interface adaptée aux différents types d'événements",
+ "database-management": "Gestion efficace d'une base de données d'événements",
+ "speed-reliability-balance": "Équilibre entre rapidité et fiabilité du service"
+ },
+ "future-plans": {
+ "venue-kiosks": "Déploiement de bornes dans les établissements",
+ "recruitment-platform": "Lancement d'une plateforme de recrutement événementiel",
+ "venue-rental": "Mise en place d'un service de location de salles",
+ "supplier-network": "Création d'un réseau de fournisseurs événementiels",
+ "organizer-tools": "Développement d'outils avancés pour les organisateurs",
+ "recommendation-improvement": "Perfectionnement du système de recommandations"
+ }
+}
diff --git a/apps/web/src/locales/fr/screens/marketing/projects.json b/apps/web/src/locales/fr/screens/marketing/projects.json
new file mode 100644
index 000000000..374000039
--- /dev/null
+++ b/apps/web/src/locales/fr/screens/marketing/projects.json
@@ -0,0 +1,97 @@
+{
+ "hero": {
+ "title": "Nos projets et réalisations",
+ "description": "Découvrez notre portfolio de projets en développement web, mobile et design UI/UX. Des solutions innovantes et des interfaces modernes réalisées par notre équipe d'experts.",
+ "subdescription": "De la conception à la réalisation, chaque projet témoigne de notre expertise et de notre engagement à créer des expériences numériques exceptionnelles."
+ },
+ "expertise": {
+ "title": "Notre expertise en développement de projets",
+ "description": "Chez onRuntime Studio, nous combinons créativité, expertise technique et méthodologie éprouvée pour transformer vos idées en solutions digitales performantes et innovantes.",
+ "cards": {
+ "development": {
+ "title": "Développement sur mesure",
+ "description": "Des solutions codées avec soin, utilisant les technologies les plus adaptées à votre projet et à vos objectifs spécifiques."
+ },
+ "design": {
+ "title": "Design UI/UX exceptionnel",
+ "description": "Des interfaces élégantes et intuitives qui engagent vos utilisateurs et véhiculent efficacement l'identité de votre marque."
+ },
+ "performance": {
+ "title": "Performance optimale",
+ "description": "Des applications rapides, réactives et optimisées pour offrir une expérience utilisateur fluide et agréable."
+ }
+ }
+ },
+ "process": {
+ "title": "Notre processus de réalisation",
+ "description": "Une méthodologie éprouvée qui garantit la qualité et le succès de chaque projet, de la conception initiale au déploiement final.",
+ "steps": {
+ "discovery": {
+ "title": "Découverte",
+ "description": "Analyse approfondie de vos besoins, objectifs et des spécificités de votre secteur."
+ },
+ "conception": {
+ "title": "Conception",
+ "description": "Création de maquettes et prototypes pour visualiser et valider l'expérience utilisateur."
+ },
+ "development": {
+ "title": "Développement",
+ "description": "Codage soigné avec des technologies modernes et des tests rigoureux pour garantir la qualité."
+ },
+ "deployment": {
+ "title": "Déploiement",
+ "description": "Mise en production avec suivi et support continu pour assurer la réussite de votre projet."
+ }
+ }
+ },
+ "testimonials": {
+ "title": "Ce que nos clients disent de nous",
+ "description": "La satisfaction de nos clients est notre priorité absolue. Voici quelques témoignages de partenaires avec qui nous avons eu le plaisir de collaborer.",
+ "items": [
+ {
+ "quote": "L'équipe d'onRuntime Studio a transformé notre vision en une solution digitale exceptionnelle qui a dépassé toutes nos attentes. Leur expertise technique et leur créativité ont fait toute la différence.",
+ "author": "Thomas M. - Directeur marketing"
+ },
+ {
+ "quote": "Un partenaire fiable et innovant qui comprend réellement nos besoins. Leur approche méthodique et leur communication transparente ont rendu le processus de développement agréable et sans stress.",
+ "author": "Sophie D. - Fondatrice startup"
+ }
+ ]
+ },
+ "industries": {
+ "title": "Industries que nous servons",
+ "description": "Notre expertise s'étend à de nombreux secteurs, avec des solutions adaptées aux spécificités de chaque industrie.",
+ "items": {
+ "ecommerce": "E-commerce",
+ "startups": "Startups",
+ "luxury": "Luxe",
+ "institutions": "Institutions"
+ }
+ },
+ "why-us": {
+ "title": "Pourquoi choisir onRuntime Studio ?",
+ "description": "Nous nous distinguons par notre approche centrée sur le client et notre engagement envers l'excellence.",
+ "items": {
+ "expertise": {
+ "title": "Expertise technique",
+ "description": "Une équipe de développeurs et designers expérimentés maîtrisant les dernières technologies."
+ },
+ "custom": {
+ "title": "Solutions sur mesure",
+ "description": "Des développements personnalisés qui répondent précisément à vos besoins spécifiques."
+ },
+ "support": {
+ "title": "Support continu",
+ "description": "Un accompagnement de qualité tout au long du projet et après le lancement."
+ }
+ }
+ },
+ "cta": {
+ "title": "Prêt à donner vie à votre projet ?",
+ "description": "Contactez-nous dès aujourd'hui pour discuter de votre idée et découvrir comment notre expertise peut vous aider à la transformer en réalité.",
+ "buttons": {
+ "start": "Démarrer un projet",
+ "services": "Découvrir nos services"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/screens/marketing/projects/details.json b/apps/web/src/locales/fr/screens/marketing/projects/details.json
new file mode 100644
index 000000000..ebbfe4e66
--- /dev/null
+++ b/apps/web/src/locales/fr/screens/marketing/projects/details.json
@@ -0,0 +1,65 @@
+{
+ "tags": {
+ "featured": "Projet phare",
+ "open-source": "Open Source"
+ },
+ "buttons": {
+ "view-project": "Voir le projet",
+ "source-code": "Code source"
+ },
+ "info": {
+ "start-date": "Date de début",
+ "status": "Statut",
+ "team": "Équipe",
+ "members": "membres"
+ },
+ "sections": {
+ "about": "À propos du projet",
+ "metrics": "Impact et métriques",
+ "features": "Fonctionnalités clés",
+ "technologies": "Technologies utilisées",
+ "gallery": "Galerie",
+ "team": "L'équipe",
+ "challenges": "Défis rencontrés",
+ "learnings": "Apprentissages clés",
+ "future": "Perspectives futures"
+ },
+ "cta": {
+ "title": "Intéressé par ce projet ?",
+ "description": "Découvrez comment nous pouvons vous aider à réaliser un projet similaire.",
+ "button": "Discuter de votre projet"
+ },
+ "tonightpass": {
+ "hero": {
+ "title": "La billetterie qui simplifie vos événements",
+ "subtitle": "De la création à l'entrée, gérez tout en 5 minutes",
+ "description": "Solution complète de billetterie pour organisateurs d'événements. Créez vos événements, vendez vos billets et gérez l'accès avec des outils professionnels et un support dédié.",
+ "buttons": {
+ "create": "Créer mon événement",
+ "discover": "Découvrir la solution"
+ },
+ "stats": {
+ "setup": {
+ "value": "5min",
+ "label": "Configuration"
+ },
+ "cost": {
+ "value": "0€",
+ "label": "Installation"
+ },
+ "support": {
+ "value": "24/7",
+ "label": "Support"
+ }
+ }
+ },
+ "cta": {
+ "title": "Prêt à simplifier votre billetterie ?",
+ "description": "Simplifiez la gestion de vos événements avec une solution complète et intuitive",
+ "buttons": {
+ "start": "Commencer maintenant",
+ "features": "Voir toutes les fonctionnalités"
+ }
+ }
+ }
+}
diff --git a/apps/web/src/screens/marketing/careers/job-details.tsx b/apps/web/src/screens/marketing/careers/job-details.tsx
index 8a5c0364b..c5f637b2b 100644
--- a/apps/web/src/screens/marketing/careers/job-details.tsx
+++ b/apps/web/src/screens/marketing/careers/job-details.tsx
@@ -63,7 +63,7 @@ const JobDetailPage: React.FC = ({ job }) => {
navigator
.share({
title: job.title,
- text: t("share.text.prefix") + job.title + t("share.text.suffix"),
+ text: t("share.text", { jobTitle: job.title }),
url: window.location.href,
})
.catch((error) => console.log("Error sharing", error));
diff --git a/apps/web/src/screens/marketing/projects/details/index.tsx b/apps/web/src/screens/marketing/projects/details/index.tsx
index b7c129290..b36c27305 100644
--- a/apps/web/src/screens/marketing/projects/details/index.tsx
+++ b/apps/web/src/screens/marketing/projects/details/index.tsx
@@ -19,6 +19,7 @@ import {
} from "lucide-react";
import TeamMembers from "@/constants/team-members";
import { env } from "process";
+import { getTranslation } from "@/lib/translations.server";
import { MemberWebsiteButton } from "@/components/marketing/projects/details/member-website-button";
import { GoogleAdsConversionLink } from "@/components/marketing/projects/details/google-ads-conversion";
@@ -27,32 +28,40 @@ interface ProjectPageProps {
project: Project;
}
-const ProjectPage: React.FC = ({ project }) => {
+const ProjectPage: React.FC = async ({ project }) => {
+ const { t, locale } = await getTranslation("screens/marketing/projects/details");
+ const { t: tProject } = await getTranslation(`constants/projects/${project.id}`);
+
+ const getTagLabel = (tag: Tag) => {
+ if (tag === Tag.FEATURED) return t("tags.featured");
+ if (tag === Tag.OPEN_SOURCE) return t("tags.open-source");
+ return tag;
+ };
+
return (
{project.id === "tonightpass" ? (
- La billetterie qui simplifie vos événements
+ {t("tonightpass.hero.title")}
-
+
- De la création à l'entrée, gérez tout en 5 minutes
+ {t("tonightpass.hero.subtitle")}
-
+
- Solution complète de billetterie pour organisateurs d'événements.
- Créez vos événements, vendez vos billets et gérez l'accès avec des outils professionnels et un support dédié.
+ {t("tonightpass.hero.description")}
- Découvrez comment nous pouvons vous aider à réaliser un projet
- similaire.
-
+
{t("cta.description")}
- Discuter de votre projet
+ {t("cta.button")}
diff --git a/apps/web/src/screens/marketing/projects/index.tsx b/apps/web/src/screens/marketing/projects/index.tsx
index aa98d16ac..b9ff759fc 100644
--- a/apps/web/src/screens/marketing/projects/index.tsx
+++ b/apps/web/src/screens/marketing/projects/index.tsx
@@ -1,30 +1,46 @@
-import React from 'react';
-import Link from 'next/link';
+"use client";
+
+import React from "react";
import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
-import { ArrowRight, BriefcaseBusiness, CheckCircle, Code, Gem, Globe, Palette, Rocket, Star, Users } from "lucide-react";
+import {
+ ArrowRight,
+ BriefcaseBusiness,
+ CheckCircle,
+ Code,
+ Gem,
+ Globe,
+ Palette,
+ Rocket,
+ Star,
+ Users,
+} from "lucide-react";
import Routes from "@/constants/routes";
-import { FeaturedProjects, StudioProjects, CustomerProjects } from '@/components/marketing/projects/sections';
+import {
+ FeaturedProjects,
+ StudioProjects,
+ CustomerProjects,
+} from "@/components/marketing/projects/sections";
+import { Link } from "@onruntime/translations/next";
+import { useTranslation } from "@onruntime/translations/react";
const ProjectsPage = () => {
+ const { t } = useTranslation("screens/marketing/projects");
+
return (
- Nos projets et réalisations
+ {t("hero.title")}
-
+
- Découvrez notre portfolio de projets en développement web, mobile et design UI/UX.
- Des solutions innovantes et des interfaces modernes réalisées par notre équipe d'experts.
+ {t("hero.description")}
-
- De la conception à la réalisation, chaque projet témoigne de notre expertise
- et de notre engagement à créer des expériences numériques exceptionnelles.
-
+
{t("hero.subdescription")}
{
- Notre expertise en développement de projets
+ {t("expertise.title")}
- Chez onRuntime Studio, nous combinons créativité, expertise technique et méthodologie éprouvée
- pour transformer vos idées en solutions digitales performantes et innovantes.
+ {t("expertise.description")}
@@ -52,10 +67,11 @@ const ProjectsPage = () => {
-
Développement sur mesure
+
+ {t("expertise.cards.development.title")}
+
- Des solutions codées avec soin, utilisant les technologies les plus adaptées
- à votre projet et à vos objectifs spécifiques.
+ {t("expertise.cards.development.description")}
@@ -63,10 +79,11 @@ const ProjectsPage = () => {
-
Design UI/UX exceptionnel
+
+ {t("expertise.cards.design.title")}
+
- Des interfaces élégantes et intuitives qui engagent vos utilisateurs
- et véhiculent efficacement l'identité de votre marque.
+ {t("expertise.cards.design.description")}
@@ -74,10 +91,11 @@ const ProjectsPage = () => {
-
Performance optimale
+
+ {t("expertise.cards.performance.title")}
+
- Des applications rapides, réactives et optimisées pour offrir
- une expérience utilisateur fluide et agréable.
+ {t("expertise.cards.performance.description")}
@@ -88,11 +106,10 @@ const ProjectsPage = () => {
- Notre processus de Réalisation
+ {t("process.title")}
- Une méthodologie éprouvée qui garantit la qualité et le succès de chaque projet,
- de la conception initiale au déploiement final.
+ {t("process.description")}
@@ -101,9 +118,11 @@ const ProjectsPage = () => {
1
-
Découverte
+
+ {t("process.steps.discovery.title")}
+
- Analyse approfondie de vos besoins, objectifs et des spécificités de votre secteur.
+ {t("process.steps.discovery.description")}
@@ -111,9 +130,11 @@ const ProjectsPage = () => {
2
-
Conception
+
+ {t("process.steps.conception.title")}
+
- Création de maquettes et prototypes pour visualiser et valider l'expérience utilisateur.
+ {t("process.steps.conception.description")}
@@ -121,9 +142,11 @@ const ProjectsPage = () => {
3
-
Développement
+
+ {t("process.steps.development.title")}
+
- Codage soigné avec des technologies modernes et des tests rigoureux pour garantir la qualité.
+ {t("process.steps.development.description")}
@@ -131,9 +154,11 @@ const ProjectsPage = () => {
4
-
Déploiement
+
+ {t("process.steps.deployment.title")}
+
- Mise en production avec suivi et support continu pour assurer la réussite de votre projet.
+ {t("process.steps.deployment.description")}
- La satisfaction de nos clients est notre priorité absolue. Voici quelques témoignages
- de partenaires avec qui nous avons eu le plaisir de collaborer.
+ {t("testimonials.description")}
- "L'équipe d'onRuntime Studio a transformé notre vision en une solution digitale
- exceptionnelle qui a dépassé toutes nos attentes. Leur expertise technique et leur
- créativité ont fait toute la différence."
+ "{t("testimonials.items.0.quote")}"
-
Thomas M. - Directeur Marketing
+
+ {t("testimonials.items.0.author")}
+
- "Un partenaire fiable et innovant qui comprend réellement nos besoins.
- Leur approche méthodique et leur communication transparente ont rendu le
- processus de développement agréable et sans stress."
+ "{t("testimonials.items.1.quote")}"
- Prêt à donner vie à votre projet ?
+ {t("cta.title")}
- Contactez-nous dès aujourd'hui pour discuter de votre idée et découvrir comment
- notre expertise peut vous aider à la transformer en réalité.
+ {t("cta.description")}
- Démarrer un projet
+ {t("cta.buttons.start")}
- Découvrir nos services
+ {t("cta.buttons.services")}
- {index === 0
- ? `Notre expérience avec ce projet nous a permis de développer une expertise particulièrement applicable au secteur ${project.tags.includes(Tag.FEATURED) ? 'des nouvelles technologies' : 'du commerce digital'} dans la région ${agency.region}.`
- : `Les compétences et technologies utilisées dans ce projet sont directement transférables aux besoins des entreprises de ${agency.name}, notamment dans ${project.tags.includes(Tag.FEATURED) ? 'l\'innovation ouverte' : 'la transformation numérique'}.`}
+ {getExpertiseText()}
- Notre expertise applicable aux projets à {agency.name}
+ {t('section.title', { name: agency.name })}
- Découvrez quelques-unes de nos réalisations qui illustrent notre savoir-faire,
- applicable aux défis numériques des entreprises de {agency.region}.
+ {t('section.description', { region: agency.region })}
- Un projet digital pour votre entreprise à {agency.name} ?
+ {t('cta.title', { name: agency.name })}
- Notre expertise est applicable à tous les secteurs, avec une attention particulière aux spécificités du marché {agency.region}.
+ {t('cta.description', { region: agency.region })}
- Discutons de votre projet
+ {t('cta.button')}
diff --git a/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json b/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json
new file mode 100644
index 000000000..e3ae37bbd
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json
@@ -0,0 +1,23 @@
+{
+ "project": {
+ "market-application": "Application to the {region} market",
+ "expertise-featured": "Our experience with this project has allowed us to develop expertise particularly applicable to the new technologies sector in the {region} region.",
+ "expertise-digital": "Our experience with this project has allowed us to develop expertise particularly applicable to the digital commerce sector in the {region} region.",
+ "skills-featured": "The skills and technologies used in this project are directly transferable to the needs of businesses in {name}, particularly in open innovation.",
+ "skills-digital": "The skills and technologies used in this project are directly transferable to the needs of businesses in {name}, particularly in digital transformation.",
+ "view-project": "View project"
+ },
+ "tags": {
+ "featured": "Featured project",
+ "open-source": "Open Source"
+ },
+ "section": {
+ "title": "Our expertise applicable to projects in {name}",
+ "description": "Discover some of our achievements that illustrate our know-how, applicable to the digital challenges of businesses in {region}."
+ },
+ "cta": {
+ "title": "A digital project for your business in {name}?",
+ "description": "Our expertise is applicable to all sectors, with particular attention to the specificities of the {region} market.",
+ "button": "Let's discuss your project"
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json b/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json
new file mode 100644
index 000000000..c57300db4
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json
@@ -0,0 +1,23 @@
+{
+ "project": {
+ "market-application": "Application au marché {region}",
+ "expertise-featured": "Notre expérience avec ce projet nous a permis de développer une expertise particulièrement applicable au secteur des nouvelles technologies dans la région {region}.",
+ "expertise-digital": "Notre expérience avec ce projet nous a permis de développer une expertise particulièrement applicable au secteur du commerce digital dans la région {region}.",
+ "skills-featured": "Les compétences et technologies utilisées dans ce projet sont directement transférables aux besoins des entreprises de {name}, notamment dans l'innovation ouverte.",
+ "skills-digital": "Les compétences et technologies utilisées dans ce projet sont directement transférables aux besoins des entreprises de {name}, notamment dans la transformation numérique.",
+ "view-project": "Voir le projet"
+ },
+ "tags": {
+ "featured": "Projet phare",
+ "open-source": "Open Source"
+ },
+ "section": {
+ "title": "Notre expertise applicable aux projets à {name}",
+ "description": "Découvrez quelques-unes de nos réalisations qui illustrent notre savoir-faire, applicable aux défis numériques des entreprises de {region}."
+ },
+ "cta": {
+ "title": "Un projet digital pour votre entreprise à {name} ?",
+ "description": "Notre expertise est applicable à tous les secteurs, avec une attention particulière aux spécificités du marché {region}.",
+ "button": "Discutons de votre projet"
+ }
+}
From 2a08c89d1d19d1c4d83e6402fb9fc1b53716968b Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Mon, 29 Dec 2025 17:44:07 +0100
Subject: [PATCH 34/64] =?UTF-8?q?=F0=9F=8C=90=20add=20translation=20for=20?=
=?UTF-8?q?customer=20tag=20in=20english=20and=20french=20localization=20f?=
=?UTF-8?q?iles?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/components/marketing/agency/local-portfolio.tsx | 1 +
.../en/components/marketing/agency/local-portfolio.json | 3 ++-
.../web/src/locales/en/screens/marketing/projects/details.json | 3 ++-
.../fr/components/marketing/agency/local-portfolio.json | 3 ++-
.../web/src/locales/fr/screens/marketing/projects/details.json | 3 ++-
apps/web/src/screens/marketing/projects/details/index.tsx | 1 +
6 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/apps/web/src/components/marketing/agency/local-portfolio.tsx b/apps/web/src/components/marketing/agency/local-portfolio.tsx
index 54cf604d7..dd555cbc3 100644
--- a/apps/web/src/components/marketing/agency/local-portfolio.tsx
+++ b/apps/web/src/components/marketing/agency/local-portfolio.tsx
@@ -40,6 +40,7 @@ const LocalPortfolioProject = async ({
const getTagLabel = (tag: Tag) => {
if (tag === Tag.FEATURED) return t('tags.featured');
if (tag === Tag.OPEN_SOURCE) return t('tags.open-source');
+ if (tag === Tag.CUSTOMER) return t('tags.customer');
return tag;
};
diff --git a/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json b/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json
index e3ae37bbd..dd69e1bf3 100644
--- a/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json
+++ b/apps/web/src/locales/en/components/marketing/agency/local-portfolio.json
@@ -9,7 +9,8 @@
},
"tags": {
"featured": "Featured project",
- "open-source": "Open Source"
+ "open-source": "Open Source",
+ "customer": "Client project"
},
"section": {
"title": "Our expertise applicable to projects in {name}",
diff --git a/apps/web/src/locales/en/screens/marketing/projects/details.json b/apps/web/src/locales/en/screens/marketing/projects/details.json
index 2532b907a..dc4de3019 100644
--- a/apps/web/src/locales/en/screens/marketing/projects/details.json
+++ b/apps/web/src/locales/en/screens/marketing/projects/details.json
@@ -1,7 +1,8 @@
{
"tags": {
"featured": "Featured",
- "open-source": "Open Source"
+ "open-source": "Open Source",
+ "customer": "Client project"
},
"buttons": {
"view-project": "View project",
diff --git a/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json b/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json
index c57300db4..3fc9d60a2 100644
--- a/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json
+++ b/apps/web/src/locales/fr/components/marketing/agency/local-portfolio.json
@@ -9,7 +9,8 @@
},
"tags": {
"featured": "Projet phare",
- "open-source": "Open Source"
+ "open-source": "Open Source",
+ "customer": "Projet client"
},
"section": {
"title": "Notre expertise applicable aux projets à {name}",
diff --git a/apps/web/src/locales/fr/screens/marketing/projects/details.json b/apps/web/src/locales/fr/screens/marketing/projects/details.json
index ebbfe4e66..4f96a7820 100644
--- a/apps/web/src/locales/fr/screens/marketing/projects/details.json
+++ b/apps/web/src/locales/fr/screens/marketing/projects/details.json
@@ -1,7 +1,8 @@
{
"tags": {
"featured": "Projet phare",
- "open-source": "Open Source"
+ "open-source": "Open Source",
+ "customer": "Projet client"
},
"buttons": {
"view-project": "Voir le projet",
diff --git a/apps/web/src/screens/marketing/projects/details/index.tsx b/apps/web/src/screens/marketing/projects/details/index.tsx
index c79e519b8..00b2d3286 100644
--- a/apps/web/src/screens/marketing/projects/details/index.tsx
+++ b/apps/web/src/screens/marketing/projects/details/index.tsx
@@ -35,6 +35,7 @@ const ProjectPage: React.FC = async ({ project }) => {
const getTagLabel = (tag: Tag) => {
if (tag === Tag.FEATURED) return t("tags.featured");
if (tag === Tag.OPEN_SOURCE) return t("tags.open-source");
+ if (tag === Tag.CUSTOMER) return t("tags.customer");
return tag;
};
From 64cc5c7b52642a53a6f6ba681c2c87bc9633d677 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Mon, 29 Dec 2025 17:49:29 +0100
Subject: [PATCH 35/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20hostname?=
=?UTF-8?q?=20retrieval=20in=20project=20page=20component=20for=20improved?=
=?UTF-8?q?=20readability?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/screens/marketing/projects/details/index.tsx | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/apps/web/src/screens/marketing/projects/details/index.tsx b/apps/web/src/screens/marketing/projects/details/index.tsx
index 00b2d3286..73b6fab98 100644
--- a/apps/web/src/screens/marketing/projects/details/index.tsx
+++ b/apps/web/src/screens/marketing/projects/details/index.tsx
@@ -39,6 +39,14 @@ const ProjectPage: React.FC = async ({ project }) => {
return tag;
};
+ const getHostname = (url: string | undefined): string => {
+ try {
+ return new URL(url || siteConfig.url).hostname;
+ } catch {
+ return "";
+ }
+ };
+
return (
{project.id === "tonightpass" ? (
@@ -181,9 +189,7 @@ const ProjectPage: React.FC = async ({ project }) => {
width={1200}
height={750}
imageSrc={project.showcaseUrl}
- url={
- new URL(project.website || siteConfig.url).hostname
- }
+ url={getHostname(project.website)}
/>
diff --git a/apps/web/src/content/en/glossary/api.mdx b/apps/web/src/content/en/glossary/api.mdx
new file mode 100644
index 000000000..389e306cb
--- /dev/null
+++ b/apps/web/src/content/en/glossary/api.mdx
@@ -0,0 +1,38 @@
+---
+term: "API"
+shortDescription: "Application programming interface that allows different applications to communicate with each other"
+relatedTerms: ["REST", "GraphQL", "Backend"]
+tags: ["development", "technical"]
+---
+
+## Definition
+
+An API (Application Programming Interface) is essentially the language our applications speak to communicate with each other. At onRuntime, we use them constantly to connect different parts of our projects. Think of an API like a waiter in a restaurant. You place an order (the request), they bring you what you asked for (the response), and you don't need to know what's happening in the kitchen.
+
+## Why we love APIs
+
+- **They make everything work together**: Different systems can exchange data without any hassle
+- **They make us modular**: We can develop independent components and connect them easily
+- **They protect our data**: We control exactly who accesses what
+- **They save us time**: We can update one part without rebuilding everything
+
+## APIs we use daily
+
+### RESTful APIs
+Our daily bread! We use them for most of our web projects. They're simple, stateless (no memory from one request to another), and use classic HTTP methods. Perfect for decoupled interfaces like on Tonight Pass.
+
+### GraphQL APIs
+We're fans of these for certain complex projects! Rather than creating 15 different endpoints, we let the client request exactly the data it needs. On Kitchn, this saved us a lot of bandwidth.
+
+### SOAP APIs
+We won't lie, we don't use these much anymore... They're a bit old-school with their XML and ultra-strict specifications. But we still encounter them sometimes on enterprise projects.
+
+## How we use them daily
+
+At onRuntime, APIs are at the heart of our tech stack. They allow us to:
+
+- Build decoupled applications (separate frontend/backend)
+- Easily integrate third-party services (payment, mapping, etc.)
+- Develop our microservices architecture on certain projects
+
+When we design an API, we always start by documenting it with Swagger or Postman. Helps us think things through and becomes a solid reference for the team. Trust me, it saves a lot of pointless meetings!
diff --git a/apps/web/src/content/en/glossary/backend.mdx b/apps/web/src/content/en/glossary/backend.mdx
new file mode 100644
index 000000000..2dc7ba51c
--- /dev/null
+++ b/apps/web/src/content/en/glossary/backend.mdx
@@ -0,0 +1,46 @@
+---
+term: "Backend"
+shortDescription: "Part of an application that handles business logic, database, and server-side data processing"
+relatedTerms: ["API", "Frontend", "Database"]
+tags: ["development", "architecture"]
+---
+
+## Definition
+
+The backend is like the factory behind the storefront! It's all the invisible part that runs our applications at onRuntime. When you use Tonight Pass for example, you interact with a beautiful and intuitive interface, but it's our backend doing all the grunt work: verifying your credentials, storing event data, calculating recommendations, etc.
+
+## What we do daily
+
+### Servers
+Our backend engineers spend their time optimizing our servers. With the increase in traffic on Tonight Pass, we had to spend a lot of time optimizing everything! We primarily use AWS and Google Cloud to host our applications.
+
+### APIs
+This is our specialty! We create robust APIs that allow our frontends to retrieve exactly what they need. We actually have a preference for REST APIs, although we're having more and more fun with GraphQL on certain projects.
+
+### Databases
+Where we store everything! Depending on the projects, we juggle between MongoDB (for Tonight Pass), PostgreSQL (for projects requiring complex relationships), and sometimes Redis for caching. Choosing the database is crucial and we always think about it beforehand.
+
+### Business logic
+The heart of what we do. Transforming client needs into working code. For Tonight Pass's recommendation algorithms, for example, we spent weeks refining the rules and optimizing queries.
+
+## Our favorite backend stack
+
+### Languages
+- **Node.js/TypeScript**: Our favorite combo! We use it on almost all our recent projects
+- **Python**: Perfect when we need to do data analysis or machine learning
+- **Go**: We've adopted it for certain microservices that need performance
+
+### Frameworks
+- **NestJS**: Our favorite Node.js framework for large applications
+- **Express**: For simpler APIs or prototypes
+- **Django**: When we need a robust admin quickly
+
+## Why it's so important
+
+The backend is like the foundations of a house. If it's poorly done, everything collapses. At onRuntime, we're particularly proud of:
+
+- Our architecture that handles traffic spikes on Tonight Pass (thanks New Year's Eve parties!)
+- Our flawless security (knock on wood)
+- Our ultra-fast response times
+
+It's often the least visible part for clients, but it's the one that gives us the most headaches... and the most satisfaction when everything runs like clockwork!
diff --git a/apps/web/src/content/en/glossary/framework.mdx b/apps/web/src/content/en/glossary/framework.mdx
new file mode 100644
index 000000000..29d656632
--- /dev/null
+++ b/apps/web/src/content/en/glossary/framework.mdx
@@ -0,0 +1,48 @@
+---
+term: "Framework"
+shortDescription: "Software structure that facilitates development by providing standardized and reusable features"
+relatedTerms: ["Library", "API", "React", "Angular", "Vue.js", "Next.js"]
+tags: ["development", "architecture"]
+---
+
+## Definition
+
+A framework is like our prefabricated toolbox at onRuntime. Rather than building everything from scratch for each project (imagine building a house starting by making your own nails!), we use these structures that give us a good starting point and solid conventions.
+
+## The big question: framework or library?
+
+We get this question a lot from clients, so here's the deal:
+
+- A **library** is like borrowing a specific tool for a specific task. You keep control and decide when to use it.
+- A **framework** is like entering a fully-equipped workshop with its own rules. It tells you how to work.
+
+There's a saying that sums it up well: "You call a library, but a framework calls you."
+
+## Frameworks we love to use
+
+### Frontend side
+- **React**: Technically a library, but the ecosystem around it (React Router, Redux, etc.) makes it almost a framework. It's our #1 choice for user interfaces.
+- **Next.js**: Our favorite for complex websites! We used it to rebuild our own onRuntime.com site.
+- **React Native**: For our clients' mobile apps, it's our go-to. We used it for Tonight Pass with great results.
+
+### Backend side
+- **NestJS**: We're completely fans! It's structured, modular, and saves us tons of time on large applications.
+- **Express**: Lighter than NestJS, we use it for simple APIs or MVPs.
+- **Prisma**: Not really a complete backend framework, but our favorite ORM for managing databases.
+
+### Full-stack
+- **Next.js** (again!): We use it more and more as a full-stack solution thanks to API routes.
+- **Redwood.js**: We've tested it on a few projects and it's promising! A bit like Ruby on Rails but for the JS ecosystem.
+
+## Why we don't code everything from scratch
+
+- **We go muuuch faster**: No more problems already solved a thousand times by others
+- **Cleaner code**: Framework conventions force us to be disciplined
+- **Security**: Popular frameworks are scrutinized by thousands of developers tracking vulnerabilities
+- **Easier onboarding**: When we integrate a new dev into the team, if they already know the framework, they're operational in no time
+
+## When we choose to use (or not) a framework
+
+At onRuntime, we love frameworks, but we don't use them blindly. For an ultra-specific microservice, we sometimes prefer a lighter approach with just a few libraries. For our Kartrak application, for example, we opted for a more minimalist approach because performance was critical.
+
+But honestly, for most client projects where time-to-market matters, a good framework saves so much time that the choice is obvious!
diff --git a/apps/web/src/content/glossary/api.mdx b/apps/web/src/content/fr/glossary/api.mdx
similarity index 100%
rename from apps/web/src/content/glossary/api.mdx
rename to apps/web/src/content/fr/glossary/api.mdx
diff --git a/apps/web/src/content/glossary/backend.mdx b/apps/web/src/content/fr/glossary/backend.mdx
similarity index 100%
rename from apps/web/src/content/glossary/backend.mdx
rename to apps/web/src/content/fr/glossary/backend.mdx
diff --git a/apps/web/src/content/glossary/framework.mdx b/apps/web/src/content/fr/glossary/framework.mdx
similarity index 100%
rename from apps/web/src/content/glossary/framework.mdx
rename to apps/web/src/content/fr/glossary/framework.mdx
diff --git a/apps/web/src/lib/glossary.tsx b/apps/web/src/lib/glossary.tsx
index a37db6f60..faf6e4ab0 100644
--- a/apps/web/src/lib/glossary.tsx
+++ b/apps/web/src/lib/glossary.tsx
@@ -1,39 +1,50 @@
import fs from 'fs';
import path from 'path';
import { evaluate } from 'next-mdx-remote-client/rsc';
+import { headers } from 'next/headers';
import { GlossaryEntry } from '@/types/glossary';
import React from 'react';
import { CustomMDX } from '@/components/custom-mdx';
+import { defaultLocale } from '@/lib/translations';
-const glossaryDirectory = path.join(process.cwd(), 'src', 'content', 'glossary');
+function getGlossaryDirectory(locale: string): string {
+ return path.join(process.cwd(), 'src', 'content', locale, 'glossary');
+}
+
+async function getCurrentLocale(): Promise {
+ const headersList = await headers();
+ return headersList.get('x-locale') || defaultLocale;
+}
/**
- * Récupérer une entrée spécifique du glossaire
+ * Get a specific glossary entry
*/
export async function getGlossaryEntry(letter: string, slug: string): Promise {
+ const locale = await getCurrentLocale();
+ const glossaryDirectory = getGlossaryDirectory(locale);
const filePath = path.join(glossaryDirectory, `${slug}.mdx`);
-
+
if (!fs.existsSync(filePath)) {
return null;
}
-
+
const fileContent = fs.readFileSync(filePath, 'utf8');
-
+
try {
const { frontmatter, content } = await evaluate>({
source: fileContent,
options: { parseFrontmatter: true },
});
-
- // Vérifier que la première lettre du terme correspond à la lettre dans l'URL
+
+ // Check that the first letter of the term matches the letter in the URL
const termLetter = frontmatter.term.charAt(0).toLowerCase();
if (termLetter !== letter.toLowerCase()) {
- return null; // Terme trouvé mais mauvaise lettre dans l'URL
+ return null; // Term found but wrong letter in URL
}
-
- // Envelopper le contenu avec CustomMDX pour utiliser le même style que les pages légales
+
+ // Wrap content with CustomMDX to use the same style as legal pages
const wrappedContent = {content};
-
+
return {
...frontmatter,
slug,
@@ -47,34 +58,36 @@ export async function getGlossaryEntry(letter: string, slug: string): Promise {
+ const locale = await getCurrentLocale();
+ const glossaryDirectory = getGlossaryDirectory(locale);
const entries: GlossaryEntry[] = [];
-
- // Vérifier si le répertoire existe
+
+ // Check if directory exists
if (!fs.existsSync(glossaryDirectory)) {
return entries;
}
-
- // Lire tous les fichiers .mdx directement dans le dossier principal
+
+ // Read all .mdx files directly from the main folder
const termFiles = fs.readdirSync(glossaryDirectory)
.filter(file => file.endsWith('.mdx'));
-
+
for (const file of termFiles) {
const filePath = path.join(glossaryDirectory, file);
const fileContent = fs.readFileSync(filePath, 'utf8');
-
+
try {
const { frontmatter } = await evaluate>({
source: fileContent,
options: { parseFrontmatter: true },
});
-
+
const slug = file.replace(/\.mdx$/, '');
- // Déterminer la lettre à partir du terme (première lettre en minuscule)
+ // Determine the letter from the term (first letter in lowercase)
const letter = frontmatter.term.charAt(0).toLowerCase();
-
+
entries.push({
...frontmatter,
slug,
@@ -84,13 +97,13 @@ export async function getAllGlossaryEntries(): Promise {
console.error(`Error processing ${filePath}:`, error);
}
}
-
- // Trier par terme alphabétiquement
+
+ // Sort alphabetically by term
return entries.sort((a, b) => a.term.localeCompare(b.term));
}
/**
- * Récupérer les entrées reliées
+ * Get related entries
*/
export async function getRelatedEntries(terms: string[]): Promise {
const allEntries = await getAllGlossaryEntries();
@@ -98,17 +111,17 @@ export async function getRelatedEntries(terms: string[]): Promise {
const allEntries = await getAllGlossaryEntries();
- return allEntries.filter(entry =>
+ return allEntries.filter(entry =>
entry.tags?.some(t => t.toLowerCase() === tag.toLowerCase())
);
}
/**
- * Récupérer toutes les entrées pour une lettre spécifique
+ * Get all entries for a specific letter
*/
export async function getEntriesByLetter(letter: string): Promise {
const allEntries = await getAllGlossaryEntries();
@@ -116,15 +129,15 @@ export async function getEntriesByLetter(letter: string): Promise {
const entries = await getAllGlossaryEntries();
const tagSet = new Set();
-
+
entries.forEach(entry => {
entry.tags?.forEach(tag => tagSet.add(tag));
});
-
+
return Array.from(tagSet).sort();
-}
\ No newline at end of file
+}
diff --git a/apps/web/src/locales/en/app/glossary/page.json b/apps/web/src/locales/en/app/glossary/page.json
index 5f57501cf..7620b6134 100644
--- a/apps/web/src/locales/en/app/glossary/page.json
+++ b/apps/web/src/locales/en/app/glossary/page.json
@@ -2,5 +2,49 @@
"metadata": {
"title": "Web development and design glossary",
"description": "Browse our comprehensive glossary of technical terms in web development, UI/UX design, and digital project management."
+ },
+ "hero": {
+ "title": "Glossary",
+ "description": "Explore our comprehensive glossary of technical terms in web development, UI/UX design, and digital project management."
+ },
+ "view-all": "View all",
+ "empty": {
+ "title": "No terms have been added to the glossary yet.",
+ "subtitle": "Check back soon to discover our complete glossary."
+ },
+ "letter": {
+ "metadata": {
+ "title": "Terms starting with {letter} | Glossary",
+ "description": "Discover all glossary terms starting with the letter {letter}.",
+ "invalid": {
+ "title": "Invalid letter | Glossary",
+ "description": "This letter is not valid."
+ }
+ },
+ "count": "{count} term(s) starting with the letter {letter}"
+ },
+ "term": {
+ "metadata": {
+ "not-found": {
+ "title": "Term not found | Glossary",
+ "description": "This term does not exist in our glossary."
+ }
+ }
+ },
+ "tags": {
+ "metadata": {
+ "title": "Glossary tags",
+ "description": "Explore the different categories of terms available in our technical glossary."
+ },
+ "title": "Glossary categories",
+ "description": "Explore the {count} categories of terms available in our technical glossary.",
+ "empty": "No categories are available at this time."
+ },
+ "tag": {
+ "metadata": {
+ "title": "Terms related to {tag} | Glossary",
+ "description": "Discover all glossary terms related to the {tag} category."
+ },
+ "count": "{count} term(s) related to this category"
}
}
diff --git a/apps/web/src/locales/en/components/glossary.json b/apps/web/src/locales/en/components/glossary.json
new file mode 100644
index 000000000..b48837564
--- /dev/null
+++ b/apps/web/src/locales/en/components/glossary.json
@@ -0,0 +1,8 @@
+{
+ "back-to-glossary": "Back to glossary",
+ "related-terms": "Related terms",
+ "search": {
+ "placeholder": "Search for a term...",
+ "no-results": "No results found for \"{term}\""
+ }
+}
diff --git a/apps/web/src/locales/fr/app/glossary/page.json b/apps/web/src/locales/fr/app/glossary/page.json
index e4e9123ba..ce592b801 100644
--- a/apps/web/src/locales/fr/app/glossary/page.json
+++ b/apps/web/src/locales/fr/app/glossary/page.json
@@ -2,5 +2,49 @@
"metadata": {
"title": "Glossaire du développement et design web",
"description": "Consultez notre glossaire complet des termes techniques en développement web, design UI/UX et gestion de projet digital."
+ },
+ "hero": {
+ "title": "Glossaire",
+ "description": "Explorez notre glossaire complet des termes techniques en développement web, design UI/UX et gestion de projet digital."
+ },
+ "view-all": "Voir tous",
+ "empty": {
+ "title": "Aucun terme n'a encore été ajouté au glossaire.",
+ "subtitle": "Revenez bientôt pour découvrir notre glossaire complet."
+ },
+ "letter": {
+ "metadata": {
+ "title": "Termes commençant par {letter} | Glossaire",
+ "description": "Découvrez tous les termes du glossaire commençant par la lettre {letter}.",
+ "invalid": {
+ "title": "Lettre non valide | Glossaire",
+ "description": "Cette lettre n'est pas valide."
+ }
+ },
+ "count": "{count} terme(s) commençant par la lettre {letter}"
+ },
+ "term": {
+ "metadata": {
+ "not-found": {
+ "title": "Terme non trouvé | Glossaire",
+ "description": "Ce terme n'existe pas dans notre glossaire."
+ }
+ }
+ },
+ "tags": {
+ "metadata": {
+ "title": "Tags du glossaire",
+ "description": "Explorez les différentes catégories de termes disponibles dans notre glossaire technique."
+ },
+ "title": "Catégories du glossaire",
+ "description": "Explorez les {count} catégories de termes disponibles dans notre glossaire technique.",
+ "empty": "Aucune catégorie n'est disponible pour le moment."
+ },
+ "tag": {
+ "metadata": {
+ "title": "Termes liés à {tag} | Glossaire",
+ "description": "Découvrez tous les termes du glossaire liés à la catégorie {tag}."
+ },
+ "count": "{count} terme(s) lié(s) à cette catégorie"
}
}
diff --git a/apps/web/src/locales/fr/components/glossary.json b/apps/web/src/locales/fr/components/glossary.json
new file mode 100644
index 000000000..9c2c78c55
--- /dev/null
+++ b/apps/web/src/locales/fr/components/glossary.json
@@ -0,0 +1,8 @@
+{
+ "back-to-glossary": "Retour au glossaire",
+ "related-terms": "Termes associés",
+ "search": {
+ "placeholder": "Rechercher un terme...",
+ "no-results": "Aucun résultat trouvé pour \"{term}\""
+ }
+}
From 7796ea26bd0549a7d935e55e0ce2c294fe19b695 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Mon, 29 Dec 2025 23:44:03 +0100
Subject: [PATCH 44/64] =?UTF-8?q?=F0=9F=8C=90=20add=20translations=20for?=
=?UTF-8?q?=20not-found=20metadata=20in=20agency=20pages?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/agency/[city]/page.tsx | 7 ++++---
apps/web/src/locales/en/app/agency/[city]/page.json | 8 ++++++++
apps/web/src/locales/fr/app/agency/[city]/page.json | 8 ++++++++
3 files changed, 20 insertions(+), 3 deletions(-)
create mode 100644 apps/web/src/locales/en/app/agency/[city]/page.json
create mode 100644 apps/web/src/locales/fr/app/agency/[city]/page.json
diff --git a/apps/web/src/app/[locale]/agency/[city]/page.tsx b/apps/web/src/app/[locale]/agency/[city]/page.tsx
index f92192fa1..1e58c8b0d 100644
--- a/apps/web/src/app/[locale]/agency/[city]/page.tsx
+++ b/apps/web/src/app/[locale]/agency/[city]/page.tsx
@@ -3,6 +3,7 @@ import Image from 'next/image';
import { notFound } from 'next/navigation';
import { Metadata } from 'next';
import { constructMetadata } from '@/lib/utils/metadata.server';
+import { getTranslation } from '@/lib/translations.server';
import CityHeroSection from '@/components/marketing/agency/city-hero-section';
import LocalExpertise from '@/components/marketing/agency/local-expertise';
import LocalPortfolio from '@/components/marketing/agency/local-portfolio';
@@ -26,13 +27,13 @@ export async function generateMetadata({
}): Promise {
const { city } = await params;
const cityLower = city.toLowerCase();
-
const agency = getAgencyById(cityLower);
+ const { t } = await getTranslation('app/agency/[city]/page');
if (!agency) {
return constructMetadata({
- title: "Expertise locale non disponible",
- description: "Nous n'avons pas encore d'expertise spécifique pour cette ville.",
+ title: t('metadata.not-found.title'),
+ description: t('metadata.not-found.description'),
noIndex: true,
});
}
diff --git a/apps/web/src/locales/en/app/agency/[city]/page.json b/apps/web/src/locales/en/app/agency/[city]/page.json
new file mode 100644
index 000000000..73bf8e722
--- /dev/null
+++ b/apps/web/src/locales/en/app/agency/[city]/page.json
@@ -0,0 +1,8 @@
+{
+ "metadata": {
+ "not-found": {
+ "title": "Local expertise unavailable",
+ "description": "We don't have specific expertise for this city yet."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/app/agency/[city]/page.json b/apps/web/src/locales/fr/app/agency/[city]/page.json
new file mode 100644
index 000000000..c8bcbeda7
--- /dev/null
+++ b/apps/web/src/locales/fr/app/agency/[city]/page.json
@@ -0,0 +1,8 @@
+{
+ "metadata": {
+ "not-found": {
+ "title": "Expertise locale non disponible",
+ "description": "Nous n'avons pas encore d'expertise spécifique pour cette ville."
+ }
+ }
+}
From 7bcfe2f83bf532b2b54ebd26559764de9d318d20 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Mon, 29 Dec 2025 23:46:56 +0100
Subject: [PATCH 45/64] =?UTF-8?q?=F0=9F=8C=90=20add=20translations=20for?=
=?UTF-8?q?=20services=20page=20metadata=20in=20english=20and=20french?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/services/page.tsx | 7 +++++--
apps/web/src/locales/en/app/services/page.json | 6 ++++++
apps/web/src/locales/fr/app/services/page.json | 6 ++++++
3 files changed, 17 insertions(+), 2 deletions(-)
create mode 100644 apps/web/src/locales/en/app/services/page.json
create mode 100644 apps/web/src/locales/fr/app/services/page.json
diff --git a/apps/web/src/app/[locale]/services/page.tsx b/apps/web/src/app/[locale]/services/page.tsx
index a0e5d81fc..abdf7510b 100644
--- a/apps/web/src/app/[locale]/services/page.tsx
+++ b/apps/web/src/app/[locale]/services/page.tsx
@@ -1,10 +1,13 @@
import { constructMetadata } from "@/lib/utils/metadata.server";
+import { getTranslation } from "@/lib/translations.server";
import ServicesPage from "@/screens/marketing/services";
export async function generateMetadata() {
+ const { t } = await getTranslation("app/services/page");
+
return constructMetadata({
- title: "Agence de services digitaux : web, mobile et design UI/UX",
- description: "Services complets de développement web, mobile, design UI/UX et intégration CMS. Notre agence crée des solutions sur mesure qui répondent à vos objectifs.",
+ title: t("metadata.title"),
+ description: t("metadata.description"),
});
}
diff --git a/apps/web/src/locales/en/app/services/page.json b/apps/web/src/locales/en/app/services/page.json
new file mode 100644
index 000000000..fcdeee787
--- /dev/null
+++ b/apps/web/src/locales/en/app/services/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Digital services agency: web, mobile and UI/UX design",
+ "description": "Complete web development, mobile, UI/UX design and CMS integration services. Our agency creates custom solutions tailored to your goals."
+ }
+}
diff --git a/apps/web/src/locales/fr/app/services/page.json b/apps/web/src/locales/fr/app/services/page.json
new file mode 100644
index 000000000..b8c9e6e57
--- /dev/null
+++ b/apps/web/src/locales/fr/app/services/page.json
@@ -0,0 +1,6 @@
+{
+ "metadata": {
+ "title": "Agence de services digitaux : web, mobile et design UI/UX",
+ "description": "Services complets de développement web, mobile, design UI/UX et intégration CMS. Notre agence crée des solutions sur mesure qui répondent à vos objectifs."
+ }
+}
From b2c4e8326a5b89cc42a3a847e1179dcb64381517 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 00:14:23 +0100
Subject: [PATCH 46/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20replace=20next/link?=
=?UTF-8?q?=20by=20@onruntime/translations/next?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/agency/page.tsx | 2 +-
apps/web/src/app/[locale]/glossary/page.tsx | 2 +-
apps/web/src/app/[locale]/glossary/tags/page.tsx | 2 +-
apps/web/src/components/glossary/letter-page.tsx | 2 +-
apps/web/src/components/glossary/tag-page.tsx | 2 +-
apps/web/src/components/marketing/agency/city-hero-section.tsx | 2 +-
apps/web/src/components/marketing/agency/contact-cta.tsx | 2 +-
apps/web/src/components/marketing/agency/france-map.tsx | 2 +-
apps/web/src/components/marketing/agency/local-portfolio.tsx | 2 +-
.../marketing/landing/visitor/team/grid/card/index.tsx | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/apps/web/src/app/[locale]/agency/page.tsx b/apps/web/src/app/[locale]/agency/page.tsx
index b03e2ddb9..fe44ff5f9 100644
--- a/apps/web/src/app/[locale]/agency/page.tsx
+++ b/apps/web/src/app/[locale]/agency/page.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
diff --git a/apps/web/src/app/[locale]/glossary/page.tsx b/apps/web/src/app/[locale]/glossary/page.tsx
index 3c1dea695..976ff4bc9 100644
--- a/apps/web/src/app/[locale]/glossary/page.tsx
+++ b/apps/web/src/app/[locale]/glossary/page.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
diff --git a/apps/web/src/app/[locale]/glossary/tags/page.tsx b/apps/web/src/app/[locale]/glossary/tags/page.tsx
index 757d2e826..58ab7e4f4 100644
--- a/apps/web/src/app/[locale]/glossary/tags/page.tsx
+++ b/apps/web/src/app/[locale]/glossary/tags/page.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { Button } from "@/components/ui/button";
import { ChevronLeft, Tag as TagIcon } from "lucide-react";
import { getAllTags } from "@/lib/glossary";
diff --git a/apps/web/src/components/glossary/letter-page.tsx b/apps/web/src/components/glossary/letter-page.tsx
index 0f41988af..50daff078 100644
--- a/apps/web/src/components/glossary/letter-page.tsx
+++ b/apps/web/src/components/glossary/letter-page.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link'
+import { Link } from '@onruntime/translations/next'
import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
import { ChevronLeft } from "lucide-react"
diff --git a/apps/web/src/components/glossary/tag-page.tsx b/apps/web/src/components/glossary/tag-page.tsx
index a1b0c7377..482942124 100644
--- a/apps/web/src/components/glossary/tag-page.tsx
+++ b/apps/web/src/components/glossary/tag-page.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link'
+import { Link } from '@onruntime/translations/next'
import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
import { ChevronLeft, Tag as TagIcon } from "lucide-react"
diff --git a/apps/web/src/components/marketing/agency/city-hero-section.tsx b/apps/web/src/components/marketing/agency/city-hero-section.tsx
index a62eed96f..00e607c94 100644
--- a/apps/web/src/components/marketing/agency/city-hero-section.tsx
+++ b/apps/web/src/components/marketing/agency/city-hero-section.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { Button } from '@/components/ui/button';
import { ArrowRight } from 'lucide-react';
import DotPattern from '@/components/ui/dot-pattern';
diff --git a/apps/web/src/components/marketing/agency/contact-cta.tsx b/apps/web/src/components/marketing/agency/contact-cta.tsx
index 1644b7a74..06bf85fff 100644
--- a/apps/web/src/components/marketing/agency/contact-cta.tsx
+++ b/apps/web/src/components/marketing/agency/contact-cta.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { Button } from '@/components/ui/button';
import { ArrowRight, Video, Calendar } from 'lucide-react';
import Routes from '@/constants/routes';
diff --git a/apps/web/src/components/marketing/agency/france-map.tsx b/apps/web/src/components/marketing/agency/france-map.tsx
index 9c4e7f08e..40a3847bb 100644
--- a/apps/web/src/components/marketing/agency/france-map.tsx
+++ b/apps/web/src/components/marketing/agency/france-map.tsx
@@ -1,7 +1,7 @@
'use client';
import React from 'react';
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { getAgencyById } from '@/constants/agencies';
interface FranceMapProps {
diff --git a/apps/web/src/components/marketing/agency/local-portfolio.tsx b/apps/web/src/components/marketing/agency/local-portfolio.tsx
index dd555cbc3..dd7bbe5e8 100644
--- a/apps/web/src/components/marketing/agency/local-portfolio.tsx
+++ b/apps/web/src/components/marketing/agency/local-portfolio.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import Image from 'next/image';
import { Button } from '@/components/ui/button';
import { ArrowRight } from 'lucide-react';
diff --git a/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx b/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx
index 6d54436e1..81f099945 100644
--- a/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx
+++ b/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx
@@ -2,7 +2,7 @@
import React from 'react';
import Image from 'next/image';
-import Link from 'next/link';
+import { Link } from '@onruntime/translations/next';
import { Button } from '@/components/ui/button';
import { useTranslation } from '@onruntime/translations/react';
From bcf8e8cea706a1ece0b280b348f8cf7f1b6de405 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 00:24:10 +0100
Subject: [PATCH 47/64] =?UTF-8?q?=F0=9F=8E=A8=20update=20h2=20to=20p=20for?=
=?UTF-8?q?=20description=20in=20featured=20customer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/marketing/landing/customer/featured/index.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/web/src/components/marketing/landing/customer/featured/index.tsx b/apps/web/src/components/marketing/landing/customer/featured/index.tsx
index 37318eaf4..4ae9ff009 100644
--- a/apps/web/src/components/marketing/landing/customer/featured/index.tsx
+++ b/apps/web/src/components/marketing/landing/customer/featured/index.tsx
@@ -25,7 +25,7 @@ const Featured: React.FC = async () => {
-
From cecb3680c1478422207229630aad1326d44aab00 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 00:28:31 +0100
Subject: [PATCH 48/64] =?UTF-8?q?=F0=9F=8C=90=20add=20translations=20for?=
=?UTF-8?q?=20agency=20city=20hero=20section=20in=20english=20and=20french?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../marketing/agency/city-hero-section.tsx | 12 +++++++-----
.../marketing/agency/city-hero-section.json | 5 +++++
.../marketing/agency/city-hero-section.json | 5 +++++
3 files changed, 17 insertions(+), 5 deletions(-)
create mode 100644 apps/web/src/locales/en/components/marketing/agency/city-hero-section.json
create mode 100644 apps/web/src/locales/fr/components/marketing/agency/city-hero-section.json
diff --git a/apps/web/src/components/marketing/agency/city-hero-section.tsx b/apps/web/src/components/marketing/agency/city-hero-section.tsx
index 00e607c94..69b7ca0a4 100644
--- a/apps/web/src/components/marketing/agency/city-hero-section.tsx
+++ b/apps/web/src/components/marketing/agency/city-hero-section.tsx
@@ -6,16 +6,18 @@ import DotPattern from '@/components/ui/dot-pattern';
import { cn } from '@/lib/utils';
import Routes from '@/constants/routes';
import { Agency } from '@/types/agency';
+import { getTranslation } from '@/lib/translations.server';
interface CityHeroSectionProps {
agency: Agency;
}
-const CityHeroSection: React.FC = ({ agency }) => {
-
+const CityHeroSection = async ({ agency }: CityHeroSectionProps) => {
+ const { t } = await getTranslation('components/marketing/agency/city-hero-section');
+
const accent = agency.accentColor || "blue";
- const heroTitle = agency.heroTitle || `Développement web à ${agency.name}`;
+ const heroTitle = agency.heroTitle || t('default-title', { name: agency.name });
const heroDescription = agency.heroDescription || agency.description;
return (
@@ -41,7 +43,7 @@ const CityHeroSection: React.FC = ({ agency }) => {
- Démarrer votre projet à {agency.name}
+ {t('cta', { name: agency.name })}
@@ -66,7 +68,7 @@ const CityHeroSection: React.FC = ({ agency }) => {
- Défis numériques des entreprises à {agency.name}
+ {t('challenges.title', { city: agency.name })}
- Les entreprises de {agency.name} font face à des défis spécifiques en matière de transformation digitale. Notre expertise nous permet d'y répondre efficacement.
+ {t('challenges.description', { city: agency.name })}
@@ -227,10 +231,10 @@ export default async function CityPage({ params }: AgencyPageProps) {
}
export async function generateStaticParams() {
-
+
const { default: agencies } = await import('@/constants/agencies');
-
+
return agencies.map((agency) => ({
city: agency.id,
}));
-}
\ No newline at end of file
+}
diff --git a/apps/web/src/app/[locale]/agency/page.tsx b/apps/web/src/app/[locale]/agency/page.tsx
index fe44ff5f9..8e8258a57 100644
--- a/apps/web/src/app/[locale]/agency/page.tsx
+++ b/apps/web/src/app/[locale]/agency/page.tsx
@@ -6,6 +6,7 @@ import { ArrowRight, Globe, Laptop, Users } from "lucide-react";
import Routes from "@/constants/routes";
import { constructMetadata } from '@/lib/utils/metadata.server';
import FranceMap from '@/components/marketing/agency/france-map';
+import AgencyCard from '@/components/marketing/agency/agency-card';
import { getMajorAgencies } from '@/constants/agencies';
import { OrganizationSchema } from '@/components/json-ld/organization-schema';
import { ORGANIZATION_DATA } from '@/components/json-ld/constants';
@@ -19,40 +20,41 @@ export async function generateMetadata() {
});
}
-export default function AgencyLandingPage() {
-
+export default async function AgencyLandingPage() {
+ const { t } = await getTranslation('app/agency/page');
+
const majorAgencies = getMajorAgencies(10);
-
+
return (
-
+
-
+
- Votre partenaire digital partout en France
+ {t('hero.title')}
-
+
- Nous développons des solutions digitales innovantes adaptées aux spécificités de chaque marché régional français. Notre équipe maîtrise les enjeux numériques locaux pour vous accompagner efficacement, où que vous soyez en France.
+ {t('hero.description')}
- Discuter de votre projet
+ {t('hero.cta')}
-
+
- Découvrir notre expertise locale
+ {t('hero.secondary-cta')}
@@ -77,10 +79,10 @@ export default function AgencyLandingPage() {
- Une expertise adaptée à chaque territoire
+ {t('expertise.title')}
- Notre équipe analyse et comprend les écosystèmes numériques locaux pour vous proposer des solutions parfaitement adaptées aux spécificités économiques et culturelles de votre région.
+ {t('expertise.description')}
@@ -89,9 +91,9 @@ export default function AgencyLandingPage() {
-
Compréhension des marchés locaux
+
{t('expertise.local-markets.title')}
- Nous étudions et maîtrisons les spécificités et les tendances des écosystèmes numériques régionaux.
+ {t('expertise.local-markets.description')}
@@ -99,9 +101,9 @@ export default function AgencyLandingPage() {
-
Travail à distance efficace
+
{t('expertise.remote-work.title')}
- Notre équipe collabore à distance avec votre entreprise, où que vous soyez en France, avec la même efficacité qu'en présentiel.
+ {t('expertise.remote-work.description')}
@@ -109,9 +111,9 @@ export default function AgencyLandingPage() {
-
Solutions personnalisées
+
{t('expertise.custom-solutions.title')}
- Des stratégies digitales sur mesure qui s'adaptent à votre contexte local et aux particularités de votre marché régional.
+ {t('expertise.custom-solutions.description')}
@@ -120,41 +122,16 @@ export default function AgencyLandingPage() {
- Notre expertise dans les grandes villes françaises
+ {t('cities.title')}
- Découvrez notre connaissance approfondie des marchés locaux et comment elle peut bénéficier à votre entreprise.
+ {t('cities.description')}
@@ -162,39 +139,39 @@ export default function AgencyLandingPage() {
- Pourquoi travailler avec nous pour votre projet local ?
+ {t('why-us.title')}
- Notre connaissance des marchés régionaux présente de nombreux avantages pour votre entreprise.
+ {t('why-us.description')}
-
Expertise des écosystèmes locaux
+
{t('why-us.local-ecosystems.title')}
- Une équipe qui comprend les dynamiques de marché propres à votre région, permettant une stratégie digitale parfaitement adaptée.
+ {t('why-us.local-ecosystems.description')}
-
+
-
Agilité à distance
+
{t('why-us.remote-agility.title')}
- Collaboration efficace par visioconférence, messagerie et outils collaboratifs pour une expérience de travail fluide et productive.
+ {t('why-us.remote-agility.description')}
-
+
-
Stratégies localisées
+
{t('why-us.localized-strategies.title')}
- Des solutions digitales qui tiennent compte des spécificités culturelles et économiques de votre territoire.
+ {t('why-us.localized-strategies.description')}
-
+
-
Analyse de marché régional
+
{t('why-us.regional-analysis.title')}
- Étude des tendances, de la concurrence et des opportunités propres à votre secteur géographique pour une stratégie digitale optimale.
+ {t('why-us.regional-analysis.description')}
@@ -203,46 +180,46 @@ export default function AgencyLandingPage() {
- Nos services pour toutes les régions de France
+ {t('services.title')}
- Des solutions digitales complètes adaptées aux spécificités de chaque marché local.
+ {t('services.description')}
-
Design UI/UX
+
{t('services.design.title')}
- Interfaces adaptées aux usages locaux
+ {t('services.design.description')}
-
+
-
Intégration
+
{t('services.integration.title')}
- Solutions CMS et e-commerce régionales
+ {t('services.integration.description')}
-
+
-
Front-end
+
{t('services.frontend.title')}
- Applications adaptées à vos utilisateurs
+ {t('services.frontend.description')}
-
+
-
Back-end
+
{t('services.backend.title')}
- Infrastructures robustes et évolutives
+ {t('services.backend.description')}
@@ -251,7 +228,7 @@ export default function AgencyLandingPage() {
- Découvrir tous nos services
+ {t('services.discover-all')}
@@ -262,21 +239,21 @@ export default function AgencyLandingPage() {
- Un projet digital adapté à votre marché local ?
+ {t('cta.title')}
- Contactez-nous pour discuter de votre projet. Notre expertise des marchés locaux nous permet de vous accompagner efficacement, où que vous soyez en France.
+ {t('cta.description')}
- Nous contacter
+ {t('cta.contact')}
- En savoir plus sur notre approche
+ {t('cta.learn-more')}
@@ -285,4 +262,4 @@ export default function AgencyLandingPage() {
);
-}
\ No newline at end of file
+}
diff --git a/apps/web/src/components/marketing/agency/agency-card.tsx b/apps/web/src/components/marketing/agency/agency-card.tsx
new file mode 100644
index 000000000..0adc57f76
--- /dev/null
+++ b/apps/web/src/components/marketing/agency/agency-card.tsx
@@ -0,0 +1,44 @@
+import { Link } from '@onruntime/translations/next';
+import { ArrowRight } from 'lucide-react';
+import Routes from '@/constants/routes';
+import { Agency } from '@/types/agency';
+import { getTranslation } from '@/lib/translations.server';
+
+interface AgencyCardProps {
+ agency: Agency;
+}
+
+const AgencyCard = async ({ agency }: AgencyCardProps) => {
+ const { t } = await getTranslation('app/agency/page');
+ const { t: tAgency } = await getTranslation(`constants/agencies/${agency.id}`);
+
+ return (
+
+
@@ -97,4 +98,4 @@ const CityHeroSection = async ({ agency }: CityHeroSectionProps) => {
);
};
-export default CityHeroSection;
\ No newline at end of file
+export default CityHeroSection;
diff --git a/apps/web/src/components/marketing/agency/contact-cta.tsx b/apps/web/src/components/marketing/agency/contact-cta.tsx
index 06bf85fff..b84eb1246 100644
--- a/apps/web/src/components/marketing/agency/contact-cta.tsx
+++ b/apps/web/src/components/marketing/agency/contact-cta.tsx
@@ -1,15 +1,16 @@
-import React from 'react';
import { Link } from '@onruntime/translations/next';
import { Button } from '@/components/ui/button';
import { ArrowRight, Video, Calendar } from 'lucide-react';
import Routes from '@/constants/routes';
import { Agency } from '@/types/agency';
+import { getTranslation } from '@/lib/translations.server';
interface ContactCTAProps {
agency: Agency;
}
-const ContactCTA: React.FC = ({ agency }) => {
+const ContactCTA = async ({ agency }: ContactCTAProps) => {
+ const { t } = await getTranslation('components/marketing/agency/contact-cta');
const accent = agency.accentColor || "blue";
return (
@@ -22,39 +23,39 @@ const ContactCTA: React.FC = ({ agency }) => {
- Un projet adapté au marché de {agency.name} ?
+ {t('title', { city: agency.name })}
- Notre expertise du marché local de {agency.region} nous permet de vous proposer des solutions parfaitement adaptées à votre contexte régional. Discutons de votre projet !
+ {t('description', { region: agency.region })}
-
+
- Consultation en ligne via visioconférence
+ {t('features.video')}
- Horaires flexibles adaptés à votre agenda
+ {t('features.calendar')}
- Expertise approfondie du marché de {agency.name} et de {agency.region}
+ {t('features.expertise', { city: agency.name, region: agency.region })}
-
+
- Discuter de votre projet
+ {t('buttons.discuss')}
- Découvrir nos services
+ {t('buttons.discover')}
- Ce que nos clients à {agency.name} disent de nous
+ {tComponent('title', { city: agency.name })}
- Découvrez les témoignages de nos clients à {agency.name}, et comment nous les avons accompagnés dans leur transformation digitale.
+ {tComponent('description', { city: agency.name })}
@@ -57,4 +59,4 @@ const LocalTestimonials: React.FC = ({ agency }) => {
);
};
-export default LocalTestimonials;
\ No newline at end of file
+export default LocalTestimonials;
diff --git a/apps/web/src/constants/agencies/lyon.ts b/apps/web/src/constants/agencies/lyon.ts
index 2db8eb7ce..2a2a9b29e 100644
--- a/apps/web/src/constants/agencies/lyon.ts
+++ b/apps/web/src/constants/agencies/lyon.ts
@@ -6,117 +6,61 @@ const lyonAgency: Agency = {
id: "lyon",
name: "Lyon",
region: "Auvergne-Rhône-Alpes",
-
- title: "Agence Web à Lyon | Solutions Digitales sur Mesure",
- description: "Développement web, mobile et design UI/UX à Lyon. Notre expertise digitale adaptée aux entreprises de Rhône-Alpes pour dynamiser votre présence en ligne.",
-
- heroTitle: "Développement Web & Mobile à Lyon",
- heroDescription: "Transformez votre entreprise lyonnaise avec des solutions digitales innovantes parfaitement adaptées au dynamisme économique de la région Auvergne-Rhône-Alpes.",
-
- keyBusinessSectors: ["Biotechnologie", "Industrie pharmaceutique", "Gastronomie", "Finance"],
+
+ keyBusinessSectors: ["biotech", "pharma", "gastronomy", "finance"],
localChallenges: [
- "Digitalisation des PME et ETI industrielles face aux enjeux de l'industrie 4.0",
- "Développement de la visibilité numérique pour les acteurs de la gastronomie lyonnaise",
- "Solutions e-commerce adaptées au commerce local et aux artisans de la région",
- "Applications métier pour les secteurs pharmaceutique et biotech en pleine expansion"
+ "industry-digitalization",
+ "gastronomy-visibility",
+ "local-ecommerce",
+ "biotech-applications"
],
benefits: [
- "Expertise sectorielle dans les domaines d'excellence lyonnais (biotech, pharma, gastronomie)",
- "Compréhension des enjeux de digitalisation du bassin industriel rhônalpin",
- "Solutions adaptées aux PME et ETI en transformation numérique",
- "Designs UI/UX reflétant l'identité visuelle et les standards de qualité lyonnais",
- "Connaissance approfondie de l'écosystème numérique local"
+ "sector-expertise",
+ "industrial-understanding",
+ "sme-solutions",
+ "lyon-ui-design",
+ "local-ecosystem-knowledge"
],
-
- introText: "Implantée au cœur du dynamisme lyonnais, notre expertise digitale accompagne les entreprises de la région dans leur transformation numérique. Entre tradition industrielle, excellence biomédicale et rayonnement gastronomique, Lyon présente un tissu économique riche et diversifié dont nous comprenons parfaitement les enjeux.",
-
- expertiseText: "Nous créons des solutions web, mobile et e-commerce adaptées aux spécificités du marché lyonnais et rhônalpin. Notre équipe maîtrise les défis numériques propres aux secteurs d'excellence de la région, des biotechnologies à la gastronomie, en passant par l'industrie manufacturière.",
-
- whyChooseUs: "Notre connaissance du marché lyonnais nous permet de développer des solutions numériques parfaitement alignées avec les exigences et les particularités des entreprises locales. Nous comprenons les standards d'excellence de la région et proposons un accompagnement digital qui valorise l'identité et le savoir-faire lyonnais.",
-
+
accentColor: "blue",
primaryStat: {
+ key: "biotech",
icon: FlaskConical,
- value: "Biotech",
- label: "secteur d'innovation"
+ value: "Biotech"
},
-
+
strengths: [
- {
- title: "Solutions Biotech & Pharma",
- description: "Applications spécialisées pour le pôle santé lyonnais.",
- icon: FlaskConical
- },
- {
- title: "E-commerce gastronomique",
- description: "Valorisation digitale des produits du terroir rhônalpin.",
- icon: Store
- },
- {
- title: "Applications industrielles",
- description: "Outils numériques pour l'industrie 4.0 et la production.",
- icon: Building
- },
- {
- title: "Interfaces métier",
- description: "Design UI/UX adaptés aux besoins spécifiques lyonnais.",
- icon: Code
- }
+ { key: "biotech-pharma", icon: FlaskConical },
+ { key: "gastronomy-ecommerce", icon: Store },
+ { key: "industrial-applications", icon: Building },
+ { key: "business-interfaces", icon: Code }
],
-
+
focusedServices: [
- {
- name: "Applications métier biotech",
- description: "Solutions digitales pour les laboratoires et entreprises pharmaceutiques lyonnaises.",
- link: Routes.service.frontend.web,
- icon: FlaskConical
- },
- {
- name: "E-commerce gastronomique",
- description: "Plateformes de vente en ligne pour valoriser l'excellence culinaire lyonnaise.",
- link: Routes.service.integration.shopify,
- icon: Store
- },
- {
- name: "Digitalisation industrielle",
- description: "Outils de pilotage et solutions IoT pour l'industrie rhônalpine.",
- link: Routes.service.backend.api,
- icon: Database
- }
+ { key: "biotech-applications", link: Routes.service.frontend.web, icon: FlaskConical },
+ { key: "gastronomy-ecommerce", link: Routes.service.integration.shopify, icon: Store },
+ { key: "industrial-digitalization", link: Routes.service.backend.api, icon: Database }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Lyon"]
+ email: "contact@onruntime.com"
},
-
+
stats: [
- {
- label: "Projets biotech",
- value: "15+",
- description: "Applications spécialisées"
- },
- {
- label: "Satisfaction",
- value: "97%",
- description: "Clients satisfaits"
- },
- {
- label: "PME accompagnées",
- value: "45+",
- description: "Entreprises lyonnaises"
- }
+ { key: "biotech-projects", value: "15+" },
+ { key: "satisfaction", value: "97%" },
+ { key: "sme-supported", value: "45+" }
],
-
+
geo: {
latitude: "45.764043",
longitude: "4.835659"
},
-
+
nearbyLocations: ["saint-etienne", "grenoble", "valence", "chambery"]
};
-export default lyonAgency;
\ No newline at end of file
+export default lyonAgency;
diff --git a/apps/web/src/constants/agencies/marseille.ts b/apps/web/src/constants/agencies/marseille.ts
index 3104528ec..71922c5a6 100644
--- a/apps/web/src/constants/agencies/marseille.ts
+++ b/apps/web/src/constants/agencies/marseille.ts
@@ -6,117 +6,61 @@ const marseilleAgency: Agency = {
id: "marseille",
name: "Marseille",
region: "Provence-Alpes-Côte d'Azur",
-
- title: "Développement Web à Marseille | Solutions Digitales pour Entreprises Provençales",
- description: "Créez votre site web ou application mobile à Marseille. Solutions digitales sur mesure pour les entreprises provençales, adaptées aux enjeux locaux de votre secteur.",
-
- heroTitle: "Développement Web & Mobile à Marseille",
- heroDescription: "Nous aidons les entreprises de Marseille et de la région PACA à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché méditerranéen.",
-
- keyBusinessSectors: ["Tourisme", "Maritime", "Commerce local", "Restauration"],
+
+ keyBusinessSectors: ["tourism", "maritime", "local-commerce", "restaurant"],
localChallenges: [
- "Forte concurrence dans le secteur touristique méditerranéen nécessitant une présence digitale distinctive",
- "Besoin de solutions numériques adaptées au commerce maritime et portuaire",
- "Digitalisation des commerces locaux face aux grandes chaînes",
- "Nécessité de solutions e-commerce adaptées pour valoriser l'artisanat et les produits locaux"
+ "tourism-competition",
+ "maritime-solutions",
+ "local-commerce-digitalization",
+ "local-ecommerce"
],
benefits: [
- "Solutions sur mesure adaptées aux spécificités des entreprises provençales",
- "Expertise pointue dans les secteurs du tourisme et maritime",
- "Interface utilisateur optimisée pour une clientèle internationale",
- "Connaissance approfondie des enjeux économiques méditerranéens",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "custom-solutions",
+ "tourism-maritime-expertise",
+ "international-ui",
+ "mediterranean-knowledge",
+ "personalized-support"
],
-
- introText: "Entre mer et collines, Marseille est un carrefour économique dynamique où tradition et innovation se rencontrent. Notre expertise digitale permet aux entreprises marseillaises de se démarquer dans un marché méditerranéen compétitif et en constante évolution.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises marseillaises. Nous comprenons les défis de votre marché local et vous proposons des solutions digitales qui valorisent votre identité provençale tout en touchant une clientèle internationale.",
-
- whyChooseUs: "Notre connaissance approfondie du marché provençal nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons la richesse culturelle et économique de Marseille et l'intégrons dans chaque projet pour créer des expériences digitales authentiques et performantes.",
-
+
accentColor: "magenta",
primaryStat: {
+ key: "tourism",
icon: Sun,
- value: "Tourisme",
- label: "secteur touristique"
+ value: "Tourisme"
},
-
+
strengths: [
- {
- title: "Expérience touristique",
- description: "Sites et applications optimisés pour le secteur touristique méditerranéen.",
- icon: Sun
- },
- {
- title: "E-commerce local",
- description: "Solutions de vente en ligne pour artisans et commerçants provençaux.",
- icon: Building
- },
- {
- title: "Secteur maritime",
- description: "Digitalisation adaptée aux activités portuaires et nautiques.",
- icon: Ship
- },
- {
- title: "Design méditerranéen",
- description: "Interfaces modernes reflétant l'identité visuelle méditerranéenne.",
- icon: Image
- }
+ { key: "tourism-experience", icon: Sun },
+ { key: "local-ecommerce", icon: Building },
+ { key: "maritime-sector", icon: Ship },
+ { key: "mediterranean-design", icon: Image }
],
-
+
focusedServices: [
- {
- name: "Sites web touristiques",
- description: "Vitrines digitales multilingues pour hôtels, restaurants et activités touristiques.",
- link: Routes.service.frontend.web,
- icon: Sun
- },
- {
- name: "E-commerce provençal",
- description: "Boutiques en ligne adaptées aux producteurs et artisans locaux.",
- link: Routes.service.integration.shopify,
- icon: Building
- },
- {
- name: "Applications mobiles",
- description: "Solutions mobiles pour enrichir l'expérience touristique et commerciale.",
- link: Routes.service.frontend.mobile,
- icon: User
- }
+ { key: "tourism-websites", link: Routes.service.frontend.web, icon: Sun },
+ { key: "provencal-ecommerce", link: Routes.service.integration.shopify, icon: Building },
+ { key: "mobile-applications", link: Routes.service.frontend.mobile, icon: User }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Marseille"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "98%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "6-8",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "98%" },
+ { key: "average-time", value: "6-8" }
],
-
+
geo: {
latitude: "43.296482",
longitude: "5.369780"
},
-
+
nearbyLocations: ["nice", "montpellier", "toulon", "aix-en-provence"]
};
-export default marseilleAgency;
\ No newline at end of file
+export default marseilleAgency;
diff --git a/apps/web/src/constants/agencies/montpellier.ts b/apps/web/src/constants/agencies/montpellier.ts
index 4bdeeac62..1718b30e1 100644
--- a/apps/web/src/constants/agencies/montpellier.ts
+++ b/apps/web/src/constants/agencies/montpellier.ts
@@ -6,117 +6,61 @@ const montpellierAgency: Agency = {
id: "montpellier",
name: "Montpellier",
region: "Occitanie",
-
- title: "Développement Web à Montpellier | Solutions Digitales pour Entreprises Languedociennes",
- description: "Créez votre site web ou application mobile à Montpellier. Solutions digitales sur mesure pour les entreprises montpelliéraines, adaptées aux enjeux locaux de votre secteur.",
-
- heroTitle: "Développement Web & Mobile à Montpellier",
- heroDescription: "Nous aidons les entreprises de Montpellier et du Languedoc à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché régional.",
-
- keyBusinessSectors: ["Santé & Biotechnologies", "Enseignement supérieur", "Viticulture", "Tourisme"],
+
+ keyBusinessSectors: ["health-biotech", "higher-education", "viticulture", "tourism"],
localChallenges: [
- "Digitalisation du secteur des biotechnologies et de la santé en pleine expansion",
- "Besoin de plateformes éducatives innovantes pour les nombreuses universités et écoles",
- "Valorisation numérique du patrimoine viticole et des produits du terroir",
- "Adaptation des acteurs du tourisme face à la concurrence méditerranéenne"
+ "biotech-health-digitalization",
+ "innovative-educational-platforms",
+ "wine-heritage-digital-showcase",
+ "tourism-adaptation"
],
benefits: [
- "Solutions sur mesure adaptées aux entreprises innovantes du secteur santé",
- "Expertise pointue dans les plateformes éducatives et les outils e-learning",
- "Connaissance approfondie du marché languedocien et de ses spécificités",
- "Interfaces utilisateur optimisées pour valoriser les produits régionaux",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "health-sector-solutions",
+ "educational-platforms-expertise",
+ "languedoc-market-knowledge",
+ "regional-products-ui",
+ "personalized-support"
],
-
- introText: "Ville dynamique à la croisée des influences méditerranéennes et languedociennes, Montpellier se distingue par son écosystème d'innovation en santé, ses universités prestigieuses et son art de vivre. Notre expertise digitale permet aux entreprises montpelliéraines de tirer parti de cette richesse et de se démarquer dans un environnement compétitif.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises de Montpellier et sa région. Nous comprenons les défis spécifiques de votre marché local, qu'il s'agisse du secteur de la santé, de l'éducation ou du terroir languedocien, et vous proposons des solutions numériques qui valorisent votre expertise et votre ancrage régional.",
-
- whyChooseUs: "Notre connaissance approfondie du marché montpelliérain nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons l'équilibre entre innovation et tradition qui caractérise Montpellier, et intégrons cette compréhension dans chaque projet pour créer des expériences digitales authentiques et performantes.",
-
+
accentColor: "magenta",
primaryStat: {
+ key: "health",
icon: Microscope,
- value: "Santé",
- label: "biotechnologies"
+ value: "Santé"
},
-
+
strengths: [
- {
- title: "Santé connectée",
- description: "Solutions digitales pour startups et entreprises des sciences de la vie.",
- icon: Microscope
- },
- {
- title: "E-learning",
- description: "Plateformes pédagogiques pour universités et établissements de formation.",
- icon: GraduationCap
- },
- {
- title: "Terroir digital",
- description: "Sites et e-commerce pour domaines viticoles et producteurs locaux.",
- icon: Wine
- },
- {
- title: "Tourisme régional",
- description: "Expériences numériques pour valoriser le patrimoine languedocien.",
- icon: Palmtree
- }
+ { key: "connected-health", icon: Microscope },
+ { key: "elearning", icon: GraduationCap },
+ { key: "digital-terroir", icon: Wine },
+ { key: "regional-tourism", icon: Palmtree }
],
-
+
focusedServices: [
- {
- name: "Applications santé",
- description: "Solutions sur mesure pour startups et entreprises du secteur des sciences de la vie.",
- link: Routes.service.frontend.mobile,
- icon: Microscope
- },
- {
- name: "Plateformes éducatives",
- description: "Outils d'apprentissage digitaux pour établissements d'enseignement.",
- link: Routes.service.frontend.web,
- icon: GraduationCap
- },
- {
- name: "E-commerce terroir",
- description: "Boutiques en ligne pour producteurs locaux et domaines viticoles.",
- link: Routes.service.integration.shopify,
- icon: Wine
- }
+ { key: "health-applications", link: Routes.service.frontend.mobile, icon: Microscope },
+ { key: "educational-platforms", link: Routes.service.frontend.web, icon: GraduationCap },
+ { key: "terroir-ecommerce", link: Routes.service.integration.shopify, icon: Wine }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Montpellier"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "98%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "6-8",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "98%" },
+ { key: "average-time", value: "6-8" }
],
-
+
geo: {
latitude: "43.6108",
longitude: "3.8767"
},
-
+
nearbyLocations: ["nimes", "toulouse", "marseille", "perpignan"]
};
-export default montpellierAgency;
\ No newline at end of file
+export default montpellierAgency;
diff --git a/apps/web/src/constants/agencies/nantes.ts b/apps/web/src/constants/agencies/nantes.ts
index 27d6abcec..42af80264 100644
--- a/apps/web/src/constants/agencies/nantes.ts
+++ b/apps/web/src/constants/agencies/nantes.ts
@@ -6,117 +6,61 @@ const nantesAgency: Agency = {
id: "nantes",
name: "Nantes",
region: "Pays de la Loire",
-
- title: "Développement Web à Nantes | Solutions Digitales pour Entreprises Ligériennes",
- description: "Créez votre site web ou application mobile à Nantes. Solutions digitales sur mesure pour les entreprises nantaises, adaptées aux enjeux locaux de votre secteur.",
-
- heroTitle: "Développement Web & Mobile à Nantes",
- heroDescription: "Nous aidons les entreprises de Nantes et des Pays de la Loire à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché ligérien.",
-
- keyBusinessSectors: ["Tech & Numérique", "Transition écologique", "Industries créatives", "Agroalimentaire"],
+
+ keyBusinessSectors: ["tech-digital", "ecological-transition", "creative-industries", "agrifood"],
localChallenges: [
- "Forte concurrence dans l'écosystème numérique nantais en pleine expansion",
- "Besoins spécifiques des startups et scale-ups de la French Tech locale",
- "Digitalisation des acteurs de la transition écologique et énergétique",
- "Transformation numérique des industries traditionnelles et agroalimentaires régionales"
+ "digital-ecosystem-competition",
+ "startup-scaleup-needs",
+ "ecological-transition-digitalization",
+ "traditional-industries-transformation"
],
benefits: [
- "Solutions sur mesure adaptées à l'écosystème numérique nantais",
- "Expertise pointue dans les technologies web innovantes et éco-responsables",
- "Approche agile parfaitement adaptée aux startups et entreprises innovantes",
- "Connaissance approfondie des enjeux de la transition numérique ligérienne",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "nantes-ecosystem-solutions",
+ "innovative-eco-technologies",
+ "agile-approach",
+ "digital-transition-knowledge",
+ "personalized-support"
],
-
- introText: "Capitale historique de la Bretagne et métropole innovante, Nantes est reconnue pour son dynamisme économique et sa qualité de vie. Son écosystème numérique florissant, ses industries créatives et son engagement dans la transition écologique en font un territoire unique où l'innovation digitale joue un rôle central.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises nantaises, qu'elles soient des startups innovantes, des acteurs de l'économie responsable ou des entreprises traditionnelles en transformation. Nous comprenons les spécificités du marché local et vous proposons des solutions numériques alignées avec les valeurs d'innovation et de durabilité propres à Nantes.",
-
- whyChooseUs: "Notre connaissance approfondie du marché nantais nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons l'esprit d'innovation et l'engagement pour une économie plus responsable qui caractérisent Nantes, et intégrons ces valeurs dans chaque projet digital que nous réalisons.",
-
+
accentColor: "blue",
primaryStat: {
+ key: "tech",
icon: Laptop,
- value: "Tech",
- label: "numérique nantais"
+ value: "Tech"
},
-
+
strengths: [
- {
- title: "Tech innovante",
- description: "Solutions digitales modernes pour startups et scale-ups nantaises.",
- icon: Laptop
- },
- {
- title: "Éco-conception",
- description: "Sites et applications à l'empreinte environnementale maîtrisée.",
- icon: Leaf
- },
- {
- title: "Industrie maritime",
- description: "Digitalisation adaptée aux activités portuaires et fluviales.",
- icon: Ship
- },
- {
- title: "Énergies renouvelables",
- description: "Solutions numériques pour les acteurs de la transition énergétique.",
- icon: Wind
- }
+ { key: "innovative-tech", icon: Laptop },
+ { key: "eco-design", icon: Leaf },
+ { key: "maritime-industry", icon: Ship },
+ { key: "renewable-energy", icon: Wind }
],
-
+
focusedServices: [
- {
- name: "Web applications",
- description: "Applications web performantes et évolutives pour startups et entreprises innovantes.",
- link: Routes.service.frontend.web,
- icon: Laptop
- },
- {
- name: "Sites éco-conçus",
- description: "Sites web optimisés et durables pour les acteurs de l'économie responsable.",
- link: Routes.service.frontend.web,
- icon: Leaf
- },
- {
- name: "Plateformes métier",
- description: "Solutions sur mesure pour industries traditionnelles en transformation.",
- link: Routes.service.backend.api,
- icon: Building
- }
+ { key: "web-applications", link: Routes.service.frontend.web, icon: Laptop },
+ { key: "eco-designed-websites", link: Routes.service.frontend.web, icon: Leaf },
+ { key: "business-platforms", link: Routes.service.backend.api, icon: Building }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Nantes"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "97%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "6-8",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "97%" },
+ { key: "average-time", value: "6-8" }
],
-
+
geo: {
latitude: "47.2184",
longitude: "-1.5536"
},
-
+
nearbyLocations: ["rennes", "angers", "la-rochelle", "saint-nazaire"]
};
-export default nantesAgency;
\ No newline at end of file
+export default nantesAgency;
diff --git a/apps/web/src/constants/agencies/nice.ts b/apps/web/src/constants/agencies/nice.ts
index 41f3fe618..41f1e7c29 100644
--- a/apps/web/src/constants/agencies/nice.ts
+++ b/apps/web/src/constants/agencies/nice.ts
@@ -6,117 +6,61 @@ const niceAgency: Agency = {
id: "nice",
name: "Nice",
region: "Provence-Alpes-Côte d'Azur",
-
- title: "Développement Web à Nice | Solutions Digitales pour Entreprises Azuréennes",
- description: "Créez votre site web ou application mobile à Nice. Solutions digitales sur mesure pour les entreprises de la Côte d'Azur, adaptées aux enjeux locaux de votre secteur.",
-
- heroTitle: "Développement Web & Mobile à Nice",
- heroDescription: "Nous aidons les entreprises de Nice et de la Côte d'Azur à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché azuréen.",
-
- keyBusinessSectors: ["Tourisme de luxe", "Immobilier", "Événementiel", "Santé & Bien-être"],
+
+ keyBusinessSectors: ["luxury-tourism", "real-estate", "events", "health-wellness"],
localChallenges: [
- "Digitalisation du secteur du tourisme haut de gamme sur la Côte d'Azur",
- "Besoin de solutions immobilières innovantes pour un marché international exigeant",
- "Mise en valeur digitale de l'événementiel (festivals, congrès, expositions)",
- "Transformation numérique du secteur santé et bien-être dans une région reconnue pour sa qualité de vie"
+ "luxury-tourism-digitalization",
+ "innovative-real-estate-solutions",
+ "events-digital-showcase",
+ "health-wellness-transformation"
],
benefits: [
- "Solutions sur mesure adaptées à une clientèle internationale exigeante",
- "Expertise pointue dans les interfaces haut de gamme et l'expérience utilisateur premium",
- "Connaissance approfondie du marché azuréen et de ses spécificités",
- "Applications multilingues adaptées à la clientèle internationale de la Côte d'Azur",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "international-clientele-solutions",
+ "premium-interfaces-expertise",
+ "azurean-market-knowledge",
+ "multilingual-applications",
+ "personalized-support"
],
-
- introText: "Entre mer Méditerranée et Alpes, Nice bénéficie d'un rayonnement international et d'une économie diversifiée où le tourisme côtoie l'innovation. Notre expertise digitale permet aux entreprises niçoises de se démarquer dans un environnement compétitif où l'image et l'excellence sont primordiales.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Nice et de la Côte d'Azur. Nous comprenons les exigences élevées de votre marché local et vous proposons des solutions digitales qui valorisent le positionnement premium propre à la région.",
-
- whyChooseUs: "Notre connaissance approfondie du marché azuréen nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons la dimension internationale de Nice et sa réputation d'excellence, et intégrons ces aspects dans chaque projet pour créer des expériences digitales raffinées et performantes.",
-
+
accentColor: "blue",
primaryStat: {
+ key: "tourism",
icon: Palmtree,
- value: "Tourisme",
- label: "tourisme de luxe"
+ value: "Tourisme"
},
-
+
strengths: [
- {
- title: "Expérience premium",
- description: "Sites et applications haut de gamme pour le tourisme de luxe et l'hôtellerie.",
- icon: Hotel
- },
- {
- title: "Immobilier digital",
- description: "Solutions innovantes pour les agences immobilières et promoteurs.",
- icon: Building
- },
- {
- title: "Plateformes événementielles",
- description: "Sites et applications pour festivals, congrès et événements prestigieux.",
- icon: ShoppingBag
- },
- {
- title: "Bien-être connecté",
- description: "Solutions digitales pour cliniques, spas et centres de bien-être.",
- icon: HeartPulse
- }
+ { key: "premium-experience", icon: Hotel },
+ { key: "digital-real-estate", icon: Building },
+ { key: "event-platforms", icon: ShoppingBag },
+ { key: "connected-wellness", icon: HeartPulse }
],
-
+
focusedServices: [
- {
- name: "Sites web premium",
- description: "Vitrines digitales haut de gamme pour hôtels, restaurants et boutiques de luxe.",
- link: Routes.service.frontend.web,
- icon: Hotel
- },
- {
- name: "Applications immobilières",
- description: "Solutions sur mesure pour la présentation et la gestion de biens d'exception.",
- link: Routes.service.frontend.mobile,
- icon: Building
- },
- {
- name: "Identité visuelle",
- description: "Design UI/UX élégant et soigné pour marques et établissements prestigieux.",
- link: Routes.service.design.ui,
- icon: Palmtree
- }
+ { key: "premium-websites", link: Routes.service.frontend.web, icon: Hotel },
+ { key: "real-estate-applications", link: Routes.service.frontend.mobile, icon: Building },
+ { key: "visual-identity", link: Routes.service.design.ui, icon: Palmtree }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Nice"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "99%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "6-8",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "99%" },
+ { key: "average-time", value: "6-8" }
],
-
+
geo: {
latitude: "43.7102",
longitude: "7.2620"
},
-
+
nearbyLocations: ["marseille", "cannes", "monaco", "antibes"]
};
-export default niceAgency;
\ No newline at end of file
+export default niceAgency;
diff --git a/apps/web/src/constants/agencies/paris.ts b/apps/web/src/constants/agencies/paris.ts
index a0c7559c7..ad3d33030 100644
--- a/apps/web/src/constants/agencies/paris.ts
+++ b/apps/web/src/constants/agencies/paris.ts
@@ -6,118 +6,62 @@ const parisAgency: Agency = {
id: "paris",
name: "Paris",
region: "Île-de-France",
-
- title: "Agence Web à Paris | Développement Web, Mobile & Design UI/UX",
- description: "Votre partenaire digital au cœur de Paris. Solutions de développement web, mobile et design UI/UX pour accélérer la croissance de votre entreprise parisienne.",
-
- heroTitle: "Développement Digital dans la Capitale",
- heroDescription: "Transformez votre présence numérique avec des solutions innovantes adaptées au marché parisien compétitif et son écosystème dynamique de startups, grands groupes et entreprises innovantes.",
-
- keyBusinessSectors: ["Startups Tech", "Finance", "Luxe", "Médias & Communication"],
+
+ keyBusinessSectors: ["startups-tech", "finance", "luxury", "media-communication"],
localChallenges: [
- "Forte concurrence digitale sur le marché parisien nécessitant des solutions différenciantes",
- "Besoins d'outils agiles et performants pour les startups en hypercroissance",
- "Digitalisation des services financiers traditionnels face aux fintechs",
- "Développement d'expériences digitales premium pour le secteur du luxe parisien",
- "Solutions innovantes pour les grands groupes en transformation numérique"
+ "digital-competition",
+ "agile-tools-startups",
+ "financial-digitalization",
+ "luxury-digital-experiences",
+ "corporate-transformation"
],
benefits: [
- "Expertise pointue des dernières technologies adaptées à l'écosystème startup parisien",
- "Solutions premium répondant aux exigences élevées du marché de la capitale",
- "Compréhension des codes du luxe et de la finance pour des expériences numériques sur mesure",
- "Agilité et réactivité pour accompagner le rythme intensif des entreprises parisiennes",
- "Connaissance approfondie des tendances et innovations de la tech française"
+ "startup-expertise",
+ "premium-solutions",
+ "luxury-finance-understanding",
+ "agility-responsiveness",
+ "tech-trends-knowledge"
],
-
- introText: "Au cœur de la capitale française, notre expertise digitale répond aux exigences du marché parisien avec des solutions web et mobile innovantes. Entre grands groupes, entreprises du luxe et startups en pleine croissance, Paris concentre un écosystème numérique dynamique dont nous comprenons parfaitement les enjeux et les opportunités.",
-
- expertiseText: "Nous concevons des expériences digitales premium qui répondent aux standards élevés des entreprises parisiennes. Notre équipe maîtrise les défis spécifiques de la capitale, qu'il s'agisse de créer des interfaces utilisateur raffinées pour le secteur du luxe, des applications performantes pour les fintechs, ou des solutions évolutives pour les startups en hypercroissance.",
-
- whyChooseUs: "Notre connaissance approfondie du marché parisien nous permet de développer des solutions digitales parfaitement alignées avec les exigences des entreprises de la capitale. Nous combinons innovation technique, excellence créative et compréhension business pour vous accompagner efficacement dans un environnement hautement compétitif.",
-
+
accentColor: "magenta",
primaryStat: {
+ key: "innovation",
icon: Rocket,
- value: "Innovation",
- label: "startup & tech"
+ value: "Innovation"
},
-
+
strengths: [
- {
- title: "Solutions Startup",
- description: "Applications évolutives pour entreprises en forte croissance.",
- icon: Rocket
- },
- {
- title: "Expériences Luxe",
- description: "Interfaces premium pour marques et services haut de gamme.",
- icon: Landmark
- },
- {
- title: "Finance & Fintech",
- description: "Solutions sécurisées pour le secteur financier parisien.",
- icon: Building
- },
- {
- title: "International",
- description: "Développement multilingue adapté aux entreprises globales.",
- icon: Globe
- }
+ { key: "startup-solutions", icon: Rocket },
+ { key: "luxury-experiences", icon: Landmark },
+ { key: "finance-fintech", icon: Building },
+ { key: "international", icon: Globe }
],
focusedServices: [
- {
- name: "Applications SaaS",
- description: "Développement de solutions cloud innovantes pour startups et scale-ups.",
- link: Routes.service.frontend.web,
- icon: Rocket
- },
- {
- name: "E-commerce premium",
- description: "Plateformes de vente haut de gamme pour les marques de luxe parisiennes.",
- link: Routes.service.integration.shopify,
- icon: Landmark
- },
- {
- name: "Design UI/UX innovant",
- description: "Interfaces utilisateur modernes et différenciantes pour se démarquer à Paris.",
- link: Routes.service.design.ui,
- icon: Code
- }
+ { key: "saas-applications", link: Routes.service.frontend.web, icon: Rocket },
+ { key: "premium-ecommerce", link: Routes.service.integration.shopify, icon: Landmark },
+ { key: "innovative-design", link: Routes.service.design.ui, icon: Code }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "paris@onruntime.com",
- meetingOptions: ["Visioconférence", "Rencontres à Paris"]
+ email: "paris@onruntime.com"
},
-
+
stats: [
- {
- label: "Startups",
- value: "30+",
- description: "Projets pour startups"
- },
- {
- label: "Clients luxe",
- value: "15+",
- description: "Marques premium"
- },
- {
- label: "ROI moyen",
- value: "250%",
- description: "Retour sur investissement"
- }
+ { key: "startups", value: "30+" },
+ { key: "luxury-clients", value: "15+" },
+ { key: "average-roi", value: "250%" }
],
-
+
geo: {
latitude: "48.856614",
longitude: "2.3522219"
},
-
+
nearbyLocations: ["boulogne-billancourt", "nanterre", "saint-denis", "versailles"]
};
-export default parisAgency;
\ No newline at end of file
+export default parisAgency;
diff --git a/apps/web/src/constants/agencies/rouen.ts b/apps/web/src/constants/agencies/rouen.ts
index e5fd5c2ce..53cc11773 100644
--- a/apps/web/src/constants/agencies/rouen.ts
+++ b/apps/web/src/constants/agencies/rouen.ts
@@ -6,117 +6,61 @@ const rouenAgency: Agency = {
id: "rouen",
name: "Rouen",
region: "Normandie",
-
- title: "Développement Web à Rouen | Solutions Digitales pour Entreprises Normandes",
- description: "Créez votre site web ou application mobile à Rouen. Solutions digitales sur mesure pour les entreprises normandes, adaptées aux enjeux locaux de votre secteur.",
-
- heroTitle: "Développement Web & Mobile à Rouen",
- heroDescription: "Nous aidons les entreprises de Rouen et de Normandie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché normand.",
-
- keyBusinessSectors: ["Industrie", "Agroalimentaire", "Logistique", "Commerce local"],
+
+ keyBusinessSectors: ["industry", "agrifood", "logistics", "local-commerce"],
localChallenges: [
- "Digitalisation des industries traditionnelles normandes face à la concurrence internationale",
- "Optimisation de la logistique fluviale et portuaire via des solutions numériques innovantes",
- "Besoin de solutions e-commerce adaptées aux producteurs et artisans locaux",
- "Transition numérique des PME normandes avec des budgets maîtrisés"
+ "traditional-industries-digitalization",
+ "logistics-optimization",
+ "local-ecommerce-needs",
+ "sme-digital-transition"
],
benefits: [
- "Solutions sur mesure adaptées aux spécificités des entreprises normandes",
- "Expertise pointue dans les secteurs industriels et agroalimentaires régionaux",
- "Tarifs compétitifs par rapport aux agences parisiennes",
- "Connaissance approfondie des enjeux logistiques liés à l'axe Seine",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "normandy-specific-solutions",
+ "industrial-agrifood-expertise",
+ "competitive-pricing",
+ "seine-logistics-knowledge",
+ "personalized-support"
],
-
- introText: "Le tissu économique normand présente des enjeux numériques spécifiques que nous avons appris à maîtriser. Entre l'industrie manufacturière, le secteur agroalimentaire et la logistique fluviale, nous créons des solutions digitales qui répondent aux besoins précis des entreprises rouennaises.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Rouen et sa région. Nous comprenons les défis de votre marché et vous proposons des solutions digitales qui vous aident à vous démarquer et à développer votre activité.",
-
- whyChooseUs: "Notre connaissance approfondie du marché normand nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Contrairement aux agences parisiennes, nous comprenons les subtilités du tissu économique de Rouen et apportons des solutions sur mesure à un rapport qualité-prix avantageux.",
-
+
accentColor: "blue",
primaryStat: {
+ key: "industry",
icon: Building,
- value: "Industrie",
- label: "secteur industriel"
+ value: "Industrie"
},
-
+
strengths: [
- {
- title: "Sites web industriels",
- description: "Sites performants adaptés aux entreprises manufacturières normandes.",
- icon: Building
- },
- {
- title: "E-commerce local",
- description: "Solutions de vente en ligne pour producteurs et artisans locaux.",
- icon: Store
- },
- {
- title: "Applications métier",
- description: "Outils numériques sur mesure pour optimiser vos processus.",
- icon: Database
- },
- {
- title: "Digitalisation PME",
- description: "Accompagnement complet pour votre transformation numérique.",
- icon: Cloud
- }
+ { key: "industrial-websites", icon: Building },
+ { key: "local-ecommerce", icon: Store },
+ { key: "business-applications", icon: Database },
+ { key: "sme-digitalization", icon: Cloud }
],
-
+
focusedServices: [
- {
- name: "Sites web professionnels",
- description: "Vitrines digitales performantes et optimisées pour le SEO local à Rouen.",
- link: Routes.service.frontend.web,
- icon: Building
- },
- {
- name: "E-commerce régional",
- description: "Boutiques en ligne adaptées aux producteurs et commerces normands.",
- link: Routes.service.integration.shopify,
- icon: Store
- },
- {
- name: "Applications métier",
- description: "Logiciels sur mesure pour l'industrie et la logistique régionale.",
- link: Routes.service.frontend.desktop,
- icon: Database
- }
+ { key: "professional-websites", link: Routes.service.frontend.web, icon: Building },
+ { key: "regional-ecommerce", link: Routes.service.integration.shopify, icon: Store },
+ { key: "business-applications", link: Routes.service.frontend.desktop, icon: Database }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Rouen"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "97%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "6-8",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "97%" },
+ { key: "average-time", value: "6-8" }
],
-
+
geo: {
latitude: "49.443232",
longitude: "1.099971"
},
-
+
nearbyLocations: ["le-havre", "caen", "evreux", "dieppe"]
};
-export default rouenAgency;
\ No newline at end of file
+export default rouenAgency;
diff --git a/apps/web/src/constants/agencies/strasbourg.ts b/apps/web/src/constants/agencies/strasbourg.ts
index 96fa6e332..a36717c58 100644
--- a/apps/web/src/constants/agencies/strasbourg.ts
+++ b/apps/web/src/constants/agencies/strasbourg.ts
@@ -6,117 +6,61 @@ const strasbourgAgency: Agency = {
id: "strasbourg",
name: "Strasbourg",
region: "Grand Est",
-
- title: "Développement Web à Strasbourg | Solutions Digitales pour Entreprises Alsaciennes",
- description: "Créez votre site web ou application mobile à Strasbourg. Solutions digitales sur mesure pour les entreprises alsaciennes, adaptées aux enjeux locaux et transfrontaliers.",
-
- heroTitle: "Développement Web & Mobile à Strasbourg",
- heroDescription: "Nous aidons les entreprises de Strasbourg et du Grand Est à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché alsacien et européen.",
-
- keyBusinessSectors: ["Institutions européennes", "Commerce transfrontalier", "Industrie", "Culture & Patrimoine"],
+
+ keyBusinessSectors: ["european-institutions", "cross-border-commerce", "industry", "culture-heritage"],
localChallenges: [
- "Besoins spécifiques des institutions européennes et organisations internationales",
- "Développement du commerce transfrontalier avec l'Allemagne et la Suisse",
- "Transformation digitale des industries traditionnelles alsaciennes",
- "Valorisation numérique du riche patrimoine culturel et historique de la région"
+ "european-institutions-needs",
+ "cross-border-development",
+ "traditional-industries-transformation",
+ "heritage-digital-showcase"
],
benefits: [
- "Solutions multilingues adaptées au contexte international strasbourgeois",
- "Expertise pointue dans les interfaces utilisateur conformes aux normes européennes",
- "Connaissance approfondie des marchés transfrontaliers et de leurs spécificités",
- "Approche à la fois innovante et respectueuse des traditions alsaciennes",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "multilingual-solutions",
+ "european-standards-expertise",
+ "cross-border-knowledge",
+ "innovative-traditional-approach",
+ "personalized-support"
],
-
- introText: "Capitale européenne et ville frontalière au riche patrimoine, Strasbourg conjugue traditions alsaciennes et ouverture internationale. Son statut de siège d'institutions européennes, son industrie dynamique et sa position stratégique entre France et Allemagne en font un territoire unique où le digital joue un rôle essentiel de passerelle.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises strasbourgeoises, qu'elles soient des organisations internationales, des entreprises industrielles ou des acteurs du patrimoine local. Nous comprenons les défis spécifiques de votre marché régional et transfrontalier, et vous proposons des solutions numériques multilingues et culturellement adaptées.",
-
- whyChooseUs: "Notre connaissance approfondie du marché strasbourgeois nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons les exigences du contexte européen et les particularités culturelles alsaciennes, et intégrons cette double dimension dans chaque projet pour créer des expériences digitales pertinentes et performantes.",
-
+
accentColor: "blue",
primaryStat: {
+ key: "europe",
icon: Globe,
- value: "Europe",
- label: "contexte international"
+ value: "Europe"
},
-
+
strengths: [
- {
- title: "Solutions européennes",
- description: "Plateformes multilingues pour institutions et organisations internationales.",
- icon: Globe
- },
- {
- title: "Commerce transfrontalier",
- description: "Solutions e-commerce adaptées aux marchés français, allemand et suisse.",
- icon: Briefcase
- },
- {
- title: "Industrie 4.0",
- description: "Digitalisation des processus pour l'industrie alsacienne traditionnelle.",
- icon: Warehouse
- },
- {
- title: "Patrimoine numérique",
- description: "Expériences digitales pour valoriser le patrimoine culturel et historique.",
- icon: LibraryBig
- }
+ { key: "european-solutions", icon: Globe },
+ { key: "cross-border-commerce", icon: Briefcase },
+ { key: "industry-40", icon: Warehouse },
+ { key: "digital-heritage", icon: LibraryBig }
],
-
+
focusedServices: [
- {
- name: "Sites institutionnels",
- description: "Plateformes multilingues conformes aux normes européennes d'accessibilité.",
- link: Routes.service.frontend.web,
- icon: Building
- },
- {
- name: "E-commerce transfrontalier",
- description: "Solutions commerciales adaptées aux spécificités des marchés allemand et français.",
- link: Routes.service.integration.shopify,
- icon: Briefcase
- },
- {
- name: "Applications industrielles",
- description: "Outils numériques sur mesure pour moderniser les process industriels.",
- link: Routes.service.frontend.desktop,
- icon: Warehouse
- }
+ { key: "institutional-websites", link: Routes.service.frontend.web, icon: Building },
+ { key: "cross-border-ecommerce", link: Routes.service.integration.shopify, icon: Briefcase },
+ { key: "industrial-applications", link: Routes.service.frontend.desktop, icon: Warehouse }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Strasbourg"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "97%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "6-8",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "97%" },
+ { key: "average-time", value: "6-8" }
],
-
+
geo: {
latitude: "48.5734",
longitude: "7.7521"
},
-
+
nearbyLocations: ["colmar", "mulhouse", "metz", "nancy"]
};
-export default strasbourgAgency;
\ No newline at end of file
+export default strasbourgAgency;
diff --git a/apps/web/src/constants/agencies/toulouse.ts b/apps/web/src/constants/agencies/toulouse.ts
index 59451ac86..007bf74a3 100644
--- a/apps/web/src/constants/agencies/toulouse.ts
+++ b/apps/web/src/constants/agencies/toulouse.ts
@@ -6,117 +6,61 @@ const toulouseAgency: Agency = {
id: "toulouse",
name: "Toulouse",
region: "Occitanie",
-
- title: "Développement Web à Toulouse | Solutions Digitales pour Entreprises Occitanes",
- description: "Créez votre site web ou application mobile à Toulouse. Solutions digitales sur mesure pour les entreprises toulousaines, adaptées aux enjeux locaux de votre secteur.",
-
- heroTitle: "Développement Web & Mobile à Toulouse",
- heroDescription: "Nous aidons les entreprises de Toulouse et de l'Occitanie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché toulousain.",
-
- keyBusinessSectors: ["Aéronautique", "Spatial", "Tech", "Education"],
+
+ keyBusinessSectors: ["aeronautics", "space", "tech", "education"],
localChallenges: [
- "Transformation digitale des entreprises de l'écosystème aéronautique et spatial",
- "Besoin de plateformes innovantes pour les startups de la French Tech toulousaine",
- "Développement de solutions e-learning pour les nombreux établissements d'enseignement",
- "Adaptation des commerces locaux face à la concurrence des grandes enseignes nationales"
+ "aerospace-transformation",
+ "startup-platforms",
+ "elearning-development",
+ "local-commerce-adaptation"
],
benefits: [
- "Solutions sur mesure adaptées aux industries de haute technologie",
- "Expertise pointue dans le développement d'interfaces complexes",
- "Connaissance approfondie de l'écosystème startup toulousain",
- "Approche agile parfaitement adaptée aux projets innovants",
- "Accompagnement personnalisé tout au long de votre projet digital"
+ "high-tech-solutions",
+ "complex-interfaces-expertise",
+ "startup-ecosystem-knowledge",
+ "agile-approach",
+ "personalized-support"
],
-
- introText: "Capitale européenne de l'aéronautique et ville étudiante dynamique, Toulouse présente un écosystème économique unique où innovation et tradition se côtoient. Notre expertise digitale permet aux entreprises toulousaines de se démarquer dans un environnement compétitif en constante évolution technologique.",
-
- expertiseText: "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises toulousaines, qu'elles soient des géants de l'aéronautique, des startups innovantes ou des commerces traditionnels. Nous comprenons les défis spécifiques de votre marché local et vous proposons des solutions technologiques de pointe.",
-
- whyChooseUs: "Notre connaissance approfondie du marché toulousain nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons les enjeux technologiques de la Ville Rose et intégrons cette expertise dans chaque projet pour créer des expériences digitales performantes et tournées vers le futur.",
-
+
accentColor: "blue",
primaryStat: {
+ key: "innovation",
icon: Rocket,
- value: "Innovation",
- label: "secteur technologique"
+ value: "Innovation"
},
-
+
strengths: [
- {
- title: "Solutions aéronautiques",
- description: "Applications et interfaces adaptées aux besoins spécifiques du secteur aérospatial.",
- icon: Plane
- },
- {
- title: "Plateformes startups",
- description: "Solutions digitales agiles et évolutives pour les startups innovantes.",
- icon: Rocket
- },
- {
- title: "E-learning",
- description: "Plateformes pédagogiques pour les établissements d'enseignement supérieur.",
- icon: School
- },
- {
- title: "Commerce local",
- description: "Digitalisation sur mesure pour les commerces et artisans toulousains.",
- icon: Store
- }
+ { key: "aeronautics-solutions", icon: Plane },
+ { key: "startup-platforms", icon: Rocket },
+ { key: "elearning", icon: School },
+ { key: "local-commerce", icon: Store }
],
-
+
focusedServices: [
- {
- name: "Applications métier",
- description: "Solutions sur mesure pour l'industrie aéronautique et les entreprises technologiques.",
- link: Routes.service.frontend.desktop,
- icon: Plane
- },
- {
- name: "Sites web innovants",
- description: "Vitrines digitales modernes pour startups et entreprises innovantes.",
- link: Routes.service.frontend.web,
- icon: Rocket
- },
- {
- name: "Plateformes e-commerce",
- description: "Solutions complètes pour les commerces locaux souhaitant se digitaliser.",
- link: Routes.service.integration.shopify,
- icon: Store
- }
+ { key: "business-applications", link: Routes.service.frontend.desktop, icon: Plane },
+ { key: "innovative-websites", link: Routes.service.frontend.web, icon: Rocket },
+ { key: "ecommerce-platforms", link: Routes.service.integration.shopify, icon: Store }
],
-
+
testimonials: [],
-
+
contactInfo: {
phone: "+33 7 56 90 93 75",
- email: "contact@onruntime.com",
- meetingOptions: ["Visioconférence", "Déplacements occasionnels à Toulouse"]
+ email: "contact@onruntime.com"
},
stats: [
- {
- label: "Expertise",
- value: "10+",
- description: "Années d'expérience"
- },
- {
- label: "Satisfaction",
- value: "98%",
- description: "Clients satisfaits"
- },
- {
- label: "Délai moyen",
- value: "5-7",
- description: "Semaines de réalisation"
- }
+ { key: "expertise", value: "10+" },
+ { key: "satisfaction", value: "98%" },
+ { key: "average-time", value: "5-7" }
],
-
+
geo: {
latitude: "43.604652",
longitude: "1.444209"
},
-
+
nearbyLocations: ["bordeaux", "montpellier", "pau", "carcassonne"]
};
-export default toulouseAgency;
\ No newline at end of file
+export default toulouseAgency;
diff --git a/apps/web/src/locales/en/app/agency/[city]/page.json b/apps/web/src/locales/en/app/agency/[city]/page.json
index 73bf8e722..921b136cf 100644
--- a/apps/web/src/locales/en/app/agency/[city]/page.json
+++ b/apps/web/src/locales/en/app/agency/[city]/page.json
@@ -4,5 +4,42 @@
"title": "Local expertise unavailable",
"description": "We don't have specific expertise for this city yet."
}
+ },
+ "breadcrumb": {
+ "home": "Home",
+ "local-expertise": "Local expertise"
+ },
+ "challenges": {
+ "title": "Digital challenges for businesses in {city}",
+ "description": "Businesses in {city} face specific challenges in digital transformation. Our expertise allows us to address them effectively.",
+ "market-issues": "{region} market challenges",
+ "our-solutions": "Our tailored solutions",
+ "discover-all-services": "Discover all our services"
+ },
+ "faq": {
+ "title": "Frequently asked questions about web projects in {city}",
+ "description": "Find answers to the most common questions from businesses in {city} about their digital projects.",
+ "questions": {
+ "choose-agency": {
+ "question": "How to choose the right web agency in {city}?",
+ "answer": "To choose the right web agency in {city}, evaluate their knowledge of the local market, their portfolio in your industry, and their ability to understand your specific goals. Expertise in digital challenges specific to the {region} region is also a key factor."
+ },
+ "project-costs": {
+ "question": "What are the costs of a web project in {city}?",
+ "answer": "The costs of a web project in {city} vary depending on complexity, features, and objectives. For a professional showcase website, expect between €3,000 and €8,000. For a custom web application or e-commerce, prices generally start at €10,000. Request a personalized quote for an accurate estimate."
+ },
+ "development-time": {
+ "question": "How long does it take to develop a website or application for my business in {city}?",
+ "answer": "Development timelines for a business in {city} depend on project complexity. A showcase website can be completed in 4-8 weeks, while a custom application or e-commerce typically requires 2-4 months. Our agile methodology allows for progressive deliveries to see progress quickly."
+ },
+ "remote-work": {
+ "question": "Can you work effectively with my business in {city} remotely?",
+ "answer": "Absolutely. We collaborate effectively with businesses in {city} through our proven remote work methodology. Regular video conferences, powerful collaborative tools, and our in-depth knowledge of the local {region} market allow us to provide follow-up as effective as with an on-site team."
+ }
+ }
+ },
+ "testimonials": {
+ "title": "What our clients in {city} say",
+ "description": "Discover feedback from local businesses we have collaborated with."
}
}
diff --git a/apps/web/src/locales/en/app/agency/page.json b/apps/web/src/locales/en/app/agency/page.json
index d88092b3f..91faeaa4e 100644
--- a/apps/web/src/locales/en/app/agency/page.json
+++ b/apps/web/src/locales/en/app/agency/page.json
@@ -2,5 +2,80 @@
"metadata": {
"title": "Local web expertise | Digital development in major French cities",
"description": "We support local businesses throughout France with our expertise in regional digital markets. Digital solutions adapted to each region."
+ },
+ "hero": {
+ "title": "Your digital partner throughout France",
+ "description": "We develop innovative digital solutions adapted to the specificities of each French regional market. Our team masters local digital challenges to support you effectively, wherever you are in France.",
+ "cta": "Discuss your project",
+ "secondary-cta": "Discover our local expertise"
+ },
+ "expertise": {
+ "title": "Expertise adapted to each territory",
+ "description": "Our team analyzes and understands local digital ecosystems to offer you solutions perfectly adapted to the economic and cultural specificities of your region.",
+ "local-markets": {
+ "title": "Understanding local markets",
+ "description": "We study and master the specificities and trends of regional digital ecosystems."
+ },
+ "remote-work": {
+ "title": "Effective remote work",
+ "description": "Our team collaborates remotely with your company, wherever you are in France, with the same efficiency as in person."
+ },
+ "custom-solutions": {
+ "title": "Custom solutions",
+ "description": "Tailor-made digital strategies that adapt to your local context and the particularities of your regional market."
+ }
+ },
+ "cities": {
+ "title": "Our expertise in major French cities",
+ "description": "Discover our in-depth knowledge of local markets and how it can benefit your business.",
+ "region-label": "Region",
+ "discover-cta": "Discover our expertise"
+ },
+ "why-us": {
+ "title": "Why work with us for your local project?",
+ "description": "Our knowledge of regional markets offers many advantages for your business.",
+ "local-ecosystems": {
+ "title": "Local ecosystem expertise",
+ "description": "A team that understands the market dynamics specific to your region, enabling a perfectly adapted digital strategy."
+ },
+ "remote-agility": {
+ "title": "Remote agility",
+ "description": "Effective collaboration through video conferencing, messaging and collaborative tools for a smooth and productive work experience."
+ },
+ "localized-strategies": {
+ "title": "Localized strategies",
+ "description": "Digital solutions that take into account the cultural and economic specificities of your territory."
+ },
+ "regional-analysis": {
+ "title": "Regional market analysis",
+ "description": "Study of trends, competition and opportunities specific to your geographic sector for an optimal digital strategy."
+ }
+ },
+ "services": {
+ "title": "Our services for all regions of France",
+ "description": "Complete digital solutions adapted to the specificities of each local market.",
+ "design": {
+ "title": "UI/UX Design",
+ "description": "Interfaces adapted to local uses"
+ },
+ "integration": {
+ "title": "Integration",
+ "description": "Regional CMS and e-commerce solutions"
+ },
+ "frontend": {
+ "title": "Front-end",
+ "description": "Applications adapted to your users"
+ },
+ "backend": {
+ "title": "Back-end",
+ "description": "Robust and scalable infrastructures"
+ },
+ "discover-all": "Discover all our services"
+ },
+ "cta": {
+ "title": "A digital project adapted to your local market?",
+ "description": "Contact us to discuss your project. Our expertise in local markets allows us to support you effectively, wherever you are in France.",
+ "contact": "Contact us",
+ "learn-more": "Learn more about our approach"
}
}
diff --git a/apps/web/src/locales/en/components/marketing/agency/contact-cta.json b/apps/web/src/locales/en/components/marketing/agency/contact-cta.json
new file mode 100644
index 000000000..51b023bc3
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/agency/contact-cta.json
@@ -0,0 +1,13 @@
+{
+ "title": "A project tailored to the {city} market?",
+ "description": "Our expertise in the local {region} market allows us to offer you solutions perfectly adapted to your regional context. Let's discuss your project!",
+ "features": {
+ "video": "Online consultation via video conference",
+ "calendar": "Flexible hours adapted to your schedule",
+ "expertise": "In-depth expertise of the {city} and {region} market"
+ },
+ "buttons": {
+ "discuss": "Discuss your project",
+ "discover": "Discover our services"
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/agency/france-map.json b/apps/web/src/locales/en/components/marketing/agency/france-map.json
new file mode 100644
index 000000000..5084aa9cc
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/agency/france-map.json
@@ -0,0 +1,3 @@
+{
+ "description": "Discover our services tailored to your city"
+}
diff --git a/apps/web/src/locales/en/components/marketing/agency/local-expertise.json b/apps/web/src/locales/en/components/marketing/agency/local-expertise.json
new file mode 100644
index 000000000..c087cca99
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/agency/local-expertise.json
@@ -0,0 +1,6 @@
+{
+ "title": "Web solutions tailored to {city} businesses",
+ "approach": {
+ "title": "Our approach for projects in {city}"
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/agency/local-testimonials.json b/apps/web/src/locales/en/components/marketing/agency/local-testimonials.json
new file mode 100644
index 000000000..6cf2f3882
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/agency/local-testimonials.json
@@ -0,0 +1,4 @@
+{
+ "title": "What our clients in {city} say about us",
+ "description": "Discover testimonials from our clients in {city}, and how we supported them in their digital transformation."
+}
diff --git a/apps/web/src/locales/en/constants/agencies/lyon.json b/apps/web/src/locales/en/constants/agencies/lyon.json
new file mode 100644
index 000000000..89b885145
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/lyon.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Agency in Lyon | Custom Digital Solutions",
+ "description": "Web development, mobile and UI/UX design in Lyon. Our digital expertise tailored to Rhône-Alpes businesses to boost your online presence.",
+ "hero-title": "Web & Mobile Development in Lyon",
+ "hero-description": "Transform your Lyon-based business with innovative digital solutions perfectly adapted to the economic dynamism of the Auvergne-Rhône-Alpes region.",
+ "intro-text": "At the heart of Lyon's dynamism, our digital expertise supports businesses in the region through their digital transformation. Between industrial tradition, biomedical excellence and gastronomic influence, Lyon presents a rich and diversified economic fabric whose challenges we fully understand.",
+ "expertise-text": "We create web, mobile and e-commerce solutions adapted to the specificities of the Lyon and Rhône-Alpes market. Our team masters the digital challenges specific to the region's sectors of excellence, from biotechnology to gastronomy, including manufacturing.",
+ "why-choose-us": "Our knowledge of the Lyon market enables us to develop digital solutions perfectly aligned with the requirements and particularities of local businesses. We understand the region's standards of excellence and offer digital support that enhances Lyon's identity and know-how.",
+ "key-business-sectors": {
+ "biotech": "Biotechnology",
+ "pharma": "Pharmaceutical Industry",
+ "gastronomy": "Gastronomy",
+ "finance": "Finance"
+ },
+ "local-challenges": {
+ "industry-digitalization": "Digitalization of industrial SMEs and mid-caps facing Industry 4.0 challenges",
+ "gastronomy-visibility": "Digital visibility development for Lyon gastronomy players",
+ "local-ecommerce": "E-commerce solutions adapted to local commerce and regional artisans",
+ "biotech-applications": "Business applications for the expanding pharmaceutical and biotech sectors"
+ },
+ "benefits": {
+ "sector-expertise": "Sector expertise in Lyon's fields of excellence (biotech, pharma, gastronomy)",
+ "industrial-understanding": "Understanding of digitalization challenges in the Rhône-Alpes industrial basin",
+ "sme-solutions": "Solutions adapted to SMEs and mid-caps in digital transformation",
+ "lyon-ui-design": "UI/UX designs reflecting Lyon's visual identity and quality standards",
+ "local-ecosystem-knowledge": "In-depth knowledge of the local digital ecosystem"
+ },
+ "primary-stat": {
+ "label": "innovation sector"
+ },
+ "strengths": {
+ "biotech-pharma": {
+ "title": "Biotech & Pharma Solutions",
+ "description": "Specialized applications for Lyon's health cluster."
+ },
+ "gastronomy-ecommerce": {
+ "title": "Gastronomy E-commerce",
+ "description": "Digital enhancement of Rhône-Alpes local products."
+ },
+ "industrial-applications": {
+ "title": "Industrial Applications",
+ "description": "Digital tools for Industry 4.0 and production."
+ },
+ "business-interfaces": {
+ "title": "Business Interfaces",
+ "description": "UI/UX design adapted to Lyon's specific needs."
+ }
+ },
+ "focused-services": {
+ "biotech-applications": {
+ "name": "Biotech Business Applications",
+ "description": "Digital solutions for laboratories and pharmaceutical companies in Lyon."
+ },
+ "gastronomy-ecommerce": {
+ "name": "Gastronomy E-commerce",
+ "description": "Online sales platforms to showcase Lyon's culinary excellence."
+ },
+ "industrial-digitalization": {
+ "name": "Industrial Digitalization",
+ "description": "Control tools and IoT solutions for Rhône-Alpes industry."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Lyon"
+ }
+ },
+ "stats": {
+ "biotech-projects": {
+ "label": "Biotech Projects",
+ "description": "Specialized applications"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "sme-supported": {
+ "label": "SMEs Supported",
+ "description": "Lyon businesses"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/marseille.json b/apps/web/src/locales/en/constants/agencies/marseille.json
new file mode 100644
index 000000000..11699a9b3
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/marseille.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Marseille | Digital Solutions for Provençal Businesses",
+ "description": "Create your website or mobile application in Marseille. Custom digital solutions for Provençal businesses, tailored to the local challenges of your sector.",
+ "hero-title": "Web & Mobile Development in Marseille",
+ "hero-description": "We help businesses in Marseille and the PACA region digitalize with custom web solutions, perfectly adapted to the specific challenges of the Mediterranean market.",
+ "intro-text": "Between sea and hills, Marseille is a dynamic economic crossroads where tradition and innovation meet. Our digital expertise enables Marseille businesses to stand out in a competitive and constantly evolving Mediterranean market.",
+ "expertise-text": "Our team designs websites, applications and e-commerce solutions perfectly adapted to Marseille businesses. We understand the challenges of your local market and offer digital solutions that enhance your Provençal identity while reaching an international clientele.",
+ "why-choose-us": "Our in-depth knowledge of the Provençal market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the cultural and economic richness of Marseille and integrate it into each project to create authentic and high-performing digital experiences.",
+ "key-business-sectors": {
+ "tourism": "Tourism",
+ "maritime": "Maritime",
+ "local-commerce": "Local Commerce",
+ "restaurant": "Restaurant"
+ },
+ "local-challenges": {
+ "tourism-competition": "Strong competition in the Mediterranean tourism sector requiring a distinctive digital presence",
+ "maritime-solutions": "Need for digital solutions adapted to maritime and port commerce",
+ "local-commerce-digitalization": "Digitalization of local shops facing large chains",
+ "local-ecommerce": "Need for e-commerce solutions adapted to showcase crafts and local products"
+ },
+ "benefits": {
+ "custom-solutions": "Custom solutions adapted to the specificities of Provençal businesses",
+ "tourism-maritime-expertise": "Sharp expertise in tourism and maritime sectors",
+ "international-ui": "User interface optimized for international clientele",
+ "mediterranean-knowledge": "In-depth knowledge of Mediterranean economic challenges",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "tourism sector"
+ },
+ "strengths": {
+ "tourism-experience": {
+ "title": "Tourism Experience",
+ "description": "Sites and applications optimized for the Mediterranean tourism sector."
+ },
+ "local-ecommerce": {
+ "title": "Local E-commerce",
+ "description": "Online sales solutions for Provençal artisans and merchants."
+ },
+ "maritime-sector": {
+ "title": "Maritime Sector",
+ "description": "Digitalization adapted to port and nautical activities."
+ },
+ "mediterranean-design": {
+ "title": "Mediterranean Design",
+ "description": "Modern interfaces reflecting Mediterranean visual identity."
+ }
+ },
+ "focused-services": {
+ "tourism-websites": {
+ "name": "Tourism Websites",
+ "description": "Multilingual digital showcases for hotels, restaurants and tourist activities."
+ },
+ "provencal-ecommerce": {
+ "name": "Provençal E-commerce",
+ "description": "Online stores adapted to local producers and artisans."
+ },
+ "mobile-applications": {
+ "name": "Mobile Applications",
+ "description": "Mobile solutions to enrich the tourism and commercial experience."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Marseille"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/montpellier.json b/apps/web/src/locales/en/constants/agencies/montpellier.json
new file mode 100644
index 000000000..a3d13296f
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/montpellier.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Montpellier | Digital Solutions for Languedoc Businesses",
+ "description": "Create your website or mobile application in Montpellier. Custom digital solutions for Montpellier businesses, tailored to the local challenges of your sector.",
+ "hero-title": "Web & Mobile Development in Montpellier",
+ "hero-description": "We help businesses in Montpellier and the Languedoc region digitalize with custom web solutions, perfectly adapted to the specific challenges of the regional market.",
+ "intro-text": "A dynamic city at the crossroads of Mediterranean and Languedoc influences, Montpellier stands out for its health innovation ecosystem, prestigious universities and art of living. Our digital expertise enables Montpellier businesses to leverage this richness and stand out in a competitive environment.",
+ "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to businesses in Montpellier and its region. We understand the specific challenges of your local market, whether in the health sector, education or Languedoc terroir, and offer digital solutions that showcase your expertise and regional roots.",
+ "why-choose-us": "Our in-depth knowledge of the Montpellier market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the balance between innovation and tradition that characterizes Montpellier, and integrate this understanding into each project to create authentic and high-performing digital experiences.",
+ "key-business-sectors": {
+ "health-biotech": "Health & Biotechnologies",
+ "higher-education": "Higher Education",
+ "viticulture": "Viticulture",
+ "tourism": "Tourism"
+ },
+ "local-challenges": {
+ "biotech-health-digitalization": "Digitalization of the expanding biotechnology and health sector",
+ "innovative-educational-platforms": "Need for innovative educational platforms for numerous universities and schools",
+ "wine-heritage-digital-showcase": "Digital showcase of wine heritage and local products",
+ "tourism-adaptation": "Adaptation of tourism players facing Mediterranean competition"
+ },
+ "benefits": {
+ "health-sector-solutions": "Custom solutions adapted to innovative health sector companies",
+ "educational-platforms-expertise": "Sharp expertise in educational platforms and e-learning tools",
+ "languedoc-market-knowledge": "In-depth knowledge of the Languedoc market and its specificities",
+ "regional-products-ui": "User interfaces optimized to showcase regional products",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "biotechnologies"
+ },
+ "strengths": {
+ "connected-health": {
+ "title": "Connected Health",
+ "description": "Digital solutions for life sciences startups and companies."
+ },
+ "elearning": {
+ "title": "E-learning",
+ "description": "Educational platforms for universities and training institutions."
+ },
+ "digital-terroir": {
+ "title": "Digital Terroir",
+ "description": "Sites and e-commerce for wine estates and local producers."
+ },
+ "regional-tourism": {
+ "title": "Regional Tourism",
+ "description": "Digital experiences to showcase Languedoc heritage."
+ }
+ },
+ "focused-services": {
+ "health-applications": {
+ "name": "Health Applications",
+ "description": "Custom solutions for life sciences startups and companies."
+ },
+ "educational-platforms": {
+ "name": "Educational Platforms",
+ "description": "Digital learning tools for educational institutions."
+ },
+ "terroir-ecommerce": {
+ "name": "Terroir E-commerce",
+ "description": "Online stores for local producers and wine estates."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Montpellier"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/nantes.json b/apps/web/src/locales/en/constants/agencies/nantes.json
new file mode 100644
index 000000000..2dd830c5a
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/nantes.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Nantes | Digital Solutions for Loire Valley Businesses",
+ "description": "Create your website or mobile application in Nantes. Custom digital solutions for Nantes businesses, tailored to the local challenges of your sector.",
+ "hero-title": "Web & Mobile Development in Nantes",
+ "hero-description": "We help businesses in Nantes and the Pays de la Loire digitalize with custom web solutions, perfectly adapted to the specific challenges of the Loire Valley market.",
+ "intro-text": "Historic capital of Brittany and innovative metropolis, Nantes is renowned for its economic dynamism and quality of life. Its flourishing digital ecosystem, creative industries and commitment to ecological transition make it a unique territory where digital innovation plays a central role.",
+ "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to Nantes businesses, whether they are innovative startups, responsible economy players or traditional companies in transformation. We understand the specificities of the local market and offer digital solutions aligned with the values of innovation and sustainability specific to Nantes.",
+ "why-choose-us": "Our in-depth knowledge of the Nantes market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the spirit of innovation and commitment to a more responsible economy that characterize Nantes, and integrate these values into each digital project we deliver.",
+ "key-business-sectors": {
+ "tech-digital": "Tech & Digital",
+ "ecological-transition": "Ecological Transition",
+ "creative-industries": "Creative Industries",
+ "agrifood": "Agri-food"
+ },
+ "local-challenges": {
+ "digital-ecosystem-competition": "Strong competition in the expanding Nantes digital ecosystem",
+ "startup-scaleup-needs": "Specific needs of local French Tech startups and scale-ups",
+ "ecological-transition-digitalization": "Digitalization of ecological and energy transition players",
+ "traditional-industries-transformation": "Digital transformation of regional traditional and agri-food industries"
+ },
+ "benefits": {
+ "nantes-ecosystem-solutions": "Custom solutions adapted to the Nantes digital ecosystem",
+ "innovative-eco-technologies": "Sharp expertise in innovative and eco-responsible web technologies",
+ "agile-approach": "Agile approach perfectly suited to startups and innovative companies",
+ "digital-transition-knowledge": "In-depth knowledge of Loire Valley digital transition challenges",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "Nantes digital"
+ },
+ "strengths": {
+ "innovative-tech": {
+ "title": "Innovative Tech",
+ "description": "Modern digital solutions for Nantes startups and scale-ups."
+ },
+ "eco-design": {
+ "title": "Eco-design",
+ "description": "Sites and applications with controlled environmental footprint."
+ },
+ "maritime-industry": {
+ "title": "Maritime Industry",
+ "description": "Digitalization adapted to port and river activities."
+ },
+ "renewable-energy": {
+ "title": "Renewable Energy",
+ "description": "Digital solutions for energy transition players."
+ }
+ },
+ "focused-services": {
+ "web-applications": {
+ "name": "Web Applications",
+ "description": "High-performance and scalable web applications for startups and innovative companies."
+ },
+ "eco-designed-websites": {
+ "name": "Eco-designed Websites",
+ "description": "Optimized and sustainable websites for responsible economy players."
+ },
+ "business-platforms": {
+ "name": "Business Platforms",
+ "description": "Custom solutions for traditional industries in transformation."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Nantes"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/nice.json b/apps/web/src/locales/en/constants/agencies/nice.json
new file mode 100644
index 000000000..80e9bc955
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/nice.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Nice | Digital Solutions for Côte d'Azur Businesses",
+ "description": "Create your website or mobile application in Nice. Custom digital solutions for Côte d'Azur businesses, tailored to the local challenges of your sector.",
+ "hero-title": "Web & Mobile Development in Nice",
+ "hero-description": "We help businesses in Nice and the French Riviera digitalize with custom web solutions, perfectly adapted to the specific challenges of the Azurean market.",
+ "intro-text": "Between the Mediterranean Sea and the Alps, Nice benefits from international influence and a diversified economy where tourism meets innovation. Our digital expertise enables Nice businesses to stand out in a competitive environment where image and excellence are paramount.",
+ "expertise-text": "Our team designs websites, applications and e-commerce solutions perfectly adapted to businesses in Nice and the French Riviera. We understand the high standards of your local market and offer digital solutions that enhance the premium positioning specific to the region.",
+ "why-choose-us": "Our in-depth knowledge of the Azurean market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the international dimension of Nice and its reputation for excellence, and integrate these aspects into each project to create refined and high-performing digital experiences.",
+ "key-business-sectors": {
+ "luxury-tourism": "Luxury Tourism",
+ "real-estate": "Real Estate",
+ "events": "Events",
+ "health-wellness": "Health & Wellness"
+ },
+ "local-challenges": {
+ "luxury-tourism-digitalization": "Digitalization of the high-end tourism sector on the French Riviera",
+ "innovative-real-estate-solutions": "Need for innovative real estate solutions for a demanding international market",
+ "events-digital-showcase": "Digital showcase of events (festivals, conferences, exhibitions)",
+ "health-wellness-transformation": "Digital transformation of the health and wellness sector in a region renowned for quality of life"
+ },
+ "benefits": {
+ "international-clientele-solutions": "Custom solutions adapted to a demanding international clientele",
+ "premium-interfaces-expertise": "Sharp expertise in premium interfaces and user experience",
+ "azurean-market-knowledge": "In-depth knowledge of the Azurean market and its specificities",
+ "multilingual-applications": "Multilingual applications adapted to the French Riviera's international clientele",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "luxury tourism"
+ },
+ "strengths": {
+ "premium-experience": {
+ "title": "Premium Experience",
+ "description": "High-end sites and applications for luxury tourism and hospitality."
+ },
+ "digital-real-estate": {
+ "title": "Digital Real Estate",
+ "description": "Innovative solutions for real estate agencies and developers."
+ },
+ "event-platforms": {
+ "title": "Event Platforms",
+ "description": "Sites and applications for festivals, conferences and prestigious events."
+ },
+ "connected-wellness": {
+ "title": "Connected Wellness",
+ "description": "Digital solutions for clinics, spas and wellness centers."
+ }
+ },
+ "focused-services": {
+ "premium-websites": {
+ "name": "Premium Websites",
+ "description": "High-end digital showcases for hotels, restaurants and luxury boutiques."
+ },
+ "real-estate-applications": {
+ "name": "Real Estate Applications",
+ "description": "Custom solutions for presenting and managing exceptional properties."
+ },
+ "visual-identity": {
+ "name": "Visual Identity",
+ "description": "Elegant and refined UI/UX design for prestigious brands and establishments."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Nice"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/paris.json b/apps/web/src/locales/en/constants/agencies/paris.json
new file mode 100644
index 000000000..26635d937
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/paris.json
@@ -0,0 +1,84 @@
+{
+ "title": "Web Agency in Paris | Web Development, Mobile & UI/UX Design",
+ "description": "Your digital partner in the heart of Paris. Web development, mobile and UI/UX design solutions to accelerate the growth of your Parisian business.",
+ "hero-title": "Digital Development in the Capital",
+ "hero-description": "Transform your digital presence with innovative solutions tailored to the competitive Parisian market and its dynamic ecosystem of startups, large corporations and innovative companies.",
+ "intro-text": "At the heart of the French capital, our digital expertise meets the demands of the Parisian market with innovative web and mobile solutions. Between large corporations, luxury companies and fast-growing startups, Paris concentrates a dynamic digital ecosystem whose challenges and opportunities we fully understand.",
+ "expertise-text": "We design premium digital experiences that meet the high standards of Parisian businesses. Our team masters the specific challenges of the capital, whether it's creating refined user interfaces for the luxury sector, high-performance applications for fintechs, or scalable solutions for fast-growing startups.",
+ "why-choose-us": "Our in-depth knowledge of the Parisian market allows us to develop digital solutions perfectly aligned with the requirements of capital businesses. We combine technical innovation, creative excellence and business understanding to effectively support you in a highly competitive environment.",
+ "key-business-sectors": {
+ "startups-tech": "Tech Startups",
+ "finance": "Finance",
+ "luxury": "Luxury",
+ "media-communication": "Media & Communications"
+ },
+ "local-challenges": {
+ "digital-competition": "Strong digital competition in the Parisian market requiring differentiating solutions",
+ "agile-tools-startups": "Need for agile and high-performance tools for fast-growing startups",
+ "financial-digitalization": "Digitalization of traditional financial services facing fintechs",
+ "luxury-digital-experiences": "Development of premium digital experiences for the Parisian luxury sector",
+ "corporate-transformation": "Innovative solutions for large corporations undergoing digital transformation"
+ },
+ "benefits": {
+ "startup-expertise": "Sharp expertise in the latest technologies adapted to the Parisian startup ecosystem",
+ "premium-solutions": "Premium solutions meeting the high standards of the capital's market",
+ "luxury-finance-understanding": "Understanding of luxury and finance codes for tailor-made digital experiences",
+ "agility-responsiveness": "Agility and responsiveness to match the intensive pace of Parisian businesses",
+ "tech-trends-knowledge": "In-depth knowledge of French tech trends and innovations"
+ },
+ "primary-stat": {
+ "label": "startup & tech"
+ },
+ "strengths": {
+ "startup-solutions": {
+ "title": "Startup Solutions",
+ "description": "Scalable applications for fast-growing companies."
+ },
+ "luxury-experiences": {
+ "title": "Luxury Experiences",
+ "description": "Premium interfaces for high-end brands and services."
+ },
+ "finance-fintech": {
+ "title": "Finance & Fintech",
+ "description": "Secure solutions for the Parisian financial sector."
+ },
+ "international": {
+ "title": "International",
+ "description": "Multilingual development adapted to global companies."
+ }
+ },
+ "focused-services": {
+ "saas-applications": {
+ "name": "SaaS Applications",
+ "description": "Development of innovative cloud solutions for startups and scale-ups."
+ },
+ "premium-ecommerce": {
+ "name": "Premium E-commerce",
+ "description": "High-end sales platforms for Parisian luxury brands."
+ },
+ "innovative-design": {
+ "name": "Innovative UI/UX Design",
+ "description": "Modern and differentiating user interfaces to stand out in Paris."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Meetings in Paris"
+ }
+ },
+ "stats": {
+ "startups": {
+ "label": "Startups",
+ "description": "Projects for startups"
+ },
+ "luxury-clients": {
+ "label": "Luxury clients",
+ "description": "Premium brands"
+ },
+ "average-roi": {
+ "label": "Average ROI",
+ "description": "Return on investment"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/rouen.json b/apps/web/src/locales/en/constants/agencies/rouen.json
new file mode 100644
index 000000000..a94375776
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/rouen.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Rouen | Digital Solutions for Normandy Businesses",
+ "description": "Create your website or mobile application in Rouen. Custom digital solutions for Normandy businesses, tailored to the local challenges of your sector.",
+ "hero-title": "Web & Mobile Development in Rouen",
+ "hero-description": "We help businesses in Rouen and Normandy digitalize with custom web solutions, perfectly adapted to the specific challenges of the Normandy market.",
+ "intro-text": "The Normandy economic fabric presents specific digital challenges that we have learned to master. Between manufacturing industry, agri-food sector and river logistics, we create digital solutions that meet the precise needs of Rouen businesses.",
+ "expertise-text": "Our team designs websites, applications and e-commerce solutions perfectly adapted to businesses in Rouen and its region. We understand the challenges of your market and offer digital solutions that help you stand out and grow your business.",
+ "why-choose-us": "Our in-depth knowledge of the Normandy market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. Unlike Parisian agencies, we understand the subtleties of Rouen's economic fabric and provide custom solutions at an advantageous value for money.",
+ "key-business-sectors": {
+ "industry": "Industry",
+ "agrifood": "Agri-food",
+ "logistics": "Logistics",
+ "local-commerce": "Local Commerce"
+ },
+ "local-challenges": {
+ "traditional-industries-digitalization": "Digitalization of traditional Normandy industries facing international competition",
+ "logistics-optimization": "Optimization of river and port logistics through innovative digital solutions",
+ "local-ecommerce-needs": "Need for e-commerce solutions adapted to local producers and artisans",
+ "sme-digital-transition": "Digital transition of Normandy SMEs with controlled budgets"
+ },
+ "benefits": {
+ "normandy-specific-solutions": "Custom solutions adapted to the specificities of Normandy businesses",
+ "industrial-agrifood-expertise": "Sharp expertise in regional industrial and agri-food sectors",
+ "competitive-pricing": "Competitive pricing compared to Parisian agencies",
+ "seine-logistics-knowledge": "In-depth knowledge of logistics challenges related to the Seine axis",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "industrial sector"
+ },
+ "strengths": {
+ "industrial-websites": {
+ "title": "Industrial Websites",
+ "description": "High-performance sites adapted to Normandy manufacturing companies."
+ },
+ "local-ecommerce": {
+ "title": "Local E-commerce",
+ "description": "Online sales solutions for local producers and artisans."
+ },
+ "business-applications": {
+ "title": "Business Applications",
+ "description": "Custom digital tools to optimize your processes."
+ },
+ "sme-digitalization": {
+ "title": "SME Digitalization",
+ "description": "Complete support for your digital transformation."
+ }
+ },
+ "focused-services": {
+ "professional-websites": {
+ "name": "Professional Websites",
+ "description": "High-performance digital showcases optimized for local SEO in Rouen."
+ },
+ "regional-ecommerce": {
+ "name": "Regional E-commerce",
+ "description": "Online stores adapted to Normandy producers and merchants."
+ },
+ "business-applications": {
+ "name": "Business Applications",
+ "description": "Custom software for regional industry and logistics."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Rouen"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/strasbourg.json b/apps/web/src/locales/en/constants/agencies/strasbourg.json
new file mode 100644
index 000000000..e603d732c
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/strasbourg.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Strasbourg | Digital Solutions for Alsatian Businesses",
+ "description": "Create your website or mobile application in Strasbourg. Custom digital solutions for Alsatian businesses, tailored to local and cross-border challenges.",
+ "hero-title": "Web & Mobile Development in Strasbourg",
+ "hero-description": "We help businesses in Strasbourg and the Grand Est region digitalize with custom web solutions, perfectly adapted to the specific challenges of the Alsatian and European market.",
+ "intro-text": "European capital and border city with rich heritage, Strasbourg combines Alsatian traditions and international openness. Its status as seat of European institutions, its dynamic industry and strategic position between France and Germany make it a unique territory where digital plays an essential bridging role.",
+ "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to Strasbourg businesses, whether they are international organizations, industrial companies or local heritage players. We understand the specific challenges of your regional and cross-border market, and offer multilingual and culturally adapted digital solutions.",
+ "why-choose-us": "Our in-depth knowledge of the Strasbourg market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the requirements of the European context and Alsatian cultural particularities, and integrate this dual dimension into each project to create relevant and high-performing digital experiences.",
+ "key-business-sectors": {
+ "european-institutions": "European Institutions",
+ "cross-border-commerce": "Cross-border Commerce",
+ "industry": "Industry",
+ "culture-heritage": "Culture & Heritage"
+ },
+ "local-challenges": {
+ "european-institutions-needs": "Specific needs of European institutions and international organizations",
+ "cross-border-development": "Development of cross-border commerce with Germany and Switzerland",
+ "traditional-industries-transformation": "Digital transformation of traditional Alsatian industries",
+ "heritage-digital-showcase": "Digital showcase of the region's rich cultural and historical heritage"
+ },
+ "benefits": {
+ "multilingual-solutions": "Multilingual solutions adapted to the Strasbourg international context",
+ "european-standards-expertise": "Sharp expertise in user interfaces compliant with European standards",
+ "cross-border-knowledge": "In-depth knowledge of cross-border markets and their specificities",
+ "innovative-traditional-approach": "Approach that is both innovative and respectful of Alsatian traditions",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "international context"
+ },
+ "strengths": {
+ "european-solutions": {
+ "title": "European Solutions",
+ "description": "Multilingual platforms for institutions and international organizations."
+ },
+ "cross-border-commerce": {
+ "title": "Cross-border Commerce",
+ "description": "E-commerce solutions adapted to French, German and Swiss markets."
+ },
+ "industry-40": {
+ "title": "Industry 4.0",
+ "description": "Process digitalization for traditional Alsatian industry."
+ },
+ "digital-heritage": {
+ "title": "Digital Heritage",
+ "description": "Digital experiences to showcase cultural and historical heritage."
+ }
+ },
+ "focused-services": {
+ "institutional-websites": {
+ "name": "Institutional Websites",
+ "description": "Multilingual platforms compliant with European accessibility standards."
+ },
+ "cross-border-ecommerce": {
+ "name": "Cross-border E-commerce",
+ "description": "Commercial solutions adapted to German and French market specificities."
+ },
+ "industrial-applications": {
+ "name": "Industrial Applications",
+ "description": "Custom digital tools to modernize industrial processes."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Strasbourg"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/agencies/toulouse.json b/apps/web/src/locales/en/constants/agencies/toulouse.json
new file mode 100644
index 000000000..48171bb80
--- /dev/null
+++ b/apps/web/src/locales/en/constants/agencies/toulouse.json
@@ -0,0 +1,83 @@
+{
+ "title": "Web Development in Toulouse | Digital Solutions for Occitan Businesses",
+ "description": "Create your website or mobile application in Toulouse. Custom digital solutions for Toulouse businesses, tailored to the local challenges of your sector.",
+ "hero-title": "Web & Mobile Development in Toulouse",
+ "hero-description": "We help businesses in Toulouse and Occitania digitalize with custom web solutions, perfectly adapted to the specific challenges of the Toulouse market.",
+ "intro-text": "European aerospace capital and dynamic student city, Toulouse presents a unique economic ecosystem where innovation and tradition coexist. Our digital expertise enables Toulouse businesses to stand out in a competitive and constantly evolving technological environment.",
+ "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to Toulouse businesses, whether they are aerospace giants, innovative startups or traditional shops. We understand the specific challenges of your local market and offer cutting-edge technological solutions.",
+ "why-choose-us": "Our in-depth knowledge of the Toulouse market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the technological challenges of the Pink City and integrate this expertise into each project to create high-performing and future-oriented digital experiences.",
+ "key-business-sectors": {
+ "aeronautics": "Aeronautics",
+ "space": "Space",
+ "tech": "Tech",
+ "education": "Education"
+ },
+ "local-challenges": {
+ "aerospace-transformation": "Digital transformation of companies in the aerospace ecosystem",
+ "startup-platforms": "Need for innovative platforms for Toulouse French Tech startups",
+ "elearning-development": "Development of e-learning solutions for numerous educational institutions",
+ "local-commerce-adaptation": "Adaptation of local shops facing competition from national chains"
+ },
+ "benefits": {
+ "high-tech-solutions": "Custom solutions adapted to high-tech industries",
+ "complex-interfaces-expertise": "Sharp expertise in developing complex interfaces",
+ "startup-ecosystem-knowledge": "In-depth knowledge of the Toulouse startup ecosystem",
+ "agile-approach": "Agile approach perfectly suited to innovative projects",
+ "personalized-support": "Personalized support throughout your digital project"
+ },
+ "primary-stat": {
+ "label": "technology sector"
+ },
+ "strengths": {
+ "aeronautics-solutions": {
+ "title": "Aeronautics Solutions",
+ "description": "Applications and interfaces adapted to specific aerospace sector needs."
+ },
+ "startup-platforms": {
+ "title": "Startup Platforms",
+ "description": "Agile and scalable digital solutions for innovative startups."
+ },
+ "elearning": {
+ "title": "E-learning",
+ "description": "Educational platforms for higher education institutions."
+ },
+ "local-commerce": {
+ "title": "Local Commerce",
+ "description": "Custom digitalization for Toulouse shops and artisans."
+ }
+ },
+ "focused-services": {
+ "business-applications": {
+ "name": "Business Applications",
+ "description": "Custom solutions for aeronautics industry and technology companies."
+ },
+ "innovative-websites": {
+ "name": "Innovative Websites",
+ "description": "Modern digital showcases for startups and innovative companies."
+ },
+ "ecommerce-platforms": {
+ "name": "E-commerce Platforms",
+ "description": "Complete solutions for local shops looking to digitalize."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Video conference",
+ "in-person": "Occasional meetings in Toulouse"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Years of experience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Satisfied clients"
+ },
+ "average-time": {
+ "label": "Average Time",
+ "description": "Weeks of completion"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/app/agency/[city]/page.json b/apps/web/src/locales/fr/app/agency/[city]/page.json
index c8bcbeda7..172d099c8 100644
--- a/apps/web/src/locales/fr/app/agency/[city]/page.json
+++ b/apps/web/src/locales/fr/app/agency/[city]/page.json
@@ -4,5 +4,42 @@
"title": "Expertise locale non disponible",
"description": "Nous n'avons pas encore d'expertise spécifique pour cette ville."
}
+ },
+ "breadcrumb": {
+ "home": "Accueil",
+ "local-expertise": "Expertise locale"
+ },
+ "challenges": {
+ "title": "Défis numériques des entreprises à {city}",
+ "description": "Les entreprises de {city} font face à des défis spécifiques en matière de transformation digitale. Notre expertise nous permet d'y répondre efficacement.",
+ "market-issues": "Enjeux du marché {region}",
+ "our-solutions": "Nos solutions adaptées",
+ "discover-all-services": "Découvrir tous nos services"
+ },
+ "faq": {
+ "title": "Questions fréquentes sur les projets web à {city}",
+ "description": "Découvrez les réponses aux questions les plus courantes des entreprises de {city} concernant leurs projets digitaux.",
+ "questions": {
+ "choose-agency": {
+ "question": "Comment choisir la bonne agence web à {city} ?",
+ "answer": "Pour choisir la bonne agence web à {city}, évaluez leur connaissance du marché local, leur portfolio dans votre secteur d'activité, et leur capacité à comprendre vos objectifs spécifiques. L'expertise dans les défis numériques propres à la région {region} est également un facteur clé."
+ },
+ "project-costs": {
+ "question": "Quels sont les coûts d'un projet web à {city} ?",
+ "answer": "Les coûts d'un projet web à {city} varient selon la complexité, les fonctionnalités et les objectifs. Pour un site vitrine professionnel, comptez entre 3 000€ et 8 000€. Pour une application web ou e-commerce, les tarifs débutent généralement à 10 000€. Demandez un devis personnalisé pour une estimation précise."
+ },
+ "development-time": {
+ "question": "Combien de temps faut-il pour développer un site web ou une application pour mon entreprise à {city} ?",
+ "answer": "Les délais de développement pour une entreprise à {city} dépendent de la complexité du projet. Un site vitrine peut être réalisé en 4-8 semaines, tandis qu'une application sur mesure ou un e-commerce nécessite généralement 2-4 mois. Notre méthodologie agile permet des livraisons progressives pour voir rapidement les avancées."
+ },
+ "remote-work": {
+ "question": "Pouvez-vous travailler efficacement avec mon entreprise à {city} à distance ?",
+ "answer": "Absolument. Nous collaborons efficacement avec les entreprises de {city} grâce à notre méthodologie éprouvée de travail à distance. Visioconférences régulières, outils collaboratifs performants et notre connaissance approfondie du marché local de {region} nous permettent d'assurer un suivi aussi efficace qu'avec une équipe sur place."
+ }
+ }
+ },
+ "testimonials": {
+ "title": "Ce que disent nos clients à {city}",
+ "description": "Découvrez les retours d'entreprises locales avec lesquelles nous avons collaboré."
}
}
diff --git a/apps/web/src/locales/fr/app/agency/page.json b/apps/web/src/locales/fr/app/agency/page.json
index deff6d42b..1a7b8124e 100644
--- a/apps/web/src/locales/fr/app/agency/page.json
+++ b/apps/web/src/locales/fr/app/agency/page.json
@@ -2,5 +2,80 @@
"metadata": {
"title": "Expertise web locale | Développement digital dans les grandes villes françaises",
"description": "Nous accompagnons les entreprises locales partout en France avec notre expertise des marchés numériques régionaux. Solutions digitales adaptées à chaque région."
+ },
+ "hero": {
+ "title": "Votre partenaire digital partout en France",
+ "description": "Nous développons des solutions digitales innovantes adaptées aux spécificités de chaque marché régional français. Notre équipe maîtrise les enjeux numériques locaux pour vous accompagner efficacement, où que vous soyez en France.",
+ "cta": "Discuter de votre projet",
+ "secondary-cta": "Découvrir notre expertise locale"
+ },
+ "expertise": {
+ "title": "Une expertise adaptée à chaque territoire",
+ "description": "Notre équipe analyse et comprend les écosystèmes numériques locaux pour vous proposer des solutions parfaitement adaptées aux spécificités économiques et culturelles de votre région.",
+ "local-markets": {
+ "title": "Compréhension des marchés locaux",
+ "description": "Nous étudions et maîtrisons les spécificités et les tendances des écosystèmes numériques régionaux."
+ },
+ "remote-work": {
+ "title": "Travail à distance efficace",
+ "description": "Notre équipe collabore à distance avec votre entreprise, où que vous soyez en France, avec la même efficacité qu'en présentiel."
+ },
+ "custom-solutions": {
+ "title": "Solutions personnalisées",
+ "description": "Des stratégies digitales sur mesure qui s'adaptent à votre contexte local et aux particularités de votre marché régional."
+ }
+ },
+ "cities": {
+ "title": "Notre expertise dans les grandes villes françaises",
+ "description": "Découvrez notre connaissance approfondie des marchés locaux et comment elle peut bénéficier à votre entreprise.",
+ "region-label": "Région",
+ "discover-cta": "Découvrir notre expertise"
+ },
+ "why-us": {
+ "title": "Pourquoi travailler avec nous pour votre projet local ?",
+ "description": "Notre connaissance des marchés régionaux présente de nombreux avantages pour votre entreprise.",
+ "local-ecosystems": {
+ "title": "Expertise des écosystèmes locaux",
+ "description": "Une équipe qui comprend les dynamiques de marché propres à votre région, permettant une stratégie digitale parfaitement adaptée."
+ },
+ "remote-agility": {
+ "title": "Agilité à distance",
+ "description": "Collaboration efficace par visioconférence, messagerie et outils collaboratifs pour une expérience de travail fluide et productive."
+ },
+ "localized-strategies": {
+ "title": "Stratégies localisées",
+ "description": "Des solutions digitales qui tiennent compte des spécificités culturelles et économiques de votre territoire."
+ },
+ "regional-analysis": {
+ "title": "Analyse de marché régional",
+ "description": "Étude des tendances, de la concurrence et des opportunités propres à votre secteur géographique pour une stratégie digitale optimale."
+ }
+ },
+ "services": {
+ "title": "Nos services pour toutes les régions de France",
+ "description": "Des solutions digitales complètes adaptées aux spécificités de chaque marché local.",
+ "design": {
+ "title": "Design UI/UX",
+ "description": "Interfaces adaptées aux usages locaux"
+ },
+ "integration": {
+ "title": "Intégration",
+ "description": "Solutions CMS et e-commerce régionales"
+ },
+ "frontend": {
+ "title": "Front-end",
+ "description": "Applications adaptées à vos utilisateurs"
+ },
+ "backend": {
+ "title": "Back-end",
+ "description": "Infrastructures robustes et évolutives"
+ },
+ "discover-all": "Découvrir tous nos services"
+ },
+ "cta": {
+ "title": "Un projet digital adapté à votre marché local ?",
+ "description": "Contactez-nous pour discuter de votre projet. Notre expertise des marchés locaux nous permet de vous accompagner efficacement, où que vous soyez en France.",
+ "contact": "Nous contacter",
+ "learn-more": "En savoir plus sur notre approche"
}
}
diff --git a/apps/web/src/locales/fr/components/marketing/agency/contact-cta.json b/apps/web/src/locales/fr/components/marketing/agency/contact-cta.json
new file mode 100644
index 000000000..eab9a2fea
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/agency/contact-cta.json
@@ -0,0 +1,13 @@
+{
+ "title": "Un projet adapté au marché de {city} ?",
+ "description": "Notre expertise du marché local de {region} nous permet de vous proposer des solutions parfaitement adaptées à votre contexte régional. Discutons de votre projet !",
+ "features": {
+ "video": "Consultation en ligne via visioconférence",
+ "calendar": "Horaires flexibles adaptés à votre agenda",
+ "expertise": "Expertise approfondie du marché de {city} et de {region}"
+ },
+ "buttons": {
+ "discuss": "Discuter de votre projet",
+ "discover": "Découvrir nos services"
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/agency/france-map.json b/apps/web/src/locales/fr/components/marketing/agency/france-map.json
new file mode 100644
index 000000000..562ed5e64
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/agency/france-map.json
@@ -0,0 +1,3 @@
+{
+ "description": "Découvrez nos services adaptés à votre ville"
+}
diff --git a/apps/web/src/locales/fr/components/marketing/agency/local-expertise.json b/apps/web/src/locales/fr/components/marketing/agency/local-expertise.json
new file mode 100644
index 000000000..4b2cb09ee
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/agency/local-expertise.json
@@ -0,0 +1,6 @@
+{
+ "title": "Solutions web adaptées aux entreprises de {city}",
+ "approach": {
+ "title": "Notre approche pour les projets à {city}"
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/agency/local-testimonials.json b/apps/web/src/locales/fr/components/marketing/agency/local-testimonials.json
new file mode 100644
index 000000000..c9e6af70a
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/agency/local-testimonials.json
@@ -0,0 +1,4 @@
+{
+ "title": "Ce que nos clients à {city} disent de nous",
+ "description": "Découvrez les témoignages de nos clients à {city}, et comment nous les avons accompagnés dans leur transformation digitale."
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/lyon.json b/apps/web/src/locales/fr/constants/agencies/lyon.json
new file mode 100644
index 000000000..5918e1cc3
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/lyon.json
@@ -0,0 +1,83 @@
+{
+ "title": "Agence Web à Lyon | Solutions Digitales sur Mesure",
+ "description": "Développement web, mobile et design UI/UX à Lyon. Notre expertise digitale adaptée aux entreprises de Rhône-Alpes pour dynamiser votre présence en ligne.",
+ "hero-title": "Développement Web & Mobile à Lyon",
+ "hero-description": "Transformez votre entreprise lyonnaise avec des solutions digitales innovantes parfaitement adaptées au dynamisme économique de la région Auvergne-Rhône-Alpes.",
+ "intro-text": "Implantée au cœur du dynamisme lyonnais, notre expertise digitale accompagne les entreprises de la région dans leur transformation numérique. Entre tradition industrielle, excellence biomédicale et rayonnement gastronomique, Lyon présente un tissu économique riche et diversifié dont nous comprenons parfaitement les enjeux.",
+ "expertise-text": "Nous créons des solutions web, mobile et e-commerce adaptées aux spécificités du marché lyonnais et rhônalpin. Notre équipe maîtrise les défis numériques propres aux secteurs d'excellence de la région, des biotechnologies à la gastronomie, en passant par l'industrie manufacturière.",
+ "why-choose-us": "Notre connaissance du marché lyonnais nous permet de développer des solutions numériques parfaitement alignées avec les exigences et les particularités des entreprises locales. Nous comprenons les standards d'excellence de la région et proposons un accompagnement digital qui valorise l'identité et le savoir-faire lyonnais.",
+ "key-business-sectors": {
+ "biotech": "Biotechnologie",
+ "pharma": "Industrie pharmaceutique",
+ "gastronomy": "Gastronomie",
+ "finance": "Finance"
+ },
+ "local-challenges": {
+ "industry-digitalization": "Digitalisation des PME et ETI industrielles face aux enjeux de l'industrie 4.0",
+ "gastronomy-visibility": "Développement de la visibilité numérique pour les acteurs de la gastronomie lyonnaise",
+ "local-ecommerce": "Solutions e-commerce adaptées au commerce local et aux artisans de la région",
+ "biotech-applications": "Applications métier pour les secteurs pharmaceutique et biotech en pleine expansion"
+ },
+ "benefits": {
+ "sector-expertise": "Expertise sectorielle dans les domaines d'excellence lyonnais (biotech, pharma, gastronomie)",
+ "industrial-understanding": "Compréhension des enjeux de digitalisation du bassin industriel rhônalpin",
+ "sme-solutions": "Solutions adaptées aux PME et ETI en transformation numérique",
+ "lyon-ui-design": "Designs UI/UX reflétant l'identité visuelle et les standards de qualité lyonnais",
+ "local-ecosystem-knowledge": "Connaissance approfondie de l'écosystème numérique local"
+ },
+ "primary-stat": {
+ "label": "secteur d'innovation"
+ },
+ "strengths": {
+ "biotech-pharma": {
+ "title": "Solutions Biotech & Pharma",
+ "description": "Applications spécialisées pour le pôle santé lyonnais."
+ },
+ "gastronomy-ecommerce": {
+ "title": "E-commerce gastronomique",
+ "description": "Valorisation digitale des produits du terroir rhônalpin."
+ },
+ "industrial-applications": {
+ "title": "Applications industrielles",
+ "description": "Outils numériques pour l'industrie 4.0 et la production."
+ },
+ "business-interfaces": {
+ "title": "Interfaces métier",
+ "description": "Design UI/UX adaptés aux besoins spécifiques lyonnais."
+ }
+ },
+ "focused-services": {
+ "biotech-applications": {
+ "name": "Applications métier biotech",
+ "description": "Solutions digitales pour les laboratoires et entreprises pharmaceutiques lyonnaises."
+ },
+ "gastronomy-ecommerce": {
+ "name": "E-commerce gastronomique",
+ "description": "Plateformes de vente en ligne pour valoriser l'excellence culinaire lyonnaise."
+ },
+ "industrial-digitalization": {
+ "name": "Digitalisation industrielle",
+ "description": "Outils de pilotage et solutions IoT pour l'industrie rhônalpine."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Lyon"
+ }
+ },
+ "stats": {
+ "biotech-projects": {
+ "label": "Projets biotech",
+ "description": "Applications spécialisées"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "sme-supported": {
+ "label": "PME accompagnées",
+ "description": "Entreprises lyonnaises"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/marseille.json b/apps/web/src/locales/fr/constants/agencies/marseille.json
new file mode 100644
index 000000000..480add356
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/marseille.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Marseille | Solutions Digitales pour Entreprises Provençales",
+ "description": "Créez votre site web ou application mobile à Marseille. Solutions digitales sur mesure pour les entreprises provençales, adaptées aux enjeux locaux de votre secteur.",
+ "hero-title": "Développement Web & Mobile à Marseille",
+ "hero-description": "Nous aidons les entreprises de Marseille et de la région PACA à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché méditerranéen.",
+ "intro-text": "Entre mer et collines, Marseille est un carrefour économique dynamique où tradition et innovation se rencontrent. Notre expertise digitale permet aux entreprises marseillaises de se démarquer dans un marché méditerranéen compétitif et en constante évolution.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises marseillaises. Nous comprenons les défis de votre marché local et vous proposons des solutions digitales qui valorisent votre identité provençale tout en touchant une clientèle internationale.",
+ "why-choose-us": "Notre connaissance approfondie du marché provençal nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons la richesse culturelle et économique de Marseille et l'intégrons dans chaque projet pour créer des expériences digitales authentiques et performantes.",
+ "key-business-sectors": {
+ "tourism": "Tourisme",
+ "maritime": "Maritime",
+ "local-commerce": "Commerce local",
+ "restaurant": "Restauration"
+ },
+ "local-challenges": {
+ "tourism-competition": "Forte concurrence dans le secteur touristique méditerranéen nécessitant une présence digitale distinctive",
+ "maritime-solutions": "Besoin de solutions numériques adaptées au commerce maritime et portuaire",
+ "local-commerce-digitalization": "Digitalisation des commerces locaux face aux grandes chaînes",
+ "local-ecommerce": "Nécessité de solutions e-commerce adaptées pour valoriser l'artisanat et les produits locaux"
+ },
+ "benefits": {
+ "custom-solutions": "Solutions sur mesure adaptées aux spécificités des entreprises provençales",
+ "tourism-maritime-expertise": "Expertise pointue dans les secteurs du tourisme et maritime",
+ "international-ui": "Interface utilisateur optimisée pour une clientèle internationale",
+ "mediterranean-knowledge": "Connaissance approfondie des enjeux économiques méditerranéens",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "secteur touristique"
+ },
+ "strengths": {
+ "tourism-experience": {
+ "title": "Expérience touristique",
+ "description": "Sites et applications optimisés pour le secteur touristique méditerranéen."
+ },
+ "local-ecommerce": {
+ "title": "E-commerce local",
+ "description": "Solutions de vente en ligne pour artisans et commerçants provençaux."
+ },
+ "maritime-sector": {
+ "title": "Secteur maritime",
+ "description": "Digitalisation adaptée aux activités portuaires et nautiques."
+ },
+ "mediterranean-design": {
+ "title": "Design méditerranéen",
+ "description": "Interfaces modernes reflétant l'identité visuelle méditerranéenne."
+ }
+ },
+ "focused-services": {
+ "tourism-websites": {
+ "name": "Sites web touristiques",
+ "description": "Vitrines digitales multilingues pour hôtels, restaurants et activités touristiques."
+ },
+ "provencal-ecommerce": {
+ "name": "E-commerce provençal",
+ "description": "Boutiques en ligne adaptées aux producteurs et artisans locaux."
+ },
+ "mobile-applications": {
+ "name": "Applications mobiles",
+ "description": "Solutions mobiles pour enrichir l'expérience touristique et commerciale."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Marseille"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/montpellier.json b/apps/web/src/locales/fr/constants/agencies/montpellier.json
new file mode 100644
index 000000000..4947393ee
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/montpellier.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Montpellier | Solutions Digitales pour Entreprises Languedociennes",
+ "description": "Créez votre site web ou application mobile à Montpellier. Solutions digitales sur mesure pour les entreprises montpelliéraines, adaptées aux enjeux locaux de votre secteur.",
+ "hero-title": "Développement Web & Mobile à Montpellier",
+ "hero-description": "Nous aidons les entreprises de Montpellier et du Languedoc à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché régional.",
+ "intro-text": "Ville dynamique à la croisée des influences méditerranéennes et languedociennes, Montpellier se distingue par son écosystème d'innovation en santé, ses universités prestigieuses et son art de vivre. Notre expertise digitale permet aux entreprises montpelliéraines de tirer parti de cette richesse et de se démarquer dans un environnement compétitif.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises de Montpellier et sa région. Nous comprenons les défis spécifiques de votre marché local, qu'il s'agisse du secteur de la santé, de l'éducation ou du terroir languedocien, et vous proposons des solutions numériques qui valorisent votre expertise et votre ancrage régional.",
+ "why-choose-us": "Notre connaissance approfondie du marché montpelliérain nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons l'équilibre entre innovation et tradition qui caractérise Montpellier, et intégrons cette compréhension dans chaque projet pour créer des expériences digitales authentiques et performantes.",
+ "key-business-sectors": {
+ "health-biotech": "Santé & Biotechnologies",
+ "higher-education": "Enseignement supérieur",
+ "viticulture": "Viticulture",
+ "tourism": "Tourisme"
+ },
+ "local-challenges": {
+ "biotech-health-digitalization": "Digitalisation du secteur des biotechnologies et de la santé en pleine expansion",
+ "innovative-educational-platforms": "Besoin de plateformes éducatives innovantes pour les nombreuses universités et écoles",
+ "wine-heritage-digital-showcase": "Valorisation numérique du patrimoine viticole et des produits du terroir",
+ "tourism-adaptation": "Adaptation des acteurs du tourisme face à la concurrence méditerranéenne"
+ },
+ "benefits": {
+ "health-sector-solutions": "Solutions sur mesure adaptées aux entreprises innovantes du secteur santé",
+ "educational-platforms-expertise": "Expertise pointue dans les plateformes éducatives et les outils e-learning",
+ "languedoc-market-knowledge": "Connaissance approfondie du marché languedocien et de ses spécificités",
+ "regional-products-ui": "Interfaces utilisateur optimisées pour valoriser les produits régionaux",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "biotechnologies"
+ },
+ "strengths": {
+ "connected-health": {
+ "title": "Santé connectée",
+ "description": "Solutions digitales pour startups et entreprises des sciences de la vie."
+ },
+ "elearning": {
+ "title": "E-learning",
+ "description": "Plateformes pédagogiques pour universités et établissements de formation."
+ },
+ "digital-terroir": {
+ "title": "Terroir digital",
+ "description": "Sites et e-commerce pour domaines viticoles et producteurs locaux."
+ },
+ "regional-tourism": {
+ "title": "Tourisme régional",
+ "description": "Expériences numériques pour valoriser le patrimoine languedocien."
+ }
+ },
+ "focused-services": {
+ "health-applications": {
+ "name": "Applications santé",
+ "description": "Solutions sur mesure pour startups et entreprises du secteur des sciences de la vie."
+ },
+ "educational-platforms": {
+ "name": "Plateformes éducatives",
+ "description": "Outils d'apprentissage digitaux pour établissements d'enseignement."
+ },
+ "terroir-ecommerce": {
+ "name": "E-commerce terroir",
+ "description": "Boutiques en ligne pour producteurs locaux et domaines viticoles."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Montpellier"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/nantes.json b/apps/web/src/locales/fr/constants/agencies/nantes.json
new file mode 100644
index 000000000..192aae10b
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/nantes.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Nantes | Solutions Digitales pour Entreprises Ligériennes",
+ "description": "Créez votre site web ou application mobile à Nantes. Solutions digitales sur mesure pour les entreprises nantaises, adaptées aux enjeux locaux de votre secteur.",
+ "hero-title": "Développement Web & Mobile à Nantes",
+ "hero-description": "Nous aidons les entreprises de Nantes et des Pays de la Loire à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché ligérien.",
+ "intro-text": "Capitale historique de la Bretagne et métropole innovante, Nantes est reconnue pour son dynamisme économique et sa qualité de vie. Son écosystème numérique florissant, ses industries créatives et son engagement dans la transition écologique en font un territoire unique où l'innovation digitale joue un rôle central.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises nantaises, qu'elles soient des startups innovantes, des acteurs de l'économie responsable ou des entreprises traditionnelles en transformation. Nous comprenons les spécificités du marché local et vous proposons des solutions numériques alignées avec les valeurs d'innovation et de durabilité propres à Nantes.",
+ "why-choose-us": "Notre connaissance approfondie du marché nantais nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons l'esprit d'innovation et l'engagement pour une économie plus responsable qui caractérisent Nantes, et intégrons ces valeurs dans chaque projet digital que nous réalisons.",
+ "key-business-sectors": {
+ "tech-digital": "Tech & Numérique",
+ "ecological-transition": "Transition écologique",
+ "creative-industries": "Industries créatives",
+ "agrifood": "Agroalimentaire"
+ },
+ "local-challenges": {
+ "digital-ecosystem-competition": "Forte concurrence dans l'écosystème numérique nantais en pleine expansion",
+ "startup-scaleup-needs": "Besoins spécifiques des startups et scale-ups de la French Tech locale",
+ "ecological-transition-digitalization": "Digitalisation des acteurs de la transition écologique et énergétique",
+ "traditional-industries-transformation": "Transformation numérique des industries traditionnelles et agroalimentaires régionales"
+ },
+ "benefits": {
+ "nantes-ecosystem-solutions": "Solutions sur mesure adaptées à l'écosystème numérique nantais",
+ "innovative-eco-technologies": "Expertise pointue dans les technologies web innovantes et éco-responsables",
+ "agile-approach": "Approche agile parfaitement adaptée aux startups et entreprises innovantes",
+ "digital-transition-knowledge": "Connaissance approfondie des enjeux de la transition numérique ligérienne",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "numérique nantais"
+ },
+ "strengths": {
+ "innovative-tech": {
+ "title": "Tech innovante",
+ "description": "Solutions digitales modernes pour startups et scale-ups nantaises."
+ },
+ "eco-design": {
+ "title": "Éco-conception",
+ "description": "Sites et applications à l'empreinte environnementale maîtrisée."
+ },
+ "maritime-industry": {
+ "title": "Industrie maritime",
+ "description": "Digitalisation adaptée aux activités portuaires et fluviales."
+ },
+ "renewable-energy": {
+ "title": "Énergies renouvelables",
+ "description": "Solutions numériques pour les acteurs de la transition énergétique."
+ }
+ },
+ "focused-services": {
+ "web-applications": {
+ "name": "Web applications",
+ "description": "Applications web performantes et évolutives pour startups et entreprises innovantes."
+ },
+ "eco-designed-websites": {
+ "name": "Sites éco-conçus",
+ "description": "Sites web optimisés et durables pour les acteurs de l'économie responsable."
+ },
+ "business-platforms": {
+ "name": "Plateformes métier",
+ "description": "Solutions sur mesure pour industries traditionnelles en transformation."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Nantes"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/nice.json b/apps/web/src/locales/fr/constants/agencies/nice.json
new file mode 100644
index 000000000..9130a4c4e
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/nice.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Nice | Solutions Digitales pour Entreprises Azuréennes",
+ "description": "Créez votre site web ou application mobile à Nice. Solutions digitales sur mesure pour les entreprises de la Côte d'Azur, adaptées aux enjeux locaux de votre secteur.",
+ "hero-title": "Développement Web & Mobile à Nice",
+ "hero-description": "Nous aidons les entreprises de Nice et de la Côte d'Azur à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché azuréen.",
+ "intro-text": "Entre mer Méditerranée et Alpes, Nice bénéficie d'un rayonnement international et d'une économie diversifiée où le tourisme côtoie l'innovation. Notre expertise digitale permet aux entreprises niçoises de se démarquer dans un environnement compétitif où l'image et l'excellence sont primordiales.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Nice et de la Côte d'Azur. Nous comprenons les exigences élevées de votre marché local et vous proposons des solutions digitales qui valorisent le positionnement premium propre à la région.",
+ "why-choose-us": "Notre connaissance approfondie du marché azuréen nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons la dimension internationale de Nice et sa réputation d'excellence, et intégrons ces aspects dans chaque projet pour créer des expériences digitales raffinées et performantes.",
+ "key-business-sectors": {
+ "luxury-tourism": "Tourisme de luxe",
+ "real-estate": "Immobilier",
+ "events": "Événementiel",
+ "health-wellness": "Santé & Bien-être"
+ },
+ "local-challenges": {
+ "luxury-tourism-digitalization": "Digitalisation du secteur du tourisme haut de gamme sur la Côte d'Azur",
+ "innovative-real-estate-solutions": "Besoin de solutions immobilières innovantes pour un marché international exigeant",
+ "events-digital-showcase": "Mise en valeur digitale de l'événementiel (festivals, congrès, expositions)",
+ "health-wellness-transformation": "Transformation numérique du secteur santé et bien-être dans une région reconnue pour sa qualité de vie"
+ },
+ "benefits": {
+ "international-clientele-solutions": "Solutions sur mesure adaptées à une clientèle internationale exigeante",
+ "premium-interfaces-expertise": "Expertise pointue dans les interfaces haut de gamme et l'expérience utilisateur premium",
+ "azurean-market-knowledge": "Connaissance approfondie du marché azuréen et de ses spécificités",
+ "multilingual-applications": "Applications multilingues adaptées à la clientèle internationale de la Côte d'Azur",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "tourisme de luxe"
+ },
+ "strengths": {
+ "premium-experience": {
+ "title": "Expérience premium",
+ "description": "Sites et applications haut de gamme pour le tourisme de luxe et l'hôtellerie."
+ },
+ "digital-real-estate": {
+ "title": "Immobilier digital",
+ "description": "Solutions innovantes pour les agences immobilières et promoteurs."
+ },
+ "event-platforms": {
+ "title": "Plateformes événementielles",
+ "description": "Sites et applications pour festivals, congrès et événements prestigieux."
+ },
+ "connected-wellness": {
+ "title": "Bien-être connecté",
+ "description": "Solutions digitales pour cliniques, spas et centres de bien-être."
+ }
+ },
+ "focused-services": {
+ "premium-websites": {
+ "name": "Sites web premium",
+ "description": "Vitrines digitales haut de gamme pour hôtels, restaurants et boutiques de luxe."
+ },
+ "real-estate-applications": {
+ "name": "Applications immobilières",
+ "description": "Solutions sur mesure pour la présentation et la gestion de biens d'exception."
+ },
+ "visual-identity": {
+ "name": "Identité visuelle",
+ "description": "Design UI/UX élégant et soigné pour marques et établissements prestigieux."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Nice"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/paris.json b/apps/web/src/locales/fr/constants/agencies/paris.json
new file mode 100644
index 000000000..b15f645be
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/paris.json
@@ -0,0 +1,84 @@
+{
+ "title": "Agence Web à Paris | Développement Web, Mobile & Design UI/UX",
+ "description": "Votre partenaire digital au cœur de Paris. Solutions de développement web, mobile et design UI/UX pour accélérer la croissance de votre entreprise parisienne.",
+ "hero-title": "Développement Digital dans la Capitale",
+ "hero-description": "Transformez votre présence numérique avec des solutions innovantes adaptées au marché parisien compétitif et son écosystème dynamique de startups, grands groupes et entreprises innovantes.",
+ "intro-text": "Au cœur de la capitale française, notre expertise digitale répond aux exigences du marché parisien avec des solutions web et mobile innovantes. Entre grands groupes, entreprises du luxe et startups en pleine croissance, Paris concentre un écosystème numérique dynamique dont nous comprenons parfaitement les enjeux et les opportunités.",
+ "expertise-text": "Nous concevons des expériences digitales premium qui répondent aux standards élevés des entreprises parisiennes. Notre équipe maîtrise les défis spécifiques de la capitale, qu'il s'agisse de créer des interfaces utilisateur raffinées pour le secteur du luxe, des applications performantes pour les fintechs, ou des solutions évolutives pour les startups en hypercroissance.",
+ "why-choose-us": "Notre connaissance approfondie du marché parisien nous permet de développer des solutions digitales parfaitement alignées avec les exigences des entreprises de la capitale. Nous combinons innovation technique, excellence créative et compréhension business pour vous accompagner efficacement dans un environnement hautement compétitif.",
+ "key-business-sectors": {
+ "startups-tech": "Startups Tech",
+ "finance": "Finance",
+ "luxury": "Luxe",
+ "media-communication": "Médias & Communication"
+ },
+ "local-challenges": {
+ "digital-competition": "Forte concurrence digitale sur le marché parisien nécessitant des solutions différenciantes",
+ "agile-tools-startups": "Besoins d'outils agiles et performants pour les startups en hypercroissance",
+ "financial-digitalization": "Digitalisation des services financiers traditionnels face aux fintechs",
+ "luxury-digital-experiences": "Développement d'expériences digitales premium pour le secteur du luxe parisien",
+ "corporate-transformation": "Solutions innovantes pour les grands groupes en transformation numérique"
+ },
+ "benefits": {
+ "startup-expertise": "Expertise pointue des dernières technologies adaptées à l'écosystème startup parisien",
+ "premium-solutions": "Solutions premium répondant aux exigences élevées du marché de la capitale",
+ "luxury-finance-understanding": "Compréhension des codes du luxe et de la finance pour des expériences numériques sur mesure",
+ "agility-responsiveness": "Agilité et réactivité pour accompagner le rythme intensif des entreprises parisiennes",
+ "tech-trends-knowledge": "Connaissance approfondie des tendances et innovations de la tech française"
+ },
+ "primary-stat": {
+ "label": "startup & tech"
+ },
+ "strengths": {
+ "startup-solutions": {
+ "title": "Solutions Startup",
+ "description": "Applications évolutives pour entreprises en forte croissance."
+ },
+ "luxury-experiences": {
+ "title": "Expériences Luxe",
+ "description": "Interfaces premium pour marques et services haut de gamme."
+ },
+ "finance-fintech": {
+ "title": "Finance & Fintech",
+ "description": "Solutions sécurisées pour le secteur financier parisien."
+ },
+ "international": {
+ "title": "International",
+ "description": "Développement multilingue adapté aux entreprises globales."
+ }
+ },
+ "focused-services": {
+ "saas-applications": {
+ "name": "Applications SaaS",
+ "description": "Développement de solutions cloud innovantes pour startups et scale-ups."
+ },
+ "premium-ecommerce": {
+ "name": "E-commerce premium",
+ "description": "Plateformes de vente haut de gamme pour les marques de luxe parisiennes."
+ },
+ "innovative-design": {
+ "name": "Design UI/UX innovant",
+ "description": "Interfaces utilisateur modernes et différenciantes pour se démarquer à Paris."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Rencontres à Paris"
+ }
+ },
+ "stats": {
+ "startups": {
+ "label": "Startups",
+ "description": "Projets pour startups"
+ },
+ "luxury-clients": {
+ "label": "Clients luxe",
+ "description": "Marques premium"
+ },
+ "average-roi": {
+ "label": "ROI moyen",
+ "description": "Retour sur investissement"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/rouen.json b/apps/web/src/locales/fr/constants/agencies/rouen.json
new file mode 100644
index 000000000..b4ac1fcbd
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/rouen.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Rouen | Solutions Digitales pour Entreprises Normandes",
+ "description": "Créez votre site web ou application mobile à Rouen. Solutions digitales sur mesure pour les entreprises normandes, adaptées aux enjeux locaux de votre secteur.",
+ "hero-title": "Développement Web & Mobile à Rouen",
+ "hero-description": "Nous aidons les entreprises de Rouen et de Normandie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché normand.",
+ "intro-text": "Le tissu économique normand présente des enjeux numériques spécifiques que nous avons appris à maîtriser. Entre l'industrie manufacturière, le secteur agroalimentaire et la logistique fluviale, nous créons des solutions digitales qui répondent aux besoins précis des entreprises rouennaises.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Rouen et sa région. Nous comprenons les défis de votre marché et vous proposons des solutions digitales qui vous aident à vous démarquer et à développer votre activité.",
+ "why-choose-us": "Notre connaissance approfondie du marché normand nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Contrairement aux agences parisiennes, nous comprenons les subtilités du tissu économique de Rouen et apportons des solutions sur mesure à un rapport qualité-prix avantageux.",
+ "key-business-sectors": {
+ "industry": "Industrie",
+ "agrifood": "Agroalimentaire",
+ "logistics": "Logistique",
+ "local-commerce": "Commerce local"
+ },
+ "local-challenges": {
+ "traditional-industries-digitalization": "Digitalisation des industries traditionnelles normandes face à la concurrence internationale",
+ "logistics-optimization": "Optimisation de la logistique fluviale et portuaire via des solutions numériques innovantes",
+ "local-ecommerce-needs": "Besoin de solutions e-commerce adaptées aux producteurs et artisans locaux",
+ "sme-digital-transition": "Transition numérique des PME normandes avec des budgets maîtrisés"
+ },
+ "benefits": {
+ "normandy-specific-solutions": "Solutions sur mesure adaptées aux spécificités des entreprises normandes",
+ "industrial-agrifood-expertise": "Expertise pointue dans les secteurs industriels et agroalimentaires régionaux",
+ "competitive-pricing": "Tarifs compétitifs par rapport aux agences parisiennes",
+ "seine-logistics-knowledge": "Connaissance approfondie des enjeux logistiques liés à l'axe Seine",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "secteur industriel"
+ },
+ "strengths": {
+ "industrial-websites": {
+ "title": "Sites web industriels",
+ "description": "Sites performants adaptés aux entreprises manufacturières normandes."
+ },
+ "local-ecommerce": {
+ "title": "E-commerce local",
+ "description": "Solutions de vente en ligne pour producteurs et artisans locaux."
+ },
+ "business-applications": {
+ "title": "Applications métier",
+ "description": "Outils numériques sur mesure pour optimiser vos processus."
+ },
+ "sme-digitalization": {
+ "title": "Digitalisation PME",
+ "description": "Accompagnement complet pour votre transformation numérique."
+ }
+ },
+ "focused-services": {
+ "professional-websites": {
+ "name": "Sites web professionnels",
+ "description": "Vitrines digitales performantes et optimisées pour le SEO local à Rouen."
+ },
+ "regional-ecommerce": {
+ "name": "E-commerce régional",
+ "description": "Boutiques en ligne adaptées aux producteurs et commerces normands."
+ },
+ "business-applications": {
+ "name": "Applications métier",
+ "description": "Logiciels sur mesure pour l'industrie et la logistique régionale."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Rouen"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/strasbourg.json b/apps/web/src/locales/fr/constants/agencies/strasbourg.json
new file mode 100644
index 000000000..6ce9677fe
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/strasbourg.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Strasbourg | Solutions Digitales pour Entreprises Alsaciennes",
+ "description": "Créez votre site web ou application mobile à Strasbourg. Solutions digitales sur mesure pour les entreprises alsaciennes, adaptées aux enjeux locaux et transfrontaliers.",
+ "hero-title": "Développement Web & Mobile à Strasbourg",
+ "hero-description": "Nous aidons les entreprises de Strasbourg et du Grand Est à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché alsacien et européen.",
+ "intro-text": "Capitale européenne et ville frontalière au riche patrimoine, Strasbourg conjugue traditions alsaciennes et ouverture internationale. Son statut de siège d'institutions européennes, son industrie dynamique et sa position stratégique entre France et Allemagne en font un territoire unique où le digital joue un rôle essentiel de passerelle.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises strasbourgeoises, qu'elles soient des organisations internationales, des entreprises industrielles ou des acteurs du patrimoine local. Nous comprenons les défis spécifiques de votre marché régional et transfrontalier, et vous proposons des solutions numériques multilingues et culturellement adaptées.",
+ "why-choose-us": "Notre connaissance approfondie du marché strasbourgeois nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons les exigences du contexte européen et les particularités culturelles alsaciennes, et intégrons cette double dimension dans chaque projet pour créer des expériences digitales pertinentes et performantes.",
+ "key-business-sectors": {
+ "european-institutions": "Institutions européennes",
+ "cross-border-commerce": "Commerce transfrontalier",
+ "industry": "Industrie",
+ "culture-heritage": "Culture & Patrimoine"
+ },
+ "local-challenges": {
+ "european-institutions-needs": "Besoins spécifiques des institutions européennes et organisations internationales",
+ "cross-border-development": "Développement du commerce transfrontalier avec l'Allemagne et la Suisse",
+ "traditional-industries-transformation": "Transformation digitale des industries traditionnelles alsaciennes",
+ "heritage-digital-showcase": "Valorisation numérique du riche patrimoine culturel et historique de la région"
+ },
+ "benefits": {
+ "multilingual-solutions": "Solutions multilingues adaptées au contexte international strasbourgeois",
+ "european-standards-expertise": "Expertise pointue dans les interfaces utilisateur conformes aux normes européennes",
+ "cross-border-knowledge": "Connaissance approfondie des marchés transfrontaliers et de leurs spécificités",
+ "innovative-traditional-approach": "Approche à la fois innovante et respectueuse des traditions alsaciennes",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "contexte international"
+ },
+ "strengths": {
+ "european-solutions": {
+ "title": "Solutions européennes",
+ "description": "Plateformes multilingues pour institutions et organisations internationales."
+ },
+ "cross-border-commerce": {
+ "title": "Commerce transfrontalier",
+ "description": "Solutions e-commerce adaptées aux marchés français, allemand et suisse."
+ },
+ "industry-40": {
+ "title": "Industrie 4.0",
+ "description": "Digitalisation des processus pour l'industrie alsacienne traditionnelle."
+ },
+ "digital-heritage": {
+ "title": "Patrimoine numérique",
+ "description": "Expériences digitales pour valoriser le patrimoine culturel et historique."
+ }
+ },
+ "focused-services": {
+ "institutional-websites": {
+ "name": "Sites institutionnels",
+ "description": "Plateformes multilingues conformes aux normes européennes d'accessibilité."
+ },
+ "cross-border-ecommerce": {
+ "name": "E-commerce transfrontalier",
+ "description": "Solutions commerciales adaptées aux spécificités des marchés allemand et français."
+ },
+ "industrial-applications": {
+ "name": "Applications industrielles",
+ "description": "Outils numériques sur mesure pour moderniser les process industriels."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Strasbourg"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/agencies/toulouse.json b/apps/web/src/locales/fr/constants/agencies/toulouse.json
new file mode 100644
index 000000000..747faf70f
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/agencies/toulouse.json
@@ -0,0 +1,83 @@
+{
+ "title": "Développement Web à Toulouse | Solutions Digitales pour Entreprises Occitanes",
+ "description": "Créez votre site web ou application mobile à Toulouse. Solutions digitales sur mesure pour les entreprises toulousaines, adaptées aux enjeux locaux de votre secteur.",
+ "hero-title": "Développement Web & Mobile à Toulouse",
+ "hero-description": "Nous aidons les entreprises de Toulouse et de l'Occitanie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché toulousain.",
+ "intro-text": "Capitale européenne de l'aéronautique et ville étudiante dynamique, Toulouse présente un écosystème économique unique où innovation et tradition se côtoient. Notre expertise digitale permet aux entreprises toulousaines de se démarquer dans un environnement compétitif en constante évolution technologique.",
+ "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises toulousaines, qu'elles soient des géants de l'aéronautique, des startups innovantes ou des commerces traditionnels. Nous comprenons les défis spécifiques de votre marché local et vous proposons des solutions technologiques de pointe.",
+ "why-choose-us": "Notre connaissance approfondie du marché toulousain nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons les enjeux technologiques de la Ville Rose et intégrons cette expertise dans chaque projet pour créer des expériences digitales performantes et tournées vers le futur.",
+ "key-business-sectors": {
+ "aeronautics": "Aéronautique",
+ "space": "Spatial",
+ "tech": "Tech",
+ "education": "Éducation"
+ },
+ "local-challenges": {
+ "aerospace-transformation": "Transformation digitale des entreprises de l'écosystème aéronautique et spatial",
+ "startup-platforms": "Besoin de plateformes innovantes pour les startups de la French Tech toulousaine",
+ "elearning-development": "Développement de solutions e-learning pour les nombreux établissements d'enseignement",
+ "local-commerce-adaptation": "Adaptation des commerces locaux face à la concurrence des grandes enseignes nationales"
+ },
+ "benefits": {
+ "high-tech-solutions": "Solutions sur mesure adaptées aux industries de haute technologie",
+ "complex-interfaces-expertise": "Expertise pointue dans le développement d'interfaces complexes",
+ "startup-ecosystem-knowledge": "Connaissance approfondie de l'écosystème startup toulousain",
+ "agile-approach": "Approche agile parfaitement adaptée aux projets innovants",
+ "personalized-support": "Accompagnement personnalisé tout au long de votre projet digital"
+ },
+ "primary-stat": {
+ "label": "secteur technologique"
+ },
+ "strengths": {
+ "aeronautics-solutions": {
+ "title": "Solutions aéronautiques",
+ "description": "Applications et interfaces adaptées aux besoins spécifiques du secteur aérospatial."
+ },
+ "startup-platforms": {
+ "title": "Plateformes startups",
+ "description": "Solutions digitales agiles et évolutives pour les startups innovantes."
+ },
+ "elearning": {
+ "title": "E-learning",
+ "description": "Plateformes pédagogiques pour les établissements d'enseignement supérieur."
+ },
+ "local-commerce": {
+ "title": "Commerce local",
+ "description": "Digitalisation sur mesure pour les commerces et artisans toulousains."
+ }
+ },
+ "focused-services": {
+ "business-applications": {
+ "name": "Applications métier",
+ "description": "Solutions sur mesure pour l'industrie aéronautique et les entreprises technologiques."
+ },
+ "innovative-websites": {
+ "name": "Sites web innovants",
+ "description": "Vitrines digitales modernes pour startups et entreprises innovantes."
+ },
+ "ecommerce-platforms": {
+ "name": "Plateformes e-commerce",
+ "description": "Solutions complètes pour les commerces locaux souhaitant se digitaliser."
+ }
+ },
+ "contact-info": {
+ "meeting-options": {
+ "video-conference": "Visioconférence",
+ "in-person": "Déplacements occasionnels à Toulouse"
+ }
+ },
+ "stats": {
+ "expertise": {
+ "label": "Expertise",
+ "description": "Années d'expérience"
+ },
+ "satisfaction": {
+ "label": "Satisfaction",
+ "description": "Clients satisfaits"
+ },
+ "average-time": {
+ "label": "Délai moyen",
+ "description": "Semaines de réalisation"
+ }
+ }
+}
diff --git a/apps/web/src/types/agency.ts b/apps/web/src/types/agency.ts
index 91bf620ed..58dbef59c 100644
--- a/apps/web/src/types/agency.ts
+++ b/apps/web/src/types/agency.ts
@@ -1,60 +1,47 @@
-
import { LucideIcon } from "lucide-react";
export interface AgencyTestimonial {
- name: string;
- role: string;
- company: string;
- text: string;
- imageUrl?: string;
+ key: string;
+ author: {
+ name: string;
+ role: string;
+ company: string;
+ imageUrl?: string;
+ };
}
export interface AgencyStrength {
- title: string;
- description: string;
+ key: string;
icon?: LucideIcon;
}
export interface AgencyService {
- name: string;
- description: string;
+ key: string;
link: string;
icon?: LucideIcon;
}
export interface AgencyStat {
- label: string;
+ key: string;
value: string;
- description: string;
}
export interface Agency {
-
- id: string;
- name: string;
- region: string;
-
- title: string;
- description: string;
-
- heroTitle?: string;
- heroDescription?: string;
- introText: string;
- expertiseText: string;
- whyChooseUs: string;
+ id: string;
+ name: string;
+ region: string;
- keyBusinessSectors: string[];
- localChallenges: string[];
- benefits: string[];
+ keyBusinessSectors: string[];
+ localChallenges: string[];
+ benefits: string[];
- strengths: AgencyStrength[];
- focusedServices: AgencyService[];
- testimonials: AgencyTestimonial[];
+ strengths: AgencyStrength[];
+ focusedServices: AgencyService[];
+ testimonials: AgencyTestimonial[];
contactInfo: {
- email: string;
- phone: string;
- meetingOptions?: string[];
+ email: string;
+ phone: string;
};
stats: AgencyStat[];
@@ -64,12 +51,12 @@ export interface Agency {
longitude: string;
};
- accentColor?: string;
- primaryStat?: {
+ accentColor?: string;
+ primaryStat?: {
+ key: string;
icon: LucideIcon;
value: string;
- label: string;
};
nearbyLocations: string[];
-}
\ No newline at end of file
+}
From 5c72925e7694831a922c708c905b8de08a6e929a Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 01:44:42 +0100
Subject: [PATCH 52/64] =?UTF-8?q?=F0=9F=8E=A8=20replace=20anchor=20tags=20?=
=?UTF-8?q?with=20link=20component=20for=20improved=20navigation?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/agency/[city]/page.tsx | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/apps/web/src/app/[locale]/agency/[city]/page.tsx b/apps/web/src/app/[locale]/agency/[city]/page.tsx
index 512da7e7f..a421b85cc 100644
--- a/apps/web/src/app/[locale]/agency/[city]/page.tsx
+++ b/apps/web/src/app/[locale]/agency/[city]/page.tsx
@@ -1,6 +1,7 @@
import Image from 'next/image';
import { notFound } from 'next/navigation';
import { Metadata } from 'next';
+import { Link } from '@onruntime/translations/next';
import { constructMetadata } from '@/lib/utils/metadata.server';
import { getTranslation } from '@/lib/translations.server';
import CityHeroSection from '@/components/marketing/agency/city-hero-section';
@@ -163,7 +164,7 @@ export default async function CityPage({ params }: AgencyPageProps) {
diff --git a/apps/web/src/locales/en/constants/agencies/lyon.json b/apps/web/src/locales/en/constants/agencies/lyon.json
index 89b885145..0e9f6cd04 100644
--- a/apps/web/src/locales/en/constants/agencies/lyon.json
+++ b/apps/web/src/locales/en/constants/agencies/lyon.json
@@ -1,10 +1,12 @@
{
"title": "Web Agency in Lyon | Custom Digital Solutions",
"description": "Web development, mobile and UI/UX design in Lyon. Our digital expertise tailored to Rhône-Alpes businesses to boost your online presence.",
- "hero-title": "Web & Mobile Development in Lyon",
- "hero-description": "Transform your Lyon-based business with innovative digital solutions perfectly adapted to the economic dynamism of the Auvergne-Rhône-Alpes region.",
- "intro-text": "At the heart of Lyon's dynamism, our digital expertise supports businesses in the region through their digital transformation. Between industrial tradition, biomedical excellence and gastronomic influence, Lyon presents a rich and diversified economic fabric whose challenges we fully understand.",
- "expertise-text": "We create web, mobile and e-commerce solutions adapted to the specificities of the Lyon and Rhône-Alpes market. Our team masters the digital challenges specific to the region's sectors of excellence, from biotechnology to gastronomy, including manufacturing.",
+ "hero": {
+ "title": "Web & Mobile Development in Lyon",
+ "description": "Transform your Lyon-based business with innovative digital solutions perfectly adapted to the economic dynamism of the Auvergne-Rhône-Alpes region."
+ },
+ "intro": "At the heart of Lyon's dynamism, our digital expertise supports businesses in the region through their digital transformation. Between industrial tradition, biomedical excellence and gastronomic influence, Lyon presents a rich and diversified economic fabric whose challenges we fully understand.",
+ "expertise": "We create web, mobile and e-commerce solutions adapted to the specificities of the Lyon and Rhône-Alpes market. Our team masters the digital challenges specific to the region's sectors of excellence, from biotechnology to gastronomy, including manufacturing.",
"why-choose-us": "Our knowledge of the Lyon market enables us to develop digital solutions perfectly aligned with the requirements and particularities of local businesses. We understand the region's standards of excellence and offer digital support that enhances Lyon's identity and know-how.",
"key-business-sectors": {
"biotech": "Biotechnology",
diff --git a/apps/web/src/locales/en/constants/agencies/marseille.json b/apps/web/src/locales/en/constants/agencies/marseille.json
index 11699a9b3..2b1623c6f 100644
--- a/apps/web/src/locales/en/constants/agencies/marseille.json
+++ b/apps/web/src/locales/en/constants/agencies/marseille.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Marseille | Digital Solutions for Provençal Businesses",
"description": "Create your website or mobile application in Marseille. Custom digital solutions for Provençal businesses, tailored to the local challenges of your sector.",
- "hero-title": "Web & Mobile Development in Marseille",
- "hero-description": "We help businesses in Marseille and the PACA region digitalize with custom web solutions, perfectly adapted to the specific challenges of the Mediterranean market.",
- "intro-text": "Between sea and hills, Marseille is a dynamic economic crossroads where tradition and innovation meet. Our digital expertise enables Marseille businesses to stand out in a competitive and constantly evolving Mediterranean market.",
- "expertise-text": "Our team designs websites, applications and e-commerce solutions perfectly adapted to Marseille businesses. We understand the challenges of your local market and offer digital solutions that enhance your Provençal identity while reaching an international clientele.",
+ "hero": {
+ "title": "Web & Mobile Development in Marseille",
+ "description": "We help businesses in Marseille and the PACA region digitalize with custom web solutions, perfectly adapted to the specific challenges of the Mediterranean market."
+ },
+ "intro": "Between sea and hills, Marseille is a dynamic economic crossroads where tradition and innovation meet. Our digital expertise enables Marseille businesses to stand out in a competitive and constantly evolving Mediterranean market.",
+ "expertise": "Our team designs websites, applications and e-commerce solutions perfectly adapted to Marseille businesses. We understand the challenges of your local market and offer digital solutions that enhance your Provençal identity while reaching an international clientele.",
"why-choose-us": "Our in-depth knowledge of the Provençal market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the cultural and economic richness of Marseille and integrate it into each project to create authentic and high-performing digital experiences.",
"key-business-sectors": {
"tourism": "Tourism",
diff --git a/apps/web/src/locales/en/constants/agencies/montpellier.json b/apps/web/src/locales/en/constants/agencies/montpellier.json
index a3d13296f..2b5e298f3 100644
--- a/apps/web/src/locales/en/constants/agencies/montpellier.json
+++ b/apps/web/src/locales/en/constants/agencies/montpellier.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Montpellier | Digital Solutions for Languedoc Businesses",
"description": "Create your website or mobile application in Montpellier. Custom digital solutions for Montpellier businesses, tailored to the local challenges of your sector.",
- "hero-title": "Web & Mobile Development in Montpellier",
- "hero-description": "We help businesses in Montpellier and the Languedoc region digitalize with custom web solutions, perfectly adapted to the specific challenges of the regional market.",
- "intro-text": "A dynamic city at the crossroads of Mediterranean and Languedoc influences, Montpellier stands out for its health innovation ecosystem, prestigious universities and art of living. Our digital expertise enables Montpellier businesses to leverage this richness and stand out in a competitive environment.",
- "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to businesses in Montpellier and its region. We understand the specific challenges of your local market, whether in the health sector, education or Languedoc terroir, and offer digital solutions that showcase your expertise and regional roots.",
+ "hero": {
+ "title": "Web & Mobile Development in Montpellier",
+ "description": "We help businesses in Montpellier and the Languedoc region digitalize with custom web solutions, perfectly adapted to the specific challenges of the regional market."
+ },
+ "intro": "A dynamic city at the crossroads of Mediterranean and Languedoc influences, Montpellier stands out for its health innovation ecosystem, prestigious universities and art of living. Our digital expertise enables Montpellier businesses to leverage this richness and stand out in a competitive environment.",
+ "expertise": "Our team designs websites, applications and digital solutions perfectly adapted to businesses in Montpellier and its region. We understand the specific challenges of your local market, whether in the health sector, education or Languedoc terroir, and offer digital solutions that showcase your expertise and regional roots.",
"why-choose-us": "Our in-depth knowledge of the Montpellier market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the balance between innovation and tradition that characterizes Montpellier, and integrate this understanding into each project to create authentic and high-performing digital experiences.",
"key-business-sectors": {
"health-biotech": "Health & Biotechnologies",
diff --git a/apps/web/src/locales/en/constants/agencies/nantes.json b/apps/web/src/locales/en/constants/agencies/nantes.json
index 2dd830c5a..135d0af90 100644
--- a/apps/web/src/locales/en/constants/agencies/nantes.json
+++ b/apps/web/src/locales/en/constants/agencies/nantes.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Nantes | Digital Solutions for Loire Valley Businesses",
"description": "Create your website or mobile application in Nantes. Custom digital solutions for Nantes businesses, tailored to the local challenges of your sector.",
- "hero-title": "Web & Mobile Development in Nantes",
- "hero-description": "We help businesses in Nantes and the Pays de la Loire digitalize with custom web solutions, perfectly adapted to the specific challenges of the Loire Valley market.",
- "intro-text": "Historic capital of Brittany and innovative metropolis, Nantes is renowned for its economic dynamism and quality of life. Its flourishing digital ecosystem, creative industries and commitment to ecological transition make it a unique territory where digital innovation plays a central role.",
- "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to Nantes businesses, whether they are innovative startups, responsible economy players or traditional companies in transformation. We understand the specificities of the local market and offer digital solutions aligned with the values of innovation and sustainability specific to Nantes.",
+ "hero": {
+ "title": "Web & Mobile Development in Nantes",
+ "description": "We help businesses in Nantes and the Pays de la Loire digitalize with custom web solutions, perfectly adapted to the specific challenges of the Loire Valley market."
+ },
+ "intro": "Historic capital of Brittany and innovative metropolis, Nantes is renowned for its economic dynamism and quality of life. Its flourishing digital ecosystem, creative industries and commitment to ecological transition make it a unique territory where digital innovation plays a central role.",
+ "expertise": "Our team designs websites, applications and digital solutions perfectly adapted to Nantes businesses, whether they are innovative startups, responsible economy players or traditional companies in transformation. We understand the specificities of the local market and offer digital solutions aligned with the values of innovation and sustainability specific to Nantes.",
"why-choose-us": "Our in-depth knowledge of the Nantes market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the spirit of innovation and commitment to a more responsible economy that characterize Nantes, and integrate these values into each digital project we deliver.",
"key-business-sectors": {
"tech-digital": "Tech & Digital",
diff --git a/apps/web/src/locales/en/constants/agencies/nice.json b/apps/web/src/locales/en/constants/agencies/nice.json
index 80e9bc955..64e4a7dd8 100644
--- a/apps/web/src/locales/en/constants/agencies/nice.json
+++ b/apps/web/src/locales/en/constants/agencies/nice.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Nice | Digital Solutions for Côte d'Azur Businesses",
"description": "Create your website or mobile application in Nice. Custom digital solutions for Côte d'Azur businesses, tailored to the local challenges of your sector.",
- "hero-title": "Web & Mobile Development in Nice",
- "hero-description": "We help businesses in Nice and the French Riviera digitalize with custom web solutions, perfectly adapted to the specific challenges of the Azurean market.",
- "intro-text": "Between the Mediterranean Sea and the Alps, Nice benefits from international influence and a diversified economy where tourism meets innovation. Our digital expertise enables Nice businesses to stand out in a competitive environment where image and excellence are paramount.",
- "expertise-text": "Our team designs websites, applications and e-commerce solutions perfectly adapted to businesses in Nice and the French Riviera. We understand the high standards of your local market and offer digital solutions that enhance the premium positioning specific to the region.",
+ "hero": {
+ "title": "Web & Mobile Development in Nice",
+ "description": "We help businesses in Nice and the French Riviera digitalize with custom web solutions, perfectly adapted to the specific challenges of the Azurean market."
+ },
+ "intro": "Between the Mediterranean Sea and the Alps, Nice benefits from international influence and a diversified economy where tourism meets innovation. Our digital expertise enables Nice businesses to stand out in a competitive environment where image and excellence are paramount.",
+ "expertise": "Our team designs websites, applications and e-commerce solutions perfectly adapted to businesses in Nice and the French Riviera. We understand the high standards of your local market and offer digital solutions that enhance the premium positioning specific to the region.",
"why-choose-us": "Our in-depth knowledge of the Azurean market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the international dimension of Nice and its reputation for excellence, and integrate these aspects into each project to create refined and high-performing digital experiences.",
"key-business-sectors": {
"luxury-tourism": "Luxury Tourism",
diff --git a/apps/web/src/locales/en/constants/agencies/paris.json b/apps/web/src/locales/en/constants/agencies/paris.json
index 26635d937..0ece23c77 100644
--- a/apps/web/src/locales/en/constants/agencies/paris.json
+++ b/apps/web/src/locales/en/constants/agencies/paris.json
@@ -1,10 +1,12 @@
{
"title": "Web Agency in Paris | Web Development, Mobile & UI/UX Design",
"description": "Your digital partner in the heart of Paris. Web development, mobile and UI/UX design solutions to accelerate the growth of your Parisian business.",
- "hero-title": "Digital Development in the Capital",
- "hero-description": "Transform your digital presence with innovative solutions tailored to the competitive Parisian market and its dynamic ecosystem of startups, large corporations and innovative companies.",
- "intro-text": "At the heart of the French capital, our digital expertise meets the demands of the Parisian market with innovative web and mobile solutions. Between large corporations, luxury companies and fast-growing startups, Paris concentrates a dynamic digital ecosystem whose challenges and opportunities we fully understand.",
- "expertise-text": "We design premium digital experiences that meet the high standards of Parisian businesses. Our team masters the specific challenges of the capital, whether it's creating refined user interfaces for the luxury sector, high-performance applications for fintechs, or scalable solutions for fast-growing startups.",
+ "hero": {
+ "title": "Digital Development in the Capital",
+ "description": "Transform your digital presence with innovative solutions tailored to the competitive Parisian market and its dynamic ecosystem of startups, large corporations and innovative companies."
+ },
+ "intro": "At the heart of the French capital, our digital expertise meets the demands of the Parisian market with innovative web and mobile solutions. Between large corporations, luxury companies and fast-growing startups, Paris concentrates a dynamic digital ecosystem whose challenges and opportunities we fully understand.",
+ "expertise": "We design premium digital experiences that meet the high standards of Parisian businesses. Our team masters the specific challenges of the capital, whether it's creating refined user interfaces for the luxury sector, high-performance applications for fintechs, or scalable solutions for fast-growing startups.",
"why-choose-us": "Our in-depth knowledge of the Parisian market allows us to develop digital solutions perfectly aligned with the requirements of capital businesses. We combine technical innovation, creative excellence and business understanding to effectively support you in a highly competitive environment.",
"key-business-sectors": {
"startups-tech": "Tech Startups",
diff --git a/apps/web/src/locales/en/constants/agencies/rouen.json b/apps/web/src/locales/en/constants/agencies/rouen.json
index a94375776..622d31812 100644
--- a/apps/web/src/locales/en/constants/agencies/rouen.json
+++ b/apps/web/src/locales/en/constants/agencies/rouen.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Rouen | Digital Solutions for Normandy Businesses",
"description": "Create your website or mobile application in Rouen. Custom digital solutions for Normandy businesses, tailored to the local challenges of your sector.",
- "hero-title": "Web & Mobile Development in Rouen",
- "hero-description": "We help businesses in Rouen and Normandy digitalize with custom web solutions, perfectly adapted to the specific challenges of the Normandy market.",
- "intro-text": "The Normandy economic fabric presents specific digital challenges that we have learned to master. Between manufacturing industry, agri-food sector and river logistics, we create digital solutions that meet the precise needs of Rouen businesses.",
- "expertise-text": "Our team designs websites, applications and e-commerce solutions perfectly adapted to businesses in Rouen and its region. We understand the challenges of your market and offer digital solutions that help you stand out and grow your business.",
+ "hero": {
+ "title": "Web & Mobile Development in Rouen",
+ "description": "We help businesses in Rouen and Normandy digitalize with custom web solutions, perfectly adapted to the specific challenges of the Normandy market."
+ },
+ "intro": "The Normandy economic fabric presents specific digital challenges that we have learned to master. Between manufacturing industry, agri-food sector and river logistics, we create digital solutions that meet the precise needs of Rouen businesses.",
+ "expertise": "Our team designs websites, applications and e-commerce solutions perfectly adapted to businesses in Rouen and its region. We understand the challenges of your market and offer digital solutions that help you stand out and grow your business.",
"why-choose-us": "Our in-depth knowledge of the Normandy market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. Unlike Parisian agencies, we understand the subtleties of Rouen's economic fabric and provide custom solutions at an advantageous value for money.",
"key-business-sectors": {
"industry": "Industry",
diff --git a/apps/web/src/locales/en/constants/agencies/strasbourg.json b/apps/web/src/locales/en/constants/agencies/strasbourg.json
index e603d732c..063eaf012 100644
--- a/apps/web/src/locales/en/constants/agencies/strasbourg.json
+++ b/apps/web/src/locales/en/constants/agencies/strasbourg.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Strasbourg | Digital Solutions for Alsatian Businesses",
"description": "Create your website or mobile application in Strasbourg. Custom digital solutions for Alsatian businesses, tailored to local and cross-border challenges.",
- "hero-title": "Web & Mobile Development in Strasbourg",
- "hero-description": "We help businesses in Strasbourg and the Grand Est region digitalize with custom web solutions, perfectly adapted to the specific challenges of the Alsatian and European market.",
- "intro-text": "European capital and border city with rich heritage, Strasbourg combines Alsatian traditions and international openness. Its status as seat of European institutions, its dynamic industry and strategic position between France and Germany make it a unique territory where digital plays an essential bridging role.",
- "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to Strasbourg businesses, whether they are international organizations, industrial companies or local heritage players. We understand the specific challenges of your regional and cross-border market, and offer multilingual and culturally adapted digital solutions.",
+ "hero": {
+ "title": "Web & Mobile Development in Strasbourg",
+ "description": "We help businesses in Strasbourg and the Grand Est region digitalize with custom web solutions, perfectly adapted to the specific challenges of the Alsatian and European market."
+ },
+ "intro": "European capital and a border city with rich heritage, Strasbourg combines Alsatian traditions and international openness. Its status as seat of European institutions, its dynamic industry and strategic position between France and Germany make it a unique territory where digital plays an essential bridging role.",
+ "expertise": "Our team designs websites, applications and digital solutions perfectly adapted to Strasbourg businesses, whether they are international organizations, industrial companies or local heritage players. We understand the specific challenges of your regional and cross-border market, and offer multilingual and culturally adapted digital solutions.",
"why-choose-us": "Our in-depth knowledge of the Strasbourg market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the requirements of the European context and Alsatian cultural particularities, and integrate this dual dimension into each project to create relevant and high-performing digital experiences.",
"key-business-sectors": {
"european-institutions": "European Institutions",
diff --git a/apps/web/src/locales/en/constants/agencies/toulouse.json b/apps/web/src/locales/en/constants/agencies/toulouse.json
index 48171bb80..366afd057 100644
--- a/apps/web/src/locales/en/constants/agencies/toulouse.json
+++ b/apps/web/src/locales/en/constants/agencies/toulouse.json
@@ -1,10 +1,12 @@
{
"title": "Web Development in Toulouse | Digital Solutions for Occitan Businesses",
"description": "Create your website or mobile application in Toulouse. Custom digital solutions for Toulouse businesses, tailored to the local challenges of your sector.",
- "hero-title": "Web & Mobile Development in Toulouse",
- "hero-description": "We help businesses in Toulouse and Occitania digitalize with custom web solutions, perfectly adapted to the specific challenges of the Toulouse market.",
- "intro-text": "European aerospace capital and dynamic student city, Toulouse presents a unique economic ecosystem where innovation and tradition coexist. Our digital expertise enables Toulouse businesses to stand out in a competitive and constantly evolving technological environment.",
- "expertise-text": "Our team designs websites, applications and digital solutions perfectly adapted to Toulouse businesses, whether they are aerospace giants, innovative startups or traditional shops. We understand the specific challenges of your local market and offer cutting-edge technological solutions.",
+ "hero": {
+ "title": "Web & Mobile Development in Toulouse",
+ "description": "We help businesses in Toulouse and Occitania digitalize with custom web solutions, perfectly adapted to the specific challenges of the Toulouse market."
+ },
+ "intro": "European aerospace capital and dynamic student city, Toulouse presents a unique economic ecosystem where innovation and tradition coexist. Our digital expertise enables Toulouse businesses to stand out in a competitive and constantly evolving technological environment.",
+ "expertise": "Our team designs websites, applications and digital solutions perfectly adapted to Toulouse businesses, whether they are aerospace giants, innovative startups or traditional shops. We understand the specific challenges of your local market and offer cutting-edge technological solutions.",
"why-choose-us": "Our in-depth knowledge of the Toulouse market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the technological challenges of the Pink City and integrate this expertise into each project to create high-performing and future-oriented digital experiences.",
"key-business-sectors": {
"aeronautics": "Aeronautics",
diff --git a/apps/web/src/locales/fr/constants/agencies/lyon.json b/apps/web/src/locales/fr/constants/agencies/lyon.json
index 5918e1cc3..86a6258ea 100644
--- a/apps/web/src/locales/fr/constants/agencies/lyon.json
+++ b/apps/web/src/locales/fr/constants/agencies/lyon.json
@@ -1,10 +1,12 @@
{
"title": "Agence Web à Lyon | Solutions Digitales sur Mesure",
"description": "Développement web, mobile et design UI/UX à Lyon. Notre expertise digitale adaptée aux entreprises de Rhône-Alpes pour dynamiser votre présence en ligne.",
- "hero-title": "Développement Web & Mobile à Lyon",
- "hero-description": "Transformez votre entreprise lyonnaise avec des solutions digitales innovantes parfaitement adaptées au dynamisme économique de la région Auvergne-Rhône-Alpes.",
- "intro-text": "Implantée au cœur du dynamisme lyonnais, notre expertise digitale accompagne les entreprises de la région dans leur transformation numérique. Entre tradition industrielle, excellence biomédicale et rayonnement gastronomique, Lyon présente un tissu économique riche et diversifié dont nous comprenons parfaitement les enjeux.",
- "expertise-text": "Nous créons des solutions web, mobile et e-commerce adaptées aux spécificités du marché lyonnais et rhônalpin. Notre équipe maîtrise les défis numériques propres aux secteurs d'excellence de la région, des biotechnologies à la gastronomie, en passant par l'industrie manufacturière.",
+ "hero": {
+ "title": "Développement Web & Mobile à Lyon",
+ "description": "Transformez votre entreprise lyonnaise avec des solutions digitales innovantes parfaitement adaptées au dynamisme économique de la région Auvergne-Rhône-Alpes."
+ },
+ "intro": "Implantée au cœur du dynamisme lyonnais, notre expertise digitale accompagne les entreprises de la région dans leur transformation numérique. Entre tradition industrielle, excellence biomédicale et rayonnement gastronomique, Lyon présente un tissu économique riche et diversifié dont nous comprenons parfaitement les enjeux.",
+ "expertise": "Nous créons des solutions web, mobile et e-commerce adaptées aux spécificités du marché lyonnais et rhônalpin. Notre équipe maîtrise les défis numériques propres aux secteurs d'excellence de la région, des biotechnologies à la gastronomie, en passant par l'industrie manufacturière.",
"why-choose-us": "Notre connaissance du marché lyonnais nous permet de développer des solutions numériques parfaitement alignées avec les exigences et les particularités des entreprises locales. Nous comprenons les standards d'excellence de la région et proposons un accompagnement digital qui valorise l'identité et le savoir-faire lyonnais.",
"key-business-sectors": {
"biotech": "Biotechnologie",
diff --git a/apps/web/src/locales/fr/constants/agencies/marseille.json b/apps/web/src/locales/fr/constants/agencies/marseille.json
index 480add356..e44e1bec1 100644
--- a/apps/web/src/locales/fr/constants/agencies/marseille.json
+++ b/apps/web/src/locales/fr/constants/agencies/marseille.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Marseille | Solutions Digitales pour Entreprises Provençales",
"description": "Créez votre site web ou application mobile à Marseille. Solutions digitales sur mesure pour les entreprises provençales, adaptées aux enjeux locaux de votre secteur.",
- "hero-title": "Développement Web & Mobile à Marseille",
- "hero-description": "Nous aidons les entreprises de Marseille et de la région PACA à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché méditerranéen.",
- "intro-text": "Entre mer et collines, Marseille est un carrefour économique dynamique où tradition et innovation se rencontrent. Notre expertise digitale permet aux entreprises marseillaises de se démarquer dans un marché méditerranéen compétitif et en constante évolution.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises marseillaises. Nous comprenons les défis de votre marché local et vous proposons des solutions digitales qui valorisent votre identité provençale tout en touchant une clientèle internationale.",
+ "hero": {
+ "title": "Développement Web & Mobile à Marseille",
+ "description": "Nous aidons les entreprises de Marseille et de la région PACA à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché méditerranéen."
+ },
+ "intro": "Entre mer et collines, Marseille est un carrefour économique dynamique où tradition et innovation se rencontrent. Notre expertise digitale permet aux entreprises marseillaises de se démarquer dans un marché méditerranéen compétitif et en constante évolution.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises marseillaises. Nous comprenons les défis de votre marché local et vous proposons des solutions digitales qui valorisent votre identité provençale tout en touchant une clientèle internationale.",
"why-choose-us": "Notre connaissance approfondie du marché provençal nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons la richesse culturelle et économique de Marseille et l'intégrons dans chaque projet pour créer des expériences digitales authentiques et performantes.",
"key-business-sectors": {
"tourism": "Tourisme",
diff --git a/apps/web/src/locales/fr/constants/agencies/montpellier.json b/apps/web/src/locales/fr/constants/agencies/montpellier.json
index 4947393ee..ce5d7d4b8 100644
--- a/apps/web/src/locales/fr/constants/agencies/montpellier.json
+++ b/apps/web/src/locales/fr/constants/agencies/montpellier.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Montpellier | Solutions Digitales pour Entreprises Languedociennes",
"description": "Créez votre site web ou application mobile à Montpellier. Solutions digitales sur mesure pour les entreprises montpelliéraines, adaptées aux enjeux locaux de votre secteur.",
- "hero-title": "Développement Web & Mobile à Montpellier",
- "hero-description": "Nous aidons les entreprises de Montpellier et du Languedoc à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché régional.",
- "intro-text": "Ville dynamique à la croisée des influences méditerranéennes et languedociennes, Montpellier se distingue par son écosystème d'innovation en santé, ses universités prestigieuses et son art de vivre. Notre expertise digitale permet aux entreprises montpelliéraines de tirer parti de cette richesse et de se démarquer dans un environnement compétitif.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises de Montpellier et sa région. Nous comprenons les défis spécifiques de votre marché local, qu'il s'agisse du secteur de la santé, de l'éducation ou du terroir languedocien, et vous proposons des solutions numériques qui valorisent votre expertise et votre ancrage régional.",
+ "hero": {
+ "title": "Développement Web & Mobile à Montpellier",
+ "description": "Nous aidons les entreprises de Montpellier et du Languedoc à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché régional."
+ },
+ "intro": "Ville dynamique à la croisée des influences méditerranéennes et languedociennes, Montpellier se distingue par son écosystème d'innovation en santé, ses universités prestigieuses et son art de vivre. Notre expertise digitale permet aux entreprises montpelliéraines de tirer parti de cette richesse et de se démarquer dans un environnement compétitif.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises de Montpellier et sa région. Nous comprenons les défis spécifiques de votre marché local, qu'il s'agisse du secteur de la santé, de l'éducation ou du terroir languedocien, et vous proposons des solutions numériques qui valorisent votre expertise et votre ancrage régional.",
"why-choose-us": "Notre connaissance approfondie du marché montpelliérain nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons l'équilibre entre innovation et tradition qui caractérise Montpellier, et intégrons cette compréhension dans chaque projet pour créer des expériences digitales authentiques et performantes.",
"key-business-sectors": {
"health-biotech": "Santé & Biotechnologies",
diff --git a/apps/web/src/locales/fr/constants/agencies/nantes.json b/apps/web/src/locales/fr/constants/agencies/nantes.json
index 192aae10b..598653359 100644
--- a/apps/web/src/locales/fr/constants/agencies/nantes.json
+++ b/apps/web/src/locales/fr/constants/agencies/nantes.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Nantes | Solutions Digitales pour Entreprises Ligériennes",
"description": "Créez votre site web ou application mobile à Nantes. Solutions digitales sur mesure pour les entreprises nantaises, adaptées aux enjeux locaux de votre secteur.",
- "hero-title": "Développement Web & Mobile à Nantes",
- "hero-description": "Nous aidons les entreprises de Nantes et des Pays de la Loire à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché ligérien.",
- "intro-text": "Capitale historique de la Bretagne et métropole innovante, Nantes est reconnue pour son dynamisme économique et sa qualité de vie. Son écosystème numérique florissant, ses industries créatives et son engagement dans la transition écologique en font un territoire unique où l'innovation digitale joue un rôle central.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises nantaises, qu'elles soient des startups innovantes, des acteurs de l'économie responsable ou des entreprises traditionnelles en transformation. Nous comprenons les spécificités du marché local et vous proposons des solutions numériques alignées avec les valeurs d'innovation et de durabilité propres à Nantes.",
+ "hero": {
+ "title": "Développement Web & Mobile à Nantes",
+ "description": "Nous aidons les entreprises de Nantes et des Pays de la Loire à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché ligérien."
+ },
+ "intro": "Capitale historique de la Bretagne et métropole innovante, Nantes est reconnue pour son dynamisme économique et sa qualité de vie. Son écosystème numérique florissant, ses industries créatives et son engagement dans la transition écologique en font un territoire unique où l'innovation digitale joue un rôle central.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises nantaises, qu'elles soient des startups innovantes, des acteurs de l'économie responsable ou des entreprises traditionnelles en transformation. Nous comprenons les spécificités du marché local et vous proposons des solutions numériques alignées avec les valeurs d'innovation et de durabilité propres à Nantes.",
"why-choose-us": "Notre connaissance approfondie du marché nantais nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons l'esprit d'innovation et l'engagement pour une économie plus responsable qui caractérisent Nantes, et intégrons ces valeurs dans chaque projet digital que nous réalisons.",
"key-business-sectors": {
"tech-digital": "Tech & Numérique",
diff --git a/apps/web/src/locales/fr/constants/agencies/nice.json b/apps/web/src/locales/fr/constants/agencies/nice.json
index 9130a4c4e..c6ec39ffe 100644
--- a/apps/web/src/locales/fr/constants/agencies/nice.json
+++ b/apps/web/src/locales/fr/constants/agencies/nice.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Nice | Solutions Digitales pour Entreprises Azuréennes",
"description": "Créez votre site web ou application mobile à Nice. Solutions digitales sur mesure pour les entreprises de la Côte d'Azur, adaptées aux enjeux locaux de votre secteur.",
- "hero-title": "Développement Web & Mobile à Nice",
- "hero-description": "Nous aidons les entreprises de Nice et de la Côte d'Azur à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché azuréen.",
- "intro-text": "Entre mer Méditerranée et Alpes, Nice bénéficie d'un rayonnement international et d'une économie diversifiée où le tourisme côtoie l'innovation. Notre expertise digitale permet aux entreprises niçoises de se démarquer dans un environnement compétitif où l'image et l'excellence sont primordiales.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Nice et de la Côte d'Azur. Nous comprenons les exigences élevées de votre marché local et vous proposons des solutions digitales qui valorisent le positionnement premium propre à la région.",
+ "hero": {
+ "title": "Développement Web & Mobile à Nice",
+ "description": "Nous aidons les entreprises de Nice et de la Côte d'Azur à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché azuréen."
+ },
+ "intro": "Entre mer Méditerranée et Alpes, Nice bénéficie d'un rayonnement international et d'une économie diversifiée où le tourisme côtoie l'innovation. Notre expertise digitale permet aux entreprises niçoises de se démarquer dans un environnement compétitif où l'image et l'excellence sont primordiales.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Nice et de la Côte d'Azur. Nous comprenons les exigences élevées de votre marché local et vous proposons des solutions digitales qui valorisent le positionnement premium propre à la région.",
"why-choose-us": "Notre connaissance approfondie du marché azuréen nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons la dimension internationale de Nice et sa réputation d'excellence, et intégrons ces aspects dans chaque projet pour créer des expériences digitales raffinées et performantes.",
"key-business-sectors": {
"luxury-tourism": "Tourisme de luxe",
diff --git a/apps/web/src/locales/fr/constants/agencies/paris.json b/apps/web/src/locales/fr/constants/agencies/paris.json
index b15f645be..8e4b27a45 100644
--- a/apps/web/src/locales/fr/constants/agencies/paris.json
+++ b/apps/web/src/locales/fr/constants/agencies/paris.json
@@ -1,10 +1,12 @@
{
"title": "Agence Web à Paris | Développement Web, Mobile & Design UI/UX",
"description": "Votre partenaire digital au cœur de Paris. Solutions de développement web, mobile et design UI/UX pour accélérer la croissance de votre entreprise parisienne.",
- "hero-title": "Développement Digital dans la Capitale",
- "hero-description": "Transformez votre présence numérique avec des solutions innovantes adaptées au marché parisien compétitif et son écosystème dynamique de startups, grands groupes et entreprises innovantes.",
- "intro-text": "Au cœur de la capitale française, notre expertise digitale répond aux exigences du marché parisien avec des solutions web et mobile innovantes. Entre grands groupes, entreprises du luxe et startups en pleine croissance, Paris concentre un écosystème numérique dynamique dont nous comprenons parfaitement les enjeux et les opportunités.",
- "expertise-text": "Nous concevons des expériences digitales premium qui répondent aux standards élevés des entreprises parisiennes. Notre équipe maîtrise les défis spécifiques de la capitale, qu'il s'agisse de créer des interfaces utilisateur raffinées pour le secteur du luxe, des applications performantes pour les fintechs, ou des solutions évolutives pour les startups en hypercroissance.",
+ "hero": {
+ "title": "Développement Digital dans la Capitale",
+ "description": "Transformez votre présence numérique avec des solutions innovantes adaptées au marché parisien compétitif et son écosystème dynamique de startups, grands groupes et entreprises innovantes."
+ },
+ "intro": "Au cœur de la capitale française, notre expertise digitale répond aux exigences du marché parisien avec des solutions web et mobile innovantes. Entre grands groupes, entreprises du luxe et startups en pleine croissance, Paris concentre un écosystème numérique dynamique dont nous comprenons parfaitement les enjeux et les opportunités.",
+ "expertise": "Nous concevons des expériences digitales premium qui répondent aux standards élevés des entreprises parisiennes. Notre équipe maîtrise les défis spécifiques de la capitale, qu'il s'agisse de créer des interfaces utilisateur raffinées pour le secteur du luxe, des applications performantes pour les fintechs, ou des solutions évolutives pour les startups en hypercroissance.",
"why-choose-us": "Notre connaissance approfondie du marché parisien nous permet de développer des solutions digitales parfaitement alignées avec les exigences des entreprises de la capitale. Nous combinons innovation technique, excellence créative et compréhension business pour vous accompagner efficacement dans un environnement hautement compétitif.",
"key-business-sectors": {
"startups-tech": "Startups Tech",
diff --git a/apps/web/src/locales/fr/constants/agencies/rouen.json b/apps/web/src/locales/fr/constants/agencies/rouen.json
index b4ac1fcbd..2262896a8 100644
--- a/apps/web/src/locales/fr/constants/agencies/rouen.json
+++ b/apps/web/src/locales/fr/constants/agencies/rouen.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Rouen | Solutions Digitales pour Entreprises Normandes",
"description": "Créez votre site web ou application mobile à Rouen. Solutions digitales sur mesure pour les entreprises normandes, adaptées aux enjeux locaux de votre secteur.",
- "hero-title": "Développement Web & Mobile à Rouen",
- "hero-description": "Nous aidons les entreprises de Rouen et de Normandie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché normand.",
- "intro-text": "Le tissu économique normand présente des enjeux numériques spécifiques que nous avons appris à maîtriser. Entre l'industrie manufacturière, le secteur agroalimentaire et la logistique fluviale, nous créons des solutions digitales qui répondent aux besoins précis des entreprises rouennaises.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Rouen et sa région. Nous comprenons les défis de votre marché et vous proposons des solutions digitales qui vous aident à vous démarquer et à développer votre activité.",
+ "hero": {
+ "title": "Développement Web & Mobile à Rouen",
+ "description": "Nous aidons les entreprises de Rouen et de Normandie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché normand."
+ },
+ "intro": "Le tissu économique normand présente des enjeux numériques spécifiques que nous avons appris à maîtriser. Entre l'industrie manufacturière, le secteur agroalimentaire et la logistique fluviale, nous créons des solutions digitales qui répondent aux besoins précis des entreprises rouennaises.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions e-commerce parfaitement adaptés aux entreprises de Rouen et sa région. Nous comprenons les défis de votre marché et vous proposons des solutions digitales qui vous aident à vous démarquer et à développer votre activité.",
"why-choose-us": "Notre connaissance approfondie du marché normand nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Contrairement aux agences parisiennes, nous comprenons les subtilités du tissu économique de Rouen et apportons des solutions sur mesure à un rapport qualité-prix avantageux.",
"key-business-sectors": {
"industry": "Industrie",
diff --git a/apps/web/src/locales/fr/constants/agencies/strasbourg.json b/apps/web/src/locales/fr/constants/agencies/strasbourg.json
index 6ce9677fe..17d7f7165 100644
--- a/apps/web/src/locales/fr/constants/agencies/strasbourg.json
+++ b/apps/web/src/locales/fr/constants/agencies/strasbourg.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Strasbourg | Solutions Digitales pour Entreprises Alsaciennes",
"description": "Créez votre site web ou application mobile à Strasbourg. Solutions digitales sur mesure pour les entreprises alsaciennes, adaptées aux enjeux locaux et transfrontaliers.",
- "hero-title": "Développement Web & Mobile à Strasbourg",
- "hero-description": "Nous aidons les entreprises de Strasbourg et du Grand Est à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché alsacien et européen.",
- "intro-text": "Capitale européenne et ville frontalière au riche patrimoine, Strasbourg conjugue traditions alsaciennes et ouverture internationale. Son statut de siège d'institutions européennes, son industrie dynamique et sa position stratégique entre France et Allemagne en font un territoire unique où le digital joue un rôle essentiel de passerelle.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises strasbourgeoises, qu'elles soient des organisations internationales, des entreprises industrielles ou des acteurs du patrimoine local. Nous comprenons les défis spécifiques de votre marché régional et transfrontalier, et vous proposons des solutions numériques multilingues et culturellement adaptées.",
+ "hero": {
+ "title": "Développement Web & Mobile à Strasbourg",
+ "description": "Nous aidons les entreprises de Strasbourg et du Grand Est à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché alsacien et européen."
+ },
+ "intro": "Capitale européenne et ville frontalière au riche patrimoine, Strasbourg conjugue traditions alsaciennes et ouverture internationale. Son statut de siège d'institutions européennes, son industrie dynamique et sa position stratégique entre France et Allemagne en font un territoire unique où le digital joue un rôle essentiel de passerelle.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises strasbourgeoises, qu'elles soient des organisations internationales, des entreprises industrielles ou des acteurs du patrimoine local. Nous comprenons les défis spécifiques de votre marché régional et transfrontalier, et vous proposons des solutions numériques multilingues et culturellement adaptées.",
"why-choose-us": "Notre connaissance approfondie du marché strasbourgeois nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons les exigences du contexte européen et les particularités culturelles alsaciennes, et intégrons cette double dimension dans chaque projet pour créer des expériences digitales pertinentes et performantes.",
"key-business-sectors": {
"european-institutions": "Institutions européennes",
diff --git a/apps/web/src/locales/fr/constants/agencies/toulouse.json b/apps/web/src/locales/fr/constants/agencies/toulouse.json
index 747faf70f..a16243b4f 100644
--- a/apps/web/src/locales/fr/constants/agencies/toulouse.json
+++ b/apps/web/src/locales/fr/constants/agencies/toulouse.json
@@ -1,10 +1,12 @@
{
"title": "Développement Web à Toulouse | Solutions Digitales pour Entreprises Occitanes",
"description": "Créez votre site web ou application mobile à Toulouse. Solutions digitales sur mesure pour les entreprises toulousaines, adaptées aux enjeux locaux de votre secteur.",
- "hero-title": "Développement Web & Mobile à Toulouse",
- "hero-description": "Nous aidons les entreprises de Toulouse et de l'Occitanie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché toulousain.",
- "intro-text": "Capitale européenne de l'aéronautique et ville étudiante dynamique, Toulouse présente un écosystème économique unique où innovation et tradition se côtoient. Notre expertise digitale permet aux entreprises toulousaines de se démarquer dans un environnement compétitif en constante évolution technologique.",
- "expertise-text": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises toulousaines, qu'elles soient des géants de l'aéronautique, des startups innovantes ou des commerces traditionnels. Nous comprenons les défis spécifiques de votre marché local et vous proposons des solutions technologiques de pointe.",
+ "hero": {
+ "title": "Développement Web & Mobile à Toulouse",
+ "description": "Nous aidons les entreprises de Toulouse et de l'Occitanie à se digitaliser avec des solutions web sur mesure, parfaitement adaptées aux enjeux spécifiques du marché toulousain."
+ },
+ "intro": "Capitale européenne de l'aéronautique et ville étudiante dynamique, Toulouse présente un écosystème économique unique où innovation et tradition se côtoient. Notre expertise digitale permet aux entreprises toulousaines de se démarquer dans un environnement compétitif en constante évolution technologique.",
+ "expertise": "Notre équipe conçoit des sites web, applications et solutions digitales parfaitement adaptés aux entreprises toulousaines, qu'elles soient des géants de l'aéronautique, des startups innovantes ou des commerces traditionnels. Nous comprenons les défis spécifiques de votre marché local et vous proposons des solutions technologiques de pointe.",
"why-choose-us": "Notre connaissance approfondie du marché toulousain nous permet de développer des solutions numériques parfaitement adaptées aux défis spécifiques des entreprises locales. Nous comprenons les enjeux technologiques de la Ville Rose et intégrons cette expertise dans chaque projet pour créer des expériences digitales performantes et tournées vers le futur.",
"key-business-sectors": {
"aeronautics": "Aéronautique",
From 752b9945acaa15990e278eb04a16ea8775e5d6b5 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 15:41:33 +0100
Subject: [PATCH 56/64] =?UTF-8?q?=F0=9F=8C=90=20remove=20contact-info=20se?=
=?UTF-8?q?ctions=20from=20agency=20localization=20files=20for=20cleaner?=
=?UTF-8?q?=20structure?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/locales/en/constants/agencies/lyon.json | 6 ------
apps/web/src/locales/en/constants/agencies/marseille.json | 6 ------
.../src/locales/en/constants/agencies/montpellier.json | 6 ------
apps/web/src/locales/en/constants/agencies/nantes.json | 8 +-------
apps/web/src/locales/en/constants/agencies/nice.json | 6 ------
apps/web/src/locales/en/constants/agencies/paris.json | 6 ------
apps/web/src/locales/en/constants/agencies/rouen.json | 6 ------
.../web/src/locales/en/constants/agencies/strasbourg.json | 6 ------
apps/web/src/locales/en/constants/agencies/toulouse.json | 6 ------
apps/web/src/locales/fr/constants/agencies/lyon.json | 6 ------
apps/web/src/locales/fr/constants/agencies/marseille.json | 6 ------
.../src/locales/fr/constants/agencies/montpellier.json | 6 ------
apps/web/src/locales/fr/constants/agencies/nantes.json | 6 ------
apps/web/src/locales/fr/constants/agencies/nice.json | 6 ------
apps/web/src/locales/fr/constants/agencies/paris.json | 6 ------
apps/web/src/locales/fr/constants/agencies/rouen.json | 6 ------
.../web/src/locales/fr/constants/agencies/strasbourg.json | 6 ------
apps/web/src/locales/fr/constants/agencies/toulouse.json | 6 ------
18 files changed, 1 insertion(+), 109 deletions(-)
diff --git a/apps/web/src/locales/en/constants/agencies/lyon.json b/apps/web/src/locales/en/constants/agencies/lyon.json
index 0e9f6cd04..89d6660fd 100644
--- a/apps/web/src/locales/en/constants/agencies/lyon.json
+++ b/apps/web/src/locales/en/constants/agencies/lyon.json
@@ -62,12 +62,6 @@
"description": "Control tools and IoT solutions for Rhône-Alpes industry."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Lyon"
- }
- },
"stats": {
"biotech-projects": {
"label": "Biotech Projects",
diff --git a/apps/web/src/locales/en/constants/agencies/marseille.json b/apps/web/src/locales/en/constants/agencies/marseille.json
index 2b1623c6f..ccea7b3d9 100644
--- a/apps/web/src/locales/en/constants/agencies/marseille.json
+++ b/apps/web/src/locales/en/constants/agencies/marseille.json
@@ -62,12 +62,6 @@
"description": "Mobile solutions to enrich the tourism and commercial experience."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Marseille"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/en/constants/agencies/montpellier.json b/apps/web/src/locales/en/constants/agencies/montpellier.json
index 2b5e298f3..81c475165 100644
--- a/apps/web/src/locales/en/constants/agencies/montpellier.json
+++ b/apps/web/src/locales/en/constants/agencies/montpellier.json
@@ -62,12 +62,6 @@
"description": "Online stores for local producers and wine estates."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Montpellier"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/en/constants/agencies/nantes.json b/apps/web/src/locales/en/constants/agencies/nantes.json
index 135d0af90..406b31a6f 100644
--- a/apps/web/src/locales/en/constants/agencies/nantes.json
+++ b/apps/web/src/locales/en/constants/agencies/nantes.json
@@ -5,7 +5,7 @@
"title": "Web & Mobile Development in Nantes",
"description": "We help businesses in Nantes and the Pays de la Loire digitalize with custom web solutions, perfectly adapted to the specific challenges of the Loire Valley market."
},
- "intro": "Historic capital of Brittany and innovative metropolis, Nantes is renowned for its economic dynamism and quality of life. Its flourishing digital ecosystem, creative industries and commitment to ecological transition make it a unique territory where digital innovation plays a central role.",
+ "intro": "A historic capital of Brittany and an innovative metropolis, Nantes is renowned for its economic dynamism and quality of life. Its flourishing digital ecosystem, creative industries and commitment to ecological transition make it a unique territory where digital innovation plays a central role.",
"expertise": "Our team designs websites, applications and digital solutions perfectly adapted to Nantes businesses, whether they are innovative startups, responsible economy players or traditional companies in transformation. We understand the specificities of the local market and offer digital solutions aligned with the values of innovation and sustainability specific to Nantes.",
"why-choose-us": "Our in-depth knowledge of the Nantes market allows us to develop digital solutions perfectly adapted to the specific challenges of local businesses. We understand the spirit of innovation and commitment to a more responsible economy that characterize Nantes, and integrate these values into each digital project we deliver.",
"key-business-sectors": {
@@ -62,12 +62,6 @@
"description": "Custom solutions for traditional industries in transformation."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Nantes"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/en/constants/agencies/nice.json b/apps/web/src/locales/en/constants/agencies/nice.json
index 64e4a7dd8..248f23c75 100644
--- a/apps/web/src/locales/en/constants/agencies/nice.json
+++ b/apps/web/src/locales/en/constants/agencies/nice.json
@@ -62,12 +62,6 @@
"description": "Elegant and refined UI/UX design for prestigious brands and establishments."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Nice"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/en/constants/agencies/paris.json b/apps/web/src/locales/en/constants/agencies/paris.json
index 0ece23c77..bb64febe0 100644
--- a/apps/web/src/locales/en/constants/agencies/paris.json
+++ b/apps/web/src/locales/en/constants/agencies/paris.json
@@ -63,12 +63,6 @@
"description": "Modern and differentiating user interfaces to stand out in Paris."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Meetings in Paris"
- }
- },
"stats": {
"startups": {
"label": "Startups",
diff --git a/apps/web/src/locales/en/constants/agencies/rouen.json b/apps/web/src/locales/en/constants/agencies/rouen.json
index 622d31812..a2ce493c8 100644
--- a/apps/web/src/locales/en/constants/agencies/rouen.json
+++ b/apps/web/src/locales/en/constants/agencies/rouen.json
@@ -62,12 +62,6 @@
"description": "Custom software for regional industry and logistics."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Rouen"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/en/constants/agencies/strasbourg.json b/apps/web/src/locales/en/constants/agencies/strasbourg.json
index 063eaf012..703ef2025 100644
--- a/apps/web/src/locales/en/constants/agencies/strasbourg.json
+++ b/apps/web/src/locales/en/constants/agencies/strasbourg.json
@@ -62,12 +62,6 @@
"description": "Custom digital tools to modernize industrial processes."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Strasbourg"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/en/constants/agencies/toulouse.json b/apps/web/src/locales/en/constants/agencies/toulouse.json
index 366afd057..8c48d8d37 100644
--- a/apps/web/src/locales/en/constants/agencies/toulouse.json
+++ b/apps/web/src/locales/en/constants/agencies/toulouse.json
@@ -62,12 +62,6 @@
"description": "Complete solutions for local shops looking to digitalize."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Video conference",
- "in-person": "Occasional meetings in Toulouse"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/lyon.json b/apps/web/src/locales/fr/constants/agencies/lyon.json
index 86a6258ea..12a13dafe 100644
--- a/apps/web/src/locales/fr/constants/agencies/lyon.json
+++ b/apps/web/src/locales/fr/constants/agencies/lyon.json
@@ -62,12 +62,6 @@
"description": "Outils de pilotage et solutions IoT pour l'industrie rhônalpine."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Lyon"
- }
- },
"stats": {
"biotech-projects": {
"label": "Projets biotech",
diff --git a/apps/web/src/locales/fr/constants/agencies/marseille.json b/apps/web/src/locales/fr/constants/agencies/marseille.json
index e44e1bec1..651566eab 100644
--- a/apps/web/src/locales/fr/constants/agencies/marseille.json
+++ b/apps/web/src/locales/fr/constants/agencies/marseille.json
@@ -62,12 +62,6 @@
"description": "Solutions mobiles pour enrichir l'expérience touristique et commerciale."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Marseille"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/montpellier.json b/apps/web/src/locales/fr/constants/agencies/montpellier.json
index ce5d7d4b8..2568fe3c2 100644
--- a/apps/web/src/locales/fr/constants/agencies/montpellier.json
+++ b/apps/web/src/locales/fr/constants/agencies/montpellier.json
@@ -62,12 +62,6 @@
"description": "Boutiques en ligne pour producteurs locaux et domaines viticoles."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Montpellier"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/nantes.json b/apps/web/src/locales/fr/constants/agencies/nantes.json
index 598653359..3aea9043b 100644
--- a/apps/web/src/locales/fr/constants/agencies/nantes.json
+++ b/apps/web/src/locales/fr/constants/agencies/nantes.json
@@ -62,12 +62,6 @@
"description": "Solutions sur mesure pour industries traditionnelles en transformation."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Nantes"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/nice.json b/apps/web/src/locales/fr/constants/agencies/nice.json
index c6ec39ffe..3d4529d3e 100644
--- a/apps/web/src/locales/fr/constants/agencies/nice.json
+++ b/apps/web/src/locales/fr/constants/agencies/nice.json
@@ -62,12 +62,6 @@
"description": "Design UI/UX élégant et soigné pour marques et établissements prestigieux."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Nice"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/paris.json b/apps/web/src/locales/fr/constants/agencies/paris.json
index 8e4b27a45..be08ae113 100644
--- a/apps/web/src/locales/fr/constants/agencies/paris.json
+++ b/apps/web/src/locales/fr/constants/agencies/paris.json
@@ -63,12 +63,6 @@
"description": "Interfaces utilisateur modernes et différenciantes pour se démarquer à Paris."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Rencontres à Paris"
- }
- },
"stats": {
"startups": {
"label": "Startups",
diff --git a/apps/web/src/locales/fr/constants/agencies/rouen.json b/apps/web/src/locales/fr/constants/agencies/rouen.json
index 2262896a8..b89aeb7ee 100644
--- a/apps/web/src/locales/fr/constants/agencies/rouen.json
+++ b/apps/web/src/locales/fr/constants/agencies/rouen.json
@@ -62,12 +62,6 @@
"description": "Logiciels sur mesure pour l'industrie et la logistique régionale."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Rouen"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/strasbourg.json b/apps/web/src/locales/fr/constants/agencies/strasbourg.json
index 17d7f7165..2ef8d7c61 100644
--- a/apps/web/src/locales/fr/constants/agencies/strasbourg.json
+++ b/apps/web/src/locales/fr/constants/agencies/strasbourg.json
@@ -62,12 +62,6 @@
"description": "Outils numériques sur mesure pour moderniser les process industriels."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Strasbourg"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
diff --git a/apps/web/src/locales/fr/constants/agencies/toulouse.json b/apps/web/src/locales/fr/constants/agencies/toulouse.json
index a16243b4f..f3c769f2b 100644
--- a/apps/web/src/locales/fr/constants/agencies/toulouse.json
+++ b/apps/web/src/locales/fr/constants/agencies/toulouse.json
@@ -62,12 +62,6 @@
"description": "Solutions complètes pour les commerces locaux souhaitant se digitaliser."
}
},
- "contact-info": {
- "meeting-options": {
- "video-conference": "Visioconférence",
- "in-person": "Déplacements occasionnels à Toulouse"
- }
- },
"stats": {
"expertise": {
"label": "Expertise",
From 42ce2fd1b93e740fbbbb248dd0e5a9836c45159d Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 20:40:56 +0100
Subject: [PATCH 57/64] =?UTF-8?q?=F0=9F=8C=90=20add=20services=20translati?=
=?UTF-8?q?ons?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../services/[category]/[service]/page.tsx | 150 ++--
.../app/[locale]/services/[category]/page.tsx | 19 +-
apps/web/src/app/[locale]/services/page.tsx | 5 +-
.../src/components/marketing/navbar/index.tsx | 90 ++-
.../navbar/navigation/services/index.tsx | 164 ++---
.../marketing/services/faq-section.tsx | 65 +-
.../marketing/services/feature-section.tsx | 197 +++--
.../marketing/services/service-layout.tsx | 46 +-
.../marketing/services/service-overview.tsx | 322 ++++++---
.../services/testimonials-section.tsx | 100 ++-
apps/web/src/constants/services/backend.ts | 572 +++------------
apps/web/src/constants/services/design.ts | 574 +++------------
apps/web/src/constants/services/frontend.ts | 484 +++----------
.../web/src/constants/services/integration.ts | 675 ++++--------------
.../services/[category]/[service]/page.json | 28 +
.../web/src/locales/en/app/services/page.json | 13 +
.../marketing/services/service-layout.json | 28 +
.../marketing/services/service-overview.json | 29 +
.../en/constants/services/backend.json | 56 ++
.../en/constants/services/backend/api.json | 80 +++
.../en/constants/services/backend/bots.json | 80 +++
.../en/constants/services/backend/cloud.json | 80 +++
.../constants/services/backend/database.json | 80 +++
.../services/backend/microservices.json | 80 +++
.../locales/en/constants/services/design.json | 56 ++
.../en/constants/services/design/audit.json | 80 +++
.../constants/services/design/branding.json | 80 +++
.../constants/services/design/moodboard.json | 80 +++
.../en/constants/services/design/ui.json | 80 +++
.../constants/services/design/wireframes.json | 80 +++
.../en/constants/services/frontend.json | 56 ++
.../constants/services/frontend/desktop.json | 80 +++
.../constants/services/frontend/mobile.json | 80 +++
.../en/constants/services/frontend/pwa.json | 80 +++
.../en/constants/services/frontend/web.json | 80 +++
.../en/constants/services/integration.json | 56 ++
.../services/integration/prestashop.json | 80 +++
.../services/integration/shopify.json | 80 +++
.../services/integration/squarespace.json | 80 +++
.../services/integration/strapi.json | 80 +++
.../services/integration/webflow.json | 80 +++
.../services/integration/wordpress.json | 80 +++
.../services/[category]/[service]/page.json | 28 +
.../web/src/locales/fr/app/services/page.json | 13 +
.../marketing/services/service-layout.json | 28 +
.../marketing/services/service-overview.json | 29 +
.../fr/constants/services/backend.json | 56 ++
.../fr/constants/services/backend/api.json | 80 +++
.../fr/constants/services/backend/bots.json | 80 +++
.../fr/constants/services/backend/cloud.json | 80 +++
.../constants/services/backend/database.json | 80 +++
.../services/backend/microservices.json | 80 +++
.../locales/fr/constants/services/design.json | 56 ++
.../fr/constants/services/design/audit.json | 80 +++
.../constants/services/design/branding.json | 80 +++
.../constants/services/design/moodboard.json | 80 +++
.../fr/constants/services/design/ui.json | 80 +++
.../constants/services/design/wireframes.json | 80 +++
.../fr/constants/services/frontend.json | 56 ++
.../constants/services/frontend/desktop.json | 80 +++
.../constants/services/frontend/mobile.json | 80 +++
.../fr/constants/services/frontend/pwa.json | 80 +++
.../fr/constants/services/frontend/web.json | 80 +++
.../fr/constants/services/integration.json | 56 ++
.../services/integration/prestashop.json | 80 +++
.../services/integration/shopify.json | 80 +++
.../services/integration/squarespace.json | 80 +++
.../services/integration/strapi.json | 80 +++
.../services/integration/webflow.json | 80 +++
.../services/integration/wordpress.json | 80 +++
apps/web/src/proxy.ts | 8 +-
.../src/screens/marketing/services/index.tsx | 149 ++--
apps/web/src/types/service.ts | 24 +-
examples/translations/next-app/proxy.ts | 8 +-
packages/translations/README.md | 8 +-
.../src/next/contexts/app-context.tsx | 3 +-
76 files changed, 5132 insertions(+), 2375 deletions(-)
create mode 100644 apps/web/src/locales/en/app/services/[category]/[service]/page.json
create mode 100644 apps/web/src/locales/en/components/marketing/services/service-layout.json
create mode 100644 apps/web/src/locales/en/components/marketing/services/service-overview.json
create mode 100644 apps/web/src/locales/en/constants/services/backend.json
create mode 100644 apps/web/src/locales/en/constants/services/backend/api.json
create mode 100644 apps/web/src/locales/en/constants/services/backend/bots.json
create mode 100644 apps/web/src/locales/en/constants/services/backend/cloud.json
create mode 100644 apps/web/src/locales/en/constants/services/backend/database.json
create mode 100644 apps/web/src/locales/en/constants/services/backend/microservices.json
create mode 100644 apps/web/src/locales/en/constants/services/design.json
create mode 100644 apps/web/src/locales/en/constants/services/design/audit.json
create mode 100644 apps/web/src/locales/en/constants/services/design/branding.json
create mode 100644 apps/web/src/locales/en/constants/services/design/moodboard.json
create mode 100644 apps/web/src/locales/en/constants/services/design/ui.json
create mode 100644 apps/web/src/locales/en/constants/services/design/wireframes.json
create mode 100644 apps/web/src/locales/en/constants/services/frontend.json
create mode 100644 apps/web/src/locales/en/constants/services/frontend/desktop.json
create mode 100644 apps/web/src/locales/en/constants/services/frontend/mobile.json
create mode 100644 apps/web/src/locales/en/constants/services/frontend/pwa.json
create mode 100644 apps/web/src/locales/en/constants/services/frontend/web.json
create mode 100644 apps/web/src/locales/en/constants/services/integration.json
create mode 100644 apps/web/src/locales/en/constants/services/integration/prestashop.json
create mode 100644 apps/web/src/locales/en/constants/services/integration/shopify.json
create mode 100644 apps/web/src/locales/en/constants/services/integration/squarespace.json
create mode 100644 apps/web/src/locales/en/constants/services/integration/strapi.json
create mode 100644 apps/web/src/locales/en/constants/services/integration/webflow.json
create mode 100644 apps/web/src/locales/en/constants/services/integration/wordpress.json
create mode 100644 apps/web/src/locales/fr/app/services/[category]/[service]/page.json
create mode 100644 apps/web/src/locales/fr/components/marketing/services/service-layout.json
create mode 100644 apps/web/src/locales/fr/components/marketing/services/service-overview.json
create mode 100644 apps/web/src/locales/fr/constants/services/backend.json
create mode 100644 apps/web/src/locales/fr/constants/services/backend/api.json
create mode 100644 apps/web/src/locales/fr/constants/services/backend/bots.json
create mode 100644 apps/web/src/locales/fr/constants/services/backend/cloud.json
create mode 100644 apps/web/src/locales/fr/constants/services/backend/database.json
create mode 100644 apps/web/src/locales/fr/constants/services/backend/microservices.json
create mode 100644 apps/web/src/locales/fr/constants/services/design.json
create mode 100644 apps/web/src/locales/fr/constants/services/design/audit.json
create mode 100644 apps/web/src/locales/fr/constants/services/design/branding.json
create mode 100644 apps/web/src/locales/fr/constants/services/design/moodboard.json
create mode 100644 apps/web/src/locales/fr/constants/services/design/ui.json
create mode 100644 apps/web/src/locales/fr/constants/services/design/wireframes.json
create mode 100644 apps/web/src/locales/fr/constants/services/frontend.json
create mode 100644 apps/web/src/locales/fr/constants/services/frontend/desktop.json
create mode 100644 apps/web/src/locales/fr/constants/services/frontend/mobile.json
create mode 100644 apps/web/src/locales/fr/constants/services/frontend/pwa.json
create mode 100644 apps/web/src/locales/fr/constants/services/frontend/web.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration/prestashop.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration/shopify.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration/squarespace.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration/strapi.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration/webflow.json
create mode 100644 apps/web/src/locales/fr/constants/services/integration/wordpress.json
diff --git a/apps/web/src/app/[locale]/services/[category]/[service]/page.tsx b/apps/web/src/app/[locale]/services/[category]/[service]/page.tsx
index f8bf6f5f5..fa5bec5eb 100644
--- a/apps/web/src/app/[locale]/services/[category]/[service]/page.tsx
+++ b/apps/web/src/app/[locale]/services/[category]/[service]/page.tsx
@@ -1,12 +1,11 @@
-import React from 'react';
-import { notFound } from 'next/navigation';
-import Services from '@/constants/services';
-import ServiceLayout from '@/components/marketing/services/service-layout';
-import FeatureSection from '@/components/marketing/services/feature-section';
-import TestimonialsSection from '@/components/marketing/services/testimonials-section';
-import FAQSection from '@/components/marketing/services/faq-section';
-import { ServiceCategoryData, SubService } from '@/types/service';
-import { constructMetadata } from '@/lib/utils/metadata.server';
+import { notFound } from "next/navigation";
+import Services from "@/constants/services";
+import ServiceLayout from "@/components/marketing/services/service-layout";
+import FeatureSection from "@/components/marketing/services/feature-section";
+import TestimonialsSection from "@/components/marketing/services/testimonials-section";
+import FAQSection from "@/components/marketing/services/faq-section";
+import { constructMetadata } from "@/lib/utils/metadata.server";
+import { getTranslation } from "@/lib/translations.server";
type Props = {
params: Promise<{
@@ -15,10 +14,9 @@ type Props = {
}>;
};
-function findService(category: string, service: string): { categoryData: ServiceCategoryData | undefined, subService: SubService | undefined } {
- const categoryData = Services.find(s => s.id === category);
- const subService = categoryData?.subServices.find(sub => sub.id === service);
-
+function findService(category: string, service: string) {
+ const categoryData = Services.find((s) => s.id === category);
+ const subService = categoryData?.subServices.find((sub) => sub.id === service);
return { categoryData, subService };
}
@@ -27,16 +25,24 @@ export async function generateMetadata({ params }: Props) {
const { categoryData, subService } = findService(category, service);
if (!categoryData || !subService) {
+ const { t: tPage } = await getTranslation("app/services/[category]/[service]/page");
return constructMetadata({
- title: "Service non trouvé",
- description: "Ce service n'existe pas.",
+ title: tPage("metadata.not-found.title"),
+ description: tPage("metadata.not-found.description"),
noIndex: true,
});
}
+ const { t: tCategory } = await getTranslation(`constants/services/${category}`);
+ const { t: tService } = await getTranslation(`constants/services/${category}/${service}`);
+
+ const categoryName = tCategory("name");
+ const serviceName = tService("name");
+ const serviceDescription = tService("description");
+
return constructMetadata({
- title: `${subService.name} | ${categoryData.name}`,
- description: subService.description,
+ title: `${serviceName} | ${categoryName}`,
+ description: serviceDescription,
});
}
@@ -47,70 +53,78 @@ export default async function ServicePage({ params }: Props) {
if (!categoryData || !subService) {
notFound();
}
-
+
+ const { t: tCategory } = await getTranslation(`constants/services/${category}`);
+ const { t: tService } = await getTranslation(`constants/services/${category}/${service}`);
+ const { t: tPage } = await getTranslation("app/services/[category]/[service]/page");
+
+ const categoryName = tCategory("name");
+ const serviceName = tService("name");
+ const serviceNameLower = serviceName.toLowerCase();
+ const serviceDescription = tService("description");
+ const heroTitle = tService("hero.title");
+ const heroDescription = tService("hero.description");
+
return (
-
- {subService.features && subService.features.length > 0 && (
-
- )}
-
- {subService.benefits && subService.benefits.length > 0 && (
-
- )}
-
- {subService.testimonials && subService.testimonials.length > 0 && (
-
- )}
-
- {subService.faqItems && subService.faqItems.length > 0 && (
-
- )}
-
- {subService.complementaryServices && subService.complementaryServices.length > 0 && (
-
- )}
+
+
+
+
+
+
+
+
+
);
}
export async function generateStaticParams() {
const paths: { category: string; service: string }[] = [];
-
- Services.forEach(category => {
- category.subServices.forEach(service => {
+
+ Services.forEach((category) => {
+ category.subServices.forEach((service) => {
paths.push({
category: category.id,
service: service.id,
});
});
});
-
+
return paths;
-}
\ No newline at end of file
+}
diff --git a/apps/web/src/app/[locale]/services/[category]/page.tsx b/apps/web/src/app/[locale]/services/[category]/page.tsx
index 641e3e382..b9942328c 100644
--- a/apps/web/src/app/[locale]/services/[category]/page.tsx
+++ b/apps/web/src/app/[locale]/services/[category]/page.tsx
@@ -1,7 +1,6 @@
import { notFound } from 'next/navigation';
import Services from '@/constants/services';
import ServiceOverviewPage from '@/components/marketing/services/service-overview';
-import { ServiceCategoryData } from '@/types/service';
import { constructMetadata } from '@/lib/utils/metadata.server';
import { getTranslation } from '@/lib/translations.server';
@@ -24,26 +23,30 @@ export async function generateMetadata({ params }: Props) {
});
}
+ const { t } = await getTranslation(`constants/services/${category}`);
+
return constructMetadata({
- title: `${categoryData.name}`,
- description: categoryData.description,
+ title: t('name'),
+ description: t('description'),
});
}
export default async function CategoryPage({ params }: Props) {
const { category } = await params;
- const categoryData = Services.find(service => service.id === category) as ServiceCategoryData;
+ const categoryData = Services.find(service => service.id === category);
if (!categoryData) {
notFound();
}
-
+
+ const { t } = await getTranslation(`constants/services/${category}`);
+
return (
);
}
diff --git a/apps/web/src/app/[locale]/services/page.tsx b/apps/web/src/app/[locale]/services/page.tsx
index abdf7510b..4a8e48207 100644
--- a/apps/web/src/app/[locale]/services/page.tsx
+++ b/apps/web/src/app/[locale]/services/page.tsx
@@ -1,6 +1,7 @@
import { constructMetadata } from "@/lib/utils/metadata.server";
import { getTranslation } from "@/lib/translations.server";
import ServicesPage from "@/screens/marketing/services";
+import Services from "@/constants/services";
export async function generateMetadata() {
const { t } = await getTranslation("app/services/page");
@@ -11,4 +12,6 @@ export async function generateMetadata() {
});
}
-export default ServicesPage;
+export default async function Page() {
+ return ;
+}
diff --git a/apps/web/src/components/marketing/navbar/index.tsx b/apps/web/src/components/marketing/navbar/index.tsx
index 3e540146d..dbeac3cf2 100644
--- a/apps/web/src/components/marketing/navbar/index.tsx
+++ b/apps/web/src/components/marketing/navbar/index.tsx
@@ -14,9 +14,59 @@ import Projects from "@/constants/projects";
import { getMajorAgencies } from "@/constants/agencies";
import { OnRuntimeWordMark } from "@/logos/components";
import { cn } from "@/lib/utils";
+import { ServiceCategoryData, SubService } from "@/types/service";
import Navigation from "./navigation";
+// Mobile menu components for services
+const MobileSubServiceLink: React.FC<{
+ categoryId: string;
+ subService: SubService;
+ onClose: () => void;
+}> = ({ categoryId, subService, onClose }) => {
+ const { t } = useTranslation(`constants/services/${categoryId}/${subService.id}`);
+
+ return (
+
+ {t("name")}
+
+ );
+};
+
+const MobileServiceCategory: React.FC<{
+ service: ServiceCategoryData;
+ onClose: () => void;
+}> = ({ service, onClose }) => {
+ const { t } = useTranslation(`constants/services/${service.id}`);
+
+ return (
+
- Une expertise pointue en {service.name.charAt(0).toLowerCase() + service.name.slice(1)}
+ {t("expertise.title", { service: name })}
- Nous combinons créativité et expertise technique pour offrir des solutions {service.name.charAt(0).toLowerCase() + service.name.slice(1)} qui répondent parfaitement à vos objectifs. Notre approche méthodique et notre expérience nous permettent de créer des solutions durables et évolutives.
+ {t("expertise.description", { service: name })}
- Solutions {service.name.charAt(0).toLowerCase() + service.name.slice(1)} sur mesure
+ {t("services.title", { service: name })}
- Découvrez notre gamme complète de services {service.name.charAt(0).toLowerCase() + service.name.slice(1)}, conçue pour répondre à tous vos besoins et vous accompagner dans la réalisation de vos projets.
+ {t("services.description", { service: name })}
);
};
-export default TestimonialsSection;
\ No newline at end of file
+export default TestimonialsSection;
diff --git a/apps/web/src/constants/services/backend.ts b/apps/web/src/constants/services/backend.ts
index 14305b2ec..ac1add4e6 100644
--- a/apps/web/src/constants/services/backend.ts
+++ b/apps/web/src/constants/services/backend.ts
@@ -1,8 +1,8 @@
-import {
- Server,
- Database,
- Shield,
- Scale,
+import {
+ Server,
+ Database,
+ Shield,
+ Scale,
Cloud,
Code,
FileJson,
@@ -29,541 +29,189 @@ import {
Command,
Search,
Share2,
- History
+ History,
} from "lucide-react";
-import { ServiceBenefit, ServiceCategoryData, ServiceCategory, ServiceProcessStep } from "@/types/service";
+import {
+ ServiceBenefit,
+ ServiceCategoryData,
+ ServiceCategory,
+ ServiceProcessStep,
+} from "@/types/service";
import Routes from "@/constants/routes";
const backendBenefits: ServiceBenefit[] = [
- {
- title: "Architecture scalable",
- description: "Systèmes conçus pour évoluer avec votre croissance, utilisant des architectures modernes et distribuées.",
- icon: Scale
- },
- {
- title: "Base de données optimisée",
- description: "Conception et optimisation des bases de données pour des performances maximales et une intégrité des données.",
- icon: Database
- },
- {
- title: "Infrastructure robuste",
- description: "Déploiement sur des infrastructures cloud modernes avec haute disponibilité et résilience.",
- icon: Server
- },
- {
- title: "Sécurité avancée",
- description: "Implémentation des meilleures pratiques de sécurité et de protection des données sensibles.",
- icon: Shield
- }
+ { key: "scalable-architecture", icon: Scale },
+ { key: "optimized-database", icon: Database },
+ { key: "robust-infrastructure", icon: Server },
+ { key: "advanced-security", icon: Shield },
];
const backendProcessList: ServiceProcessStep[] = [
- {
- title: "Analyse des besoins",
- description: "Étude approfondie des besoins techniques, définition de l'architecture et des choix technologiques.",
- services: ["Architecture", "Conseil technique"]
- },
- {
- title: "Conception système",
- description: "Design de l'architecture backend, modélisation des données et définition des APIs.",
- services: ["Architecture", "Database Design"]
- },
- {
- title: "Développement API",
- description: "Implémentation des APIs RESTful ou GraphQL avec documentation complète.",
- services: ["API Development", "Documentation"]
- },
- {
- title: "Base de données",
- description: "Mise en place et optimisation des bases de données avec focus sur la performance et la scalabilité.",
- services: ["Database", "Optimisation"]
- },
- {
- title: "Tests et sécurité",
- description: "Implémentation des tests automatisés et des mesures de sécurité avancées.",
- services: ["Tests", "Security"]
- },
- {
- title: "Déploiement et monitoring",
- description: "Mise en place de l'infrastructure cloud, du monitoring et des alertes.",
- services: ["DevOps", "Monitoring"]
- }
+ { key: "needs-analysis" },
+ { key: "system-design" },
+ { key: "api-development" },
+ { key: "database" },
+ { key: "testing-security" },
+ { key: "deployment-monitoring" },
];
const backendCategory: ServiceCategoryData = {
id: ServiceCategory.BACKEND,
- name: "Développement Back-end",
- description: "Architecture et développement de solutions robustes",
icon: Server,
benefits: backendBenefits,
processList: backendProcessList,
subServices: [
{
id: "api",
- name: "APIs RESTful",
- description: "Conception et développement d'APIs performantes",
route: Routes.service.backend.api,
icon: Code,
- heroTitle: "APIs RESTful & GraphQL",
- heroDescription: "Développez des APIs modernes, sécurisées et performantes pour vos applications. Notre expertise vous garantit des interfaces robustes et évolutives qui répondent à vos besoins spécifiques.",
features: [
- {
- title: "REST & GraphQL",
- description: "Développement d'APIs modernes avec les standards de l'industrie.",
- icon: Code
- },
- {
- title: "Sécurité avancée",
- description: "Protection robuste contre les vulnérabilités et les attaques.",
- icon: Shield
- },
- {
- title: "Performance optimale",
- description: "Architecture optimisée pour des temps de réponse minimaux.",
- icon: Zap
- },
- {
- title: "Documentation complète",
- description: "Documentation claire et interactive pour une intégration facile.",
- icon: FileJson
- }
+ { key: "rest-graphql", icon: Code },
+ { key: "advanced-security", icon: Shield },
+ { key: "optimal-performance", icon: Zap },
+ { key: "complete-documentation", icon: FileJson },
],
benefits: [
- {
- title: "Haute disponibilité",
- description: "Infrastructure redondante pour une disponibilité maximale.",
- icon: Cloud
- },
- {
- title: "Scalabilité",
- description: "Architecture conçue pour supporter la croissance.",
- icon: GitBranch
- },
- {
- title: "Monitoring avancé",
- description: "Suivi en temps réel des performances et de la santé.",
- icon: LineChart
- },
- {
- title: "Cache intelligent",
- description: "Optimisation des performances avec mise en cache avancée.",
- icon: Zap
- }
+ { key: "high-availability", icon: Cloud },
+ { key: "scalability", icon: GitBranch },
+ { key: "advanced-monitoring", icon: LineChart },
+ { key: "intelligent-cache", icon: Zap },
],
faqItems: [
- {
- question: "Quelle est la différence entre REST et GraphQL ?",
- answer: "REST est une architecture traditionnelle où chaque endpoint correspond à une ressource spécifique, tandis que GraphQL permet aux clients de demander exactement les données dont ils ont besoin. Nous vous conseillons la meilleure approche selon vos besoins spécifiques et vos cas d'usage."
- },
- {
- question: "Comment assurez-vous la sécurité des APIs ?",
- answer: "Nous implémentons plusieurs niveaux de sécurité : authentification JWT, chiffrement SSL/TLS, rate limiting, validation des données, protection contre les injections et les attaques CSRF. Nous suivons également les recommandations OWASP pour la sécurité des APIs."
- },
- {
- question: "Comment gérez-vous la montée en charge ?",
- answer: "Nous concevons des APIs scalables horizontalement, avec load balancing, mise en cache distribuée, et optimisation des requêtes. L'architecture est pensée pour supporter une croissance importante du trafic."
- },
- {
- question: "Quelle documentation fournissez-vous ?",
- answer: "Nous fournissons une documentation complète : documentation technique OpenAPI/Swagger, guides d'intégration, exemples de code, et environnement de test. La documentation est maintenue à jour avec chaque évolution de l'API."
- },
- {
- question: "Proposez-vous un support après le déploiement ?",
- answer: "Oui, nous proposons plusieurs formules de maintenance incluant : monitoring 24/7, support technique, optimisation continue des performances, mises à jour de sécurité et évolutions fonctionnelles."
- }
+ { key: "rest-vs-graphql" },
+ { key: "api-security" },
+ { key: "scaling" },
+ { key: "documentation" },
+ { key: "post-deployment-support" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Analytics avancés",
- description: "Analyse détaillée de l'utilisation et des performances.",
- icon: BarChart
- },
- {
- title: "Migration de données",
- description: "Migration depuis vos systèmes existants.",
- icon: Database
- },
- {
- title: "Intégration",
- description: "Support pour l'intégration avec vos applications.",
- icon: Layers
- }
- ]
+ { key: "advanced-analytics", icon: BarChart },
+ { key: "data-migration", icon: Database },
+ { key: "integration", icon: Layers },
+ ],
},
{
id: "database",
- name: "Bases de données",
- description: "Architecture et optimisation de bases de données",
route: Routes.service.backend.database,
icon: Database,
- heroTitle: "Architecture de Bases de Données",
- heroDescription: "Concevez et optimisez vos bases de données pour des performances optimales et une scalabilité maximale. Notre expertise vous garantit une architecture robuste qui répond à vos besoins actuels et futurs.",
features: [
- {
- title: "Architecture optimisée",
- description: "Conception intelligente des schémas et des relations pour des performances optimales.",
- icon: Database
- },
- {
- title: "Sécurité renforcée",
- description: "Protection robuste des données sensibles et conformité aux normes.",
- icon: Shield
- },
- {
- title: "Haute performance",
- description: "Optimisation des requêtes et des index pour des temps de réponse minimaux.",
- icon: Zap
- },
- {
- title: "Backup & Recovery",
- description: "Stratégies de sauvegarde et de restauration fiables.",
- icon: History
- }
+ { key: "optimized-architecture", icon: Database },
+ { key: "enhanced-security", icon: Shield },
+ { key: "high-performance", icon: Zap },
+ { key: "backup-recovery", icon: History },
],
benefits: [
- {
- title: "Scalabilité horizontale",
- description: "Architecture conçue pour la croissance et la montée en charge.",
- icon: GitBranch
- },
- {
- title: "Réplication",
- description: "Haute disponibilité et répartition géographique des données.",
- icon: Share2
- },
- {
- title: "Monitoring avancé",
- description: "Suivi en temps réel des performances et de la santé.",
- icon: LineChart
- },
- {
- title: "Recherche optimisée",
- description: "Indexation intelligente pour des recherches rapides.",
- icon: Search
- }
+ { key: "horizontal-scalability", icon: GitBranch },
+ { key: "replication", icon: Share2 },
+ { key: "advanced-monitoring", icon: LineChart },
+ { key: "optimized-search", icon: Search },
],
faqItems: [
- {
- question: "Comment choisir entre SQL et NoSQL ?",
- answer: "Le choix dépend de vos besoins spécifiques. Les bases SQL sont idéales pour les données structurées avec des relations complexes, tandis que NoSQL excelle dans la gestion de données non structurées et la scalabilité horizontale. Nous vous guidons vers la meilleure solution selon vos cas d'usage."
- },
- {
- question: "Comment gérez-vous la sécurité des données ?",
- answer: "Nous implémentons plusieurs niveaux de sécurité : chiffrement des données sensibles, contrôle d'accès granulaire, audit des accès, backups réguliers, et conformité aux normes de sécurité (RGPD, etc.). Nous effectuons également des tests de sécurité réguliers."
- },
- {
- question: "Comment optimisez-vous les performances ?",
- answer: "Nous utilisons plusieurs techniques : optimisation des schémas et des requêtes, indexation intelligente, mise en cache, partitionnement des données, et monitoring continu. Nous analysons régulièrement les performances pour identifier les opportunités d'optimisation."
- },
- {
- question: "Proposez-vous des services de migration ?",
- answer: "Oui, nous gérons les migrations de bases de données de bout en bout : analyse de l'existant, planification, tests, migration des données avec minimum d'interruption, et validation post-migration. Nous assurons la cohérence et l'intégrité des données."
- },
- {
- question: "Comment assurez-vous la disponibilité des données ?",
- answer: "Nous mettons en place des architectures hautement disponibles avec réplication, clustering, et plans de reprise d'activité. Nous effectuons des sauvegardes régulières et testons les procédures de restauration."
- }
+ { key: "sql-vs-nosql" },
+ { key: "data-security" },
+ { key: "performance-optimization" },
+ { key: "migration-services" },
+ { key: "data-availability" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Migration de données",
- description: "Transfer sécurisé depuis vos systèmes existants.",
- icon: Cloud
- },
- {
- title: "Audit & Optimisation",
- description: "Analyse des performances et recommandations.",
- icon: BarChart
- },
- {
- title: "Monitoring 24/7",
- description: "Surveillance continue et alertes en temps réel.",
- icon: Timer
- }
- ]
+ { key: "data-migration", icon: Cloud },
+ { key: "audit-optimization", icon: BarChart },
+ { key: "monitoring-24-7", icon: Timer },
+ ],
},
{
id: "bots",
- name: "Bots Discord/Slack",
- description: "Développement de bots et d'automatisations",
route: Routes.service.backend.bots,
icon: Bot,
- heroTitle: "Bots & Automatisations",
- heroDescription: "Développez des bots intelligents et des automatisations pour améliorer l'engagement et la productivité de votre communauté. Notre expertise vous garantit des bots fiables et performants pour Discord, Slack et autres plateformes.",
features: [
- {
- title: "Discord & Slack",
- description: "Bots personnalisés pour les principales plateformes de communication.",
- icon: MessageSquare
- },
- {
- title: "Commandes avancées",
- description: "Interface intuitive avec commandes personnalisables.",
- icon: Command
- },
- {
- title: "Performance optimale",
- description: "Architecture optimisée pour une réactivité maximale.",
- icon: Zap
- },
- {
- title: "Intégrations",
- description: "Connection avec vos outils et services existants.",
- icon: Settings
- }
+ { key: "discord-slack", icon: MessageSquare },
+ { key: "advanced-commands", icon: Command },
+ { key: "optimal-performance", icon: Zap },
+ { key: "integrations", icon: Settings },
],
benefits: [
- {
- title: "Modération intelligente",
- description: "Gestion automatisée de votre communauté et modération.",
- icon: Shield
- },
- {
- title: "Notifications",
- description: "Alertes personnalisées et mises à jour automatiques.",
- icon: Bell
- },
- {
- title: "Engagement",
- description: "Fonctionnalités interactives pour animer votre communauté.",
- icon: Users
- },
- {
- title: "Statistiques",
- description: "Suivi détaillé de l'activité et des interactions.",
- icon: LineChart
- }
+ { key: "intelligent-moderation", icon: Shield },
+ { key: "notifications", icon: Bell },
+ { key: "engagement", icon: Users },
+ { key: "statistics", icon: LineChart },
],
faqItems: [
- {
- question: "Quels types de bots pouvez-vous développer ?",
- answer: "Nous développons des bots pour diverses plateformes (Discord, Slack, Telegram) avec différentes fonctionnalités : modération, support client, automatisation de tâches, statistiques, jeux et animations communautaires. Chaque bot est personnalisé selon vos besoins spécifiques."
- },
- {
- question: "Comment assurez-vous la fiabilité des bots ?",
- answer: "Nous implémentons plusieurs mécanismes : monitoring 24/7, redémarrage automatique en cas de problème, logs détaillés, et alertes en temps réel. Nous effectuons également des tests approfondis avant chaque déploiement."
- },
- {
- question: "Peut-on personnaliser les commandes et fonctionnalités ?",
- answer: "Oui, tous nos bots sont entièrement personnalisables : commandes, réponses, permissions, intégrations. Nous adaptons chaque fonctionnalité à vos besoins et votre charte de modération."
- },
- {
- question: "Comment gérez-vous la sécurité ?",
- answer: "La sécurité est une priorité : authentification sécurisée, permissions granulaires, validation des entrées, protection contre le spam et les abus. Nous suivons les meilleures pratiques de chaque plateforme."
- },
- {
- question: "Proposez-vous un support après le déploiement ?",
- answer: "Oui, nous proposons plusieurs formules de maintenance incluant : surveillance 24/7, mises à jour régulières, support technique, et évolutions fonctionnelles selon vos besoins."
- }
+ { key: "bot-types" },
+ { key: "bot-reliability" },
+ { key: "customization" },
+ { key: "security" },
+ { key: "post-deployment-support" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Analytics",
- description: "Suivi détaillé de l'utilisation et des interactions.",
- icon: BarChart
- },
- {
- title: "Support 24/7",
- description: "Surveillance continue et intervention rapide.",
- icon: Clock
- },
- {
- title: "Évolutions",
- description: "Ajout régulier de nouvelles fonctionnalités.",
- icon: Heart
- }
- ]
+ { key: "analytics", icon: BarChart },
+ { key: "support-24-7", icon: Clock },
+ { key: "evolutions", icon: Heart },
+ ],
},
{
id: "microservices",
- name: "Microservices",
- description: "Architecture et développement de microservices",
route: Routes.service.backend.microservices,
icon: Box,
- heroTitle: "Architecture Microservices",
- heroDescription: "Transformez vos applications monolithiques en architectures microservices modernes et scalables. Notre expertise vous garantit une infrastructure flexible, résiliente et performante.",
features: [
- {
- title: "Architecture évolutive",
- description: "Conception modulaire pour une scalabilité optimale.",
- icon: Boxes
- },
- {
- title: "Déploiement continu",
- description: "Pipeline CI/CD pour des mises à jour fluides.",
- icon: GitBranch
- },
- {
- title: "Performance optimale",
- description: "Services indépendants pour une meilleure réactivité.",
- icon: Zap
- },
- {
- title: "Haute disponibilité",
- description: "Architecture résiliente avec redondance.",
- icon: Shield
- }
+ { key: "scalable-architecture", icon: Boxes },
+ { key: "continuous-deployment", icon: GitBranch },
+ { key: "optimal-performance", icon: Zap },
+ { key: "high-availability", icon: Shield },
],
benefits: [
- {
- title: "Scalabilité granulaire",
- description: "Mise à l'échelle indépendante de chaque service.",
- icon: Scale
- },
- {
- title: "Déploiement flexible",
- description: "Mises à jour sans interruption de service.",
- icon: Cloud
- },
- {
- title: "Isolation des pannes",
- description: "Résilience accrue grâce à l'isolation des services.",
- icon: CircuitBoard
- },
- {
- title: "Monitoring avancé",
- description: "Surveillance détaillée de chaque composant.",
- icon: LineChart
- }
+ { key: "granular-scalability", icon: Scale },
+ { key: "flexible-deployment", icon: Cloud },
+ { key: "fault-isolation", icon: CircuitBoard },
+ { key: "advanced-monitoring", icon: LineChart },
],
faqItems: [
- {
- question: "Quand adopter une architecture microservices ?",
- answer: "L'architecture microservices est particulièrement adaptée aux applications complexes nécessitant une grande scalabilité, une mise à l'échelle indépendante des composants, et une évolution rapide. Nous évaluons avec vous si cette architecture correspond à vos besoins spécifiques."
- },
- {
- question: "Comment gérez-vous la communication entre services ?",
- answer: "Nous implémentons des patterns de communication robustes : API Gateway, message brokers (Kafka, RabbitMQ), communication synchrone (REST, gRPC) et asynchrone. Chaque méthode est choisie selon les besoins spécifiques de performance et de fiabilité."
- },
- {
- question: "Comment assurez-vous la cohérence des données ?",
- answer: "Nous utilisons plusieurs stratégies : Saga pattern pour les transactions distribuées, Event Sourcing pour la traçabilité, et CQRS pour la séparation des opérations de lecture et d'écriture. La cohérence éventuelle est gérée de manière appropriée."
- },
- {
- question: "Comment surveillez-vous l'infrastructure ?",
- answer: "Nous mettons en place un monitoring complet : métriques de performance, tracing distribué, logs centralisés, et alerting intelligent. Des dashboards personnalisés permettent de visualiser la santé de chaque service."
- },
- {
- question: "Proposez-vous de la formation pour les équipes ?",
- answer: "Oui, nous proposons des formations complètes pour vos équipes : principes des microservices, bonnes pratiques de développement, monitoring et troubleshooting, et utilisation des outils DevOps."
- }
+ { key: "when-microservices" },
+ { key: "service-communication" },
+ { key: "data-consistency" },
+ { key: "infrastructure-monitoring" },
+ { key: "team-training" },
],
testimonials: [],
complementaryServices: [
- {
- title: "DevOps & CI/CD",
- description: "Automatisation complète du déploiement.",
- icon: Workflow
- },
- {
- title: "Monitoring 24/7",
- description: "Surveillance continue et alertes en temps réel.",
- icon: Timer
- },
- {
- title: "Optimisation",
- description: "Amélioration continue des performances.",
- icon: Gauge
- }
- ]
+ { key: "devops-cicd", icon: Workflow },
+ { key: "monitoring-24-7", icon: Timer },
+ { key: "optimization", icon: Gauge },
+ ],
},
{
id: "cloud",
- name: "Solutions Cloud",
- description: "Déploiement et gestion d'infrastructures cloud",
route: Routes.service.backend.cloud,
icon: Cloud,
- heroTitle: "Solutions Cloud",
- heroDescription: "Optimisez votre infrastructure avec des solutions cloud modernes et évolutives. Notre expertise vous garantit un déploiement sécurisé et performant sur les principales plateformes cloud.",
features: [
- {
- title: "Multi-cloud",
- description: "Support des principales plateformes (AWS, GCP, Azure).",
- icon: Cloud
- },
- {
- title: "Sécurité avancée",
- description: "Protection robuste de vos données et applications.",
- icon: Shield
- },
- {
- title: "Performance optimale",
- description: "Architecture optimisée pour des performances maximales.",
- icon: Zap
- },
- {
- title: "Scalabilité automatique",
- description: "Adaptation dynamique aux besoins de charge.",
- icon: Scale
- }
+ { key: "multi-cloud", icon: Cloud },
+ { key: "advanced-security", icon: Shield },
+ { key: "optimal-performance", icon: Zap },
+ { key: "automatic-scalability", icon: Scale },
],
benefits: [
- {
- title: "Haute disponibilité",
- description: "Infrastructure redondante et résiliente.",
- icon: Server
- },
- {
- title: "Stockage élastique",
- description: "Gestion flexible et sécurisée des données.",
- icon: Database
- },
- {
- title: "Monitoring avancé",
- description: "Surveillance en temps réel de votre infrastructure.",
- icon: LineChart
- },
- {
- title: "Sécurité renforcée",
- description: "Protection multicouche de vos ressources.",
- icon: Lock
- }
+ { key: "high-availability", icon: Server },
+ { key: "elastic-storage", icon: Database },
+ { key: "advanced-monitoring", icon: LineChart },
+ { key: "enhanced-security", icon: Lock },
],
faqItems: [
- {
- question: "Quelle plateforme cloud choisir ?",
- answer: "Le choix dépend de vos besoins spécifiques : AWS excelle en variété de services, Google Cloud en machine learning, et Azure en intégration Microsoft. Nous vous guidons vers la meilleure solution en fonction de vos objectifs, contraintes techniques et budget."
- },
- {
- question: "Comment gérez-vous la sécurité dans le cloud ?",
- answer: "Nous implémentons une sécurité multicouche : chiffrement des données au repos et en transit, contrôle d'accès IAM, réseaux privés virtuels (VPC), pare-feu applicatifs (WAF), et surveillance continue des menaces. Nous suivons les meilleures pratiques de chaque plateforme."
- },
- {
- question: "Comment optimisez-vous les coûts ?",
- answer: "Nous utilisons plusieurs stratégies : instances réservées, scaling automatique, optimisation des ressources, suppression des ressources inutilisées, et monitoring des coûts. Nous effectuons des audits réguliers pour identifier les opportunités d'économies."
- },
- {
- question: "Comment assurez-vous la haute disponibilité ?",
- answer: "Nous déployons votre infrastructure sur plusieurs zones de disponibilité, avec réplication des données, load balancing, et failover automatique. Nous mettons également en place des plans de reprise d'activité (DRP) robustes."
- },
- {
- question: "Proposez-vous un support 24/7 ?",
- answer: "Oui, nous proposons plusieurs niveaux de support incluant : monitoring 24/7, alerting automatique, intervention rapide en cas d'incident, maintenance préventive, et support technique dédié."
- }
+ { key: "platform-choice" },
+ { key: "cloud-security" },
+ { key: "cost-optimization" },
+ { key: "high-availability" },
+ { key: "support-24-7" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Migration cloud",
- description: "Transition en douceur vers le cloud.",
- icon: GitBranch
- },
- {
- title: "Multi-région",
- description: "Déploiement global de vos applications.",
- icon: Globe
- },
- {
- title: "DevOps",
- description: "Automatisation et CI/CD dans le cloud.",
- icon: Timer
- }
- ]
- }
- ]
+ { key: "cloud-migration", icon: GitBranch },
+ { key: "multi-region", icon: Globe },
+ { key: "devops", icon: Timer },
+ ],
+ },
+ ],
};
-export default backendCategory;
\ No newline at end of file
+export default backendCategory;
diff --git a/apps/web/src/constants/services/design.ts b/apps/web/src/constants/services/design.ts
index 796833d6f..cb188f711 100644
--- a/apps/web/src/constants/services/design.ts
+++ b/apps/web/src/constants/services/design.ts
@@ -1,9 +1,9 @@
-import {
- Palette,
- PenTool,
- LayoutTemplate,
- Smartphone,
- FileCode,
+import {
+ Palette,
+ PenTool,
+ LayoutTemplate,
+ Smartphone,
+ FileCode,
Lightbulb,
Target,
Users,
@@ -23,541 +23,189 @@ import {
LayoutGrid,
FileText,
Globe,
- Heart
+ Heart,
} from "lucide-react";
-import { ServiceBenefit, ServiceCategoryData, ServiceCategory, ServiceProcessStep } from "@/types/service";
+import {
+ ServiceBenefit,
+ ServiceCategoryData,
+ ServiceCategory,
+ ServiceProcessStep,
+} from "@/types/service";
import Routes from "@/constants/routes";
const designBenefits: ServiceBenefit[] = [
- {
- title: "Design UI/UX centré utilisateur",
- description: "Une approche qui place les besoins utilisateurs au cœur de nos designs, validée par des prototypes interactifs.",
- icon: Users
- },
- {
- title: "Innovation créative",
- description: "Des solutions UI/UX créatives et des prototypes innovants qui distinguent votre marque tout en respectant les standards.",
- icon: Lightbulb
- },
- {
- title: "Prototypage itératif",
- description: "Une méthodologie basée sur des prototypes rapides et des itérations fréquentes pour affiner l'expérience utilisateur.",
- icon: Zap
- },
- {
- title: "Objectifs business",
- description: "Un design UI/UX aligné sur vos objectifs commerciaux, validé par des tests utilisateurs sur prototypes.",
- icon: Target
- }
+ { key: "user-centered-design", icon: Users },
+ { key: "creative-innovation", icon: Lightbulb },
+ { key: "iterative-prototyping", icon: Zap },
+ { key: "business-objectives", icon: Target },
];
const designProcessList: ServiceProcessStep[] = [
- {
- title: "Analyse des besoins",
- description: "Première étape cruciale où nous analysons vos besoins, votre marque et vos objectifs business pour définir la direction UI/UX.",
- services: ["Design UI/UX"]
- },
- {
- title: "Recherche et moodboard",
- description: "Création de moodboards et exploration des directions créatives possibles. Définition de la direction artistique globale.",
- services: ["Design UI/UX", "Moodboard"]
- },
- {
- title: "Wireframes",
- description: "Conception des wireframes pour valider la structure, la hiérarchie et l'architecture de l'information.",
- services: ["Design UI/UX", "Wireframes"]
- },
- {
- title: "Design d'interface",
- description: "Création des maquettes finales en respectant votre charte graphique. Attention particulière aux composants et à leur réutilisabilité.",
- services: ["Design UI/UX"]
- },
- {
- title: "Prototypage",
- description: "Création de prototypes pour tester les interactions et valider les parcours utilisateurs.",
- services: ["Design UI/UX"]
- },
- {
- title: "Développement",
- description: "Transformation des maquettes en interfaces fonctionnelles, avec une attention particulière aux animations définies.",
- services: ["Développement Frontend", "Intégration"]
- }
+ { key: "needs-analysis" },
+ { key: "research-moodboard" },
+ { key: "wireframes" },
+ { key: "interface-design" },
+ { key: "prototyping" },
+ { key: "development" },
];
const designCategory: ServiceCategoryData = {
id: ServiceCategory.DESIGN,
- name: "Design UI/UX",
- description: "Création d'interfaces modernes et d'expériences utilisateur optimales",
icon: Palette,
benefits: designBenefits,
processList: designProcessList,
subServices: [
{
id: "moodboard",
- name: "Moodboard",
- description: "Définition de l'identité visuelle et de l'ambiance de votre projet",
route: Routes.service.design.moodboard,
icon: PenTool,
- heroTitle: "Moodboards & Direction Artistique",
- heroDescription: "Donnez vie à votre vision grâce à des moodboards soigneusement élaborés. Notre expertise en design vous aide à définir une direction artistique claire et inspirante pour votre projet.",
features: [
- {
- title: "Direction créative",
- description: "Définition claire de l'ambiance et du style visuel.",
- icon: Compass
- },
- {
- title: "Palette de couleurs",
- description: "Sélection harmonieuse des couleurs de votre identité.",
- icon: Palette
- },
- {
- title: "Style visuel",
- description: "Exploration et définition de votre univers graphique.",
- icon: ImageIcon
- },
- {
- title: "Inspiration ciblée",
- description: "Recherche approfondie adaptée à votre secteur.",
- icon: Target
- }
+ { key: "creative-direction", icon: Compass },
+ { key: "color-palette", icon: Palette },
+ { key: "visual-style", icon: ImageIcon },
+ { key: "targeted-inspiration", icon: Target },
],
benefits: [
- {
- title: "Direction claire",
- description: "Vision commune et alignement des équipes créatives.",
- icon: Lightbulb
- },
- {
- title: "Communication visuelle",
- description: "Support efficace pour partager votre vision.",
- icon: Share2
- },
- {
- title: "Cohérence",
- description: "Garantie d'une identité visuelle harmonieuse.",
- icon: Eye
- },
- {
- title: "Expertise créative",
- description: "Conseils professionnels et direction artistique.",
- icon: Brush
- }
+ { key: "clear-direction", icon: Lightbulb },
+ { key: "visual-communication", icon: Share2 },
+ { key: "consistency", icon: Eye },
+ { key: "creative-expertise", icon: Brush },
],
faqItems: [
- {
- question: "Qu'est-ce qu'un moodboard et à quoi sert-il ?",
- answer: "Un moodboard est un assemblage visuel qui définit la direction artistique de votre projet. Il combine couleurs, typographies, images et textures pour créer une référence visuelle cohérente. C'est un outil essentiel pour communiquer votre vision et assurer la cohérence de votre identité visuelle."
- },
- {
- question: "Comment se déroule le processus de création ?",
- answer: "Le processus commence par une phase de découverte où nous explorons vos objectifs et votre univers. Nous effectuons ensuite une recherche approfondie pour sélectionner les éléments visuels appropriés. Après plusieurs itérations et vos retours, nous finalisons le moodboard qui servira de guide pour votre projet."
- },
- {
- question: "Quels éléments comprend un moodboard ?",
- answer: "Un moodboard professionnel inclut généralement : une palette de couleurs, des typographies, des images d'inspiration, des textures, des patterns, et des références stylistiques. Nous ajoutons également des notes explicatives pour clarifier les choix créatifs."
- },
- {
- question: "Comment utilisez-vous le moodboard dans la suite du projet ?",
- answer: "Le moodboard sert de référence tout au long du projet. Il guide les décisions de design, assure la cohérence visuelle et facilite la communication entre toutes les parties prenantes. C'est un document vivant qui peut évoluer avec vos retours."
- },
- {
- question: "Combien de temps prend la création d'un moodboard ?",
- answer: "La création d'un moodboard professionnel prend généralement 1 à 2 semaines, incluant la phase de recherche, la création initiale et les itérations basées sur vos retours. Ce temps nous permet d'explorer en profondeur et d'affiner la direction artistique."
- }
+ { key: "what-is-moodboard" },
+ { key: "creation-process" },
+ { key: "moodboard-elements" },
+ { key: "moodboard-usage" },
+ { key: "creation-timeline" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Charte graphique",
- description: "Création d'une charte graphique complète.",
- icon: FileImage
- },
- {
- title: "Style Guide",
- description: "Guide détaillé d'utilisation de votre identité.",
- icon: Layers
- },
- {
- title: "Direction artistique",
- description: "Accompagnement créatif continu.",
- icon: PenTool
- }
- ]
+ { key: "brand-guidelines", icon: FileImage },
+ { key: "style-guide", icon: Layers },
+ { key: "artistic-direction", icon: PenTool },
+ ],
},
{
id: "wireframes",
- name: "Wireframes",
- description: "Conception de la structure et du parcours utilisateur",
route: Routes.service.design.wireframes,
icon: LayoutTemplate,
- heroTitle: "Wireframes & Architecture UX",
- heroDescription: "Structurez vos interfaces utilisateur avec des wireframes professionnels. Notre expertise en UX design vous garantit une architecture intuitive et une expérience utilisateur optimale dès les premières étapes de votre projet.",
features: [
- {
- title: "Architecture UX",
- description: "Structure claire et logique de vos interfaces.",
- icon: LayoutTemplate
- },
- {
- title: "Parcours utilisateur",
- description: "Optimisation des flux de navigation.",
- icon: Users
- },
- {
- title: "Hiérarchie visuelle",
- description: "Organisation efficace du contenu et des fonctionnalités.",
- icon: Layers
- },
- {
- title: "Interactions",
- description: "Définition des comportements et des transitions.",
- icon: MousePointer
- }
+ { key: "ux-architecture", icon: LayoutTemplate },
+ { key: "user-journey", icon: Users },
+ { key: "visual-hierarchy", icon: Layers },
+ { key: "interactions", icon: MousePointer },
],
benefits: [
- {
- title: "Responsive Design",
- description: "Adaptation à tous les formats d'écrans.",
- icon: Smartphone
- },
- {
- title: "Prototypage rapide",
- description: "Tests et itérations efficaces.",
- icon: Zap
- },
- {
- title: "Collaboration",
- description: "Communication claire avec toutes les parties prenantes.",
- icon: Share2
- },
- {
- title: "Validation précoce",
- description: "Détection et correction rapide des problèmes UX.",
- icon: Eye
- }
+ { key: "responsive-design", icon: Smartphone },
+ { key: "rapid-prototyping", icon: Zap },
+ { key: "collaboration", icon: Share2 },
+ { key: "early-validation", icon: Eye },
],
faqItems: [
- {
- question: "Qu'est-ce qu'un wireframe et pourquoi est-ce important ?",
- answer: "Un wireframe est une représentation schématique de votre interface qui se concentre sur la structure, la hiérarchie et les fonctionnalités, sans les éléments de design final. C'est une étape cruciale qui permet de valider l'architecture de l'information et l'expérience utilisateur avant d'investir dans le design détaillé."
- },
- {
- question: "Comment se déroule le processus de création ?",
- answer: "Le processus commence par l'analyse de vos besoins et objectifs. Nous créons ensuite des wireframes de basse fidélité pour valider la structure globale, puis des versions plus détaillées avec les interactions. Après plusieurs itérations et vos retours, nous finalisons les wireframes qui serviront de base au design UI."
- },
- {
- question: "Quels livrables sont fournis ?",
- answer: "Vous recevez un ensemble complet de wireframes pour chaque écran clé, des diagrammes de flux utilisateur, une documentation des interactions, et des prototypes interactifs pour tester les parcours utilisateur. Tous les fichiers sources sont également fournis."
- },
- {
- question: "Comment gérez-vous le responsive design ?",
- answer: "Nous créons des wireframes adaptés à chaque format d'écran important (desktop, tablet, mobile) en suivant une approche mobile-first. Chaque version est optimisée pour offrir la meilleure expérience utilisateur possible sur son support."
- },
- {
- question: "Combien de temps prend la création des wireframes ?",
- answer: "La durée dépend de la complexité du projet, mais généralement 2 à 4 semaines pour un projet moyen, incluant les phases d'analyse, création, itérations et finalisation. Nous établissons un planning détaillé au début du projet."
- }
+ { key: "what-is-wireframe" },
+ { key: "creation-process" },
+ { key: "deliverables" },
+ { key: "responsive-handling" },
+ { key: "creation-timeline" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Audit UX",
- description: "Analyse approfondie de vos interfaces existantes.",
- icon: ListChecks
- },
- {
- title: "Prototypage",
- description: "Création de prototypes interactifs.",
- icon: LayoutGrid
- },
- {
- title: "Documentation UX",
- description: "Documentation détaillée des parcours utilisateur.",
- icon: FileText
- }
- ]
+ { key: "ux-audit", icon: ListChecks },
+ { key: "prototyping", icon: LayoutGrid },
+ { key: "ux-documentation", icon: FileText },
+ ],
},
{
id: "ui",
- name: "Maquettage UI",
- description: "Design détaillé des interfaces utilisateur",
route: Routes.service.design.ui,
icon: Smartphone,
- heroTitle: "Design d'Interface Utilisateur",
- heroDescription: "Créez des interfaces modernes, élégantes et intuitives pour vos applications. Notre expertise en design UI vous garantit des maquettes professionnelles qui captiveront vos utilisateurs.",
features: [
- {
- title: "Design moderne",
- description: "Interfaces élégantes suivant les dernières tendances.",
- icon: PenTool
- },
- {
- title: "Système de design",
- description: "Composants cohérents et réutilisables.",
- icon: Layers
- },
- {
- title: "Responsive design",
- description: "Adaptation parfaite à tous les écrans.",
- icon: Smartphone
- },
- {
- title: "Animations & micro-interactions",
- description: "Interactions fluides et engageantes.",
- icon: Zap
- }
+ { key: "modern-design", icon: PenTool },
+ { key: "design-system", icon: Layers },
+ { key: "responsive-design", icon: Smartphone },
+ { key: "animations-micro-interactions", icon: Zap },
],
benefits: [
- {
- title: "Identité visuelle",
- description: "Design cohérent avec votre marque.",
- icon: Palette
- },
- {
- title: "Expérience utilisateur",
- description: "Interfaces intuitives et agréables à utiliser.",
- icon: Eye
- },
- {
- title: "Design system",
- description: "Bibliothèque de composants réutilisables.",
- icon: Layers
- },
- {
- title: "Accessibilité",
- description: "Interfaces accessibles à tous les utilisateurs.",
- icon: Users
- }
+ { key: "visual-identity", icon: Palette },
+ { key: "user-experience", icon: Eye },
+ { key: "design-system", icon: Layers },
+ { key: "accessibility", icon: Users },
],
faqItems: [
- {
- question: "Comment se déroule le processus de design UI ?",
- answer: "Le processus commence par l'analyse de vos besoins et de votre identité de marque. Nous créons ensuite des premières versions des écrans clés, établissons le système de design, puis itérons sur les maquettes détaillées. Chaque étape inclut vos retours pour assurer un résultat parfaitement aligné avec vos attentes."
- },
- {
- question: "Quels outils et livrables sont fournis ?",
- answer: "Nous utilisons principalement Figma pour le design UI. Vous recevez les maquettes détaillées de tous les écrans, un système de design complet avec ses composants, les spécifications pour les développeurs, et les assets nécessaires à l'intégration."
- },
- {
- question: "Comment gérez-vous le responsive design ?",
- answer: "Nous suivons une approche mobile-first et créons des maquettes pour chaque breakpoint important (mobile, tablette, desktop). Chaque interface est optimisée pour offrir la meilleure expérience possible sur son support."
- },
- {
- question: "Comment garantissez-vous la cohérence du design ?",
- answer: "Nous créons un système de design complet incluant une bibliothèque de composants, des règles typographiques, une palette de couleurs et des principes de design. Ce système assure la cohérence à travers toute l'interface."
- },
- {
- question: "Comment facilitez-vous le travail des développeurs ?",
- answer: "Nous fournissons des spécifications détaillées pour chaque composant, incluant les mesures, les styles, les états et les interactions. Nous utilisons également des outils comme Zeplin ou les exports Figma pour faciliter l'intégration."
- }
+ { key: "ui-design-process" },
+ { key: "tools-deliverables" },
+ { key: "responsive-handling" },
+ { key: "design-consistency" },
+ { key: "developer-handoff" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Design system",
- description: "Création d'une bibliothèque de composants.",
- icon: LayoutGrid
- },
- {
- title: "Prototypage",
- description: "Création de prototypes interactifs.",
- icon: MousePointer
- },
- {
- title: "Développement",
- description: "Intégration de vos maquettes en code.",
- icon: FileCode
- }
- ]
+ { key: "design-system", icon: LayoutGrid },
+ { key: "prototyping", icon: MousePointer },
+ { key: "development", icon: FileCode },
+ ],
},
{
id: "branding",
- name: "Charte graphique",
- description: "Création de votre identité visuelle complète",
route: Routes.service.design.branding,
icon: Palette,
- heroTitle: "Branding & Identité de Marque",
- heroDescription: "Donnez vie à votre marque avec une identité visuelle distinctive et mémorable. Notre expertise en branding vous aide à créer une image de marque qui résonne avec votre audience et reflète vos valeurs.",
features: [
- {
- title: "Identité visuelle",
- description: "Création d'une identité unique et mémorable.",
- icon: Palette
- },
- {
- title: "Valeurs de marque",
- description: "Expression visuelle de votre ADN et vos valeurs.",
- icon: Heart
- },
- {
- title: "Charte graphique",
- description: "Documentation complète de votre identité.",
- icon: FileText
- },
- {
- title: "Design system",
- description: "Éléments visuels cohérents et réutilisables.",
- icon: PenTool
- }
+ { key: "visual-identity", icon: Palette },
+ { key: "brand-values", icon: Heart },
+ { key: "brand-guidelines", icon: FileText },
+ { key: "design-system", icon: PenTool },
],
benefits: [
- {
- title: "Reconnaissance",
- description: "Image de marque mémorable et distinctive.",
- icon: Target
- },
- {
- title: "Cohérence",
- description: "Communication visuelle unifiée sur tous les supports.",
- icon: LayoutTemplate
- },
- {
- title: "Confiance",
- description: "Crédibilité renforcée auprès de votre audience.",
- icon: Users
- },
- {
- title: "Portée",
- description: "Impact visuel fort sur tous les canaux.",
- icon: Globe
- }
+ { key: "recognition", icon: Target },
+ { key: "consistency", icon: LayoutTemplate },
+ { key: "trust", icon: Users },
+ { key: "reach", icon: Globe },
],
faqItems: [
- {
- question: "Que comprend une identité de marque complète ?",
- answer: "Une identité de marque complète inclut le logo, la palette de couleurs, la typographie, les éléments graphiques, le ton de voix, et les règles d'utilisation. Nous fournissons une charte graphique détaillée qui documente tous ces éléments et guide leur utilisation cohérente."
- },
- {
- question: "Comment se déroule le processus de création ?",
- answer: "Le processus commence par une phase de découverte pour comprendre votre marque, vos valeurs et votre audience. Nous développons ensuite des concepts créatifs, créons les éléments visuels, et itérons selon vos retours. Le processus se termine par la livraison d'une charte graphique complète."
- },
- {
- question: "Quels livrables sont fournis ?",
- answer: "Vous recevez un package complet incluant : logos (différentes versions), palette de couleurs, typographies, éléments graphiques, modèles de documents, guides d'utilisation, et fichiers sources dans tous les formats nécessaires."
- },
- {
- question: "Comment garantissez-vous l'unicité de l'identité ?",
- answer: "Nous effectuons une recherche approfondie de votre marché et de la concurrence pour créer une identité distinctive. Nous vérifions également la disponibilité des éléments visuels pour éviter tout conflit avec des marques existantes."
- },
- {
- question: "Comment gérez-vous la transition vers la nouvelle identité ?",
- answer: "Nous fournissons un plan de déploiement progressif qui guide la transition vers la nouvelle identité. Cela inclut des recommandations pour la communication interne et externe, et un calendrier de mise en œuvre."
- }
+ { key: "complete-identity" },
+ { key: "creation-process" },
+ { key: "deliverables" },
+ { key: "uniqueness" },
+ { key: "transition" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Marketing Kit",
- description: "Création de supports marketing cohérents.",
- icon: MessageSquare
- },
- {
- title: "Réseaux sociaux",
- description: "Adaptation pour les médias sociaux.",
- icon: Share2
- },
- {
- title: "Supports print",
- description: "Création de supports imprimés.",
- icon: FileImage
- }
- ]
+ { key: "marketing-kit", icon: MessageSquare },
+ { key: "social-media", icon: Share2 },
+ { key: "print-materials", icon: FileImage },
+ ],
},
{
id: "audit",
- name: "Audit UX/UI",
- description: "Analyse et optimisation de vos interfaces existantes",
route: Routes.service.design.audit,
icon: FileCode,
- heroTitle: "Audit UX/UI & Optimisation",
- heroDescription: "Améliorez l'expérience utilisateur de vos interfaces grâce à un audit professionnel. Notre expertise vous garantit une analyse approfondie et des recommandations concrètes pour optimiser vos interfaces.",
features: [
- {
- title: "Analyse heuristique",
- description: "Évaluation experte basée sur les principes UX.",
- icon: Search
- },
- {
- title: "Tests utilisateurs",
- description: "Observation et analyse des comportements réels.",
- icon: Users
- },
- {
- title: "Analytics",
- description: "Analyse des données d'utilisation.",
- icon: BarChart
- },
- {
- title: "Accessibilité",
- description: "Vérification des standards d'accessibilité.",
- icon: Eye
- }
+ { key: "heuristic-analysis", icon: Search },
+ { key: "user-testing", icon: Users },
+ { key: "analytics", icon: BarChart },
+ { key: "accessibility", icon: Eye },
],
benefits: [
- {
- title: "Conversion",
- description: "Identification des freins à la conversion.",
- icon: Target
- },
- {
- title: "Performance",
- description: "Analyse des métriques de performance.",
- icon: Zap
- },
- {
- title: "Satisfaction",
- description: "Mesure de la satisfaction utilisateur.",
- icon: BarChart
- },
- {
- title: "Parcours",
- description: "Optimisation des parcours utilisateurs.",
- icon: MousePointer
- }
+ { key: "conversion", icon: Target },
+ { key: "performance", icon: Zap },
+ { key: "satisfaction", icon: BarChart },
+ { key: "journeys", icon: MousePointer },
],
faqItems: [
- {
- question: "Que comprend un audit UX/UI complet ?",
- answer: "Un audit complet inclut : analyse heuristique basée sur les principes UX, tests utilisateurs, analyse des données analytics, évaluation de l'accessibilité, benchmark concurrentiel, et recommandations détaillées. Nous fournissons un rapport complet avec des solutions concrètes."
- },
- {
- question: "Comment se déroule le processus d'audit ?",
- answer: "Le processus commence par une phase de découverte pour comprendre vos objectifs et KPIs. Nous réalisons ensuite les différentes analyses (heuristique, données, tests), synthétisons les résultats, et préparons un rapport détaillé avec des recommandations priorisées."
- },
- {
- question: "Quels livrables sont fournis ?",
- answer: "Vous recevez un rapport d'audit complet incluant : synthèse exécutive, analyses détaillées, visualisations des données, problèmes identifiés avec leur niveau de gravité, recommandations priorisées, et plan d'action suggéré."
- },
- {
- question: "Comment mesurez-vous l'impact des recommandations ?",
- answer: "Nous définissons des KPIs spécifiques pour chaque recommandation et mettons en place un suivi des métriques clés (taux de conversion, satisfaction utilisateur, temps de complétion des tâches, etc.) pour mesurer l'impact des améliorations."
- },
- {
- question: "Proposez-vous un accompagnement post-audit ?",
- answer: "Oui, nous proposons un accompagnement pour la mise en œuvre des recommandations, incluant : priorisation des actions, support dans l'implémentation, et mesure des résultats. Nous pouvons également réaliser des audits de suivi."
- }
+ { key: "complete-audit" },
+ { key: "audit-process" },
+ { key: "deliverables" },
+ { key: "measuring-impact" },
+ { key: "post-audit-support" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Tests utilisateurs",
- description: "Sessions de tests approfondis avec vos utilisateurs.",
- icon: Users
- },
- {
- title: "Analytics avancés",
- description: "Mise en place de tracking et analyse approfondie.",
- icon: BarChart
- },
- {
- title: "Formation UX",
- description: "Formation de vos équipes aux bonnes pratiques.",
- icon: MessageSquare
- }
- ]
- }
- ]
+ { key: "user-testing", icon: Users },
+ { key: "advanced-analytics", icon: BarChart },
+ { key: "ux-training", icon: MessageSquare },
+ ],
+ },
+ ],
};
-export default designCategory;
\ No newline at end of file
+export default designCategory;
diff --git a/apps/web/src/constants/services/frontend.ts b/apps/web/src/constants/services/frontend.ts
index 2110c553e..23c1cab05 100644
--- a/apps/web/src/constants/services/frontend.ts
+++ b/apps/web/src/constants/services/frontend.ts
@@ -1,471 +1,179 @@
-import {
- Code,
- Rocket,
- GitBranch,
+import {
+ Code,
+ GitBranch,
Shield,
Layout,
Zap,
Smartphone,
Monitor,
- Laptop,
Globe,
Database,
- Cpu,
- Upload,
Download,
- AppWindow,
Gauge,
LineChart,
Cloud,
- Store,
Share2,
MessageSquare,
Tablet,
PenTool,
- ArrowDownToLine,
Wifi,
- Bell
+ Bell,
+ WifiOff,
+ Search,
+ Layers,
+ Lock,
} from "lucide-react";
-import { ServiceBenefit, ServiceCategoryData, ServiceCategory, ServiceProcessStep } from "@/types/service";
+import {
+ ServiceBenefit,
+ ServiceCategoryData,
+ ServiceCategory,
+ ServiceProcessStep,
+} from "@/types/service";
import Routes from "@/constants/routes";
const frontendBenefits: ServiceBenefit[] = [
- {
- title: "Architecture évolutive",
- description: "Applications construites sur des architectures modernes et scalables, prêtes pour l'évolution de votre projet.",
- icon: Code
- },
- {
- title: "Performance optimale",
- description: "Focus sur les performances avec des techniques avancées d'optimisation et de mise en cache.",
- icon: Gauge
- },
- {
- title: "Code maintenable",
- description: "Architecture propre et modulaire permettant une maintenance facile et des évolutions rapides.",
- icon: GitBranch
- },
- {
- title: "Sécurité renforcée",
- description: "Implémentation des meilleures pratiques de sécurité frontend pour protéger vos utilisateurs.",
- icon: Shield
- }
+ { key: "scalable-architecture", icon: Code },
+ { key: "optimal-performance", icon: Gauge },
+ { key: "maintainable-code", icon: GitBranch },
+ { key: "enhanced-security", icon: Shield },
];
const frontendProcessList: ServiceProcessStep[] = [
- {
- title: "Architecture technique",
- description: "Définition de l'architecture frontend, choix des technologies et mise en place de l'environnement de développement.",
- services: ["Architecture", "Conseil technique"]
- },
- {
- title: "Mise en place du projet",
- description: "Configuration du projet avec les bonnes pratiques de développement, tests et déploiement continu.",
- services: ["Setup technique", "CI/CD"]
- },
- {
- title: "Développement des features",
- description: "Implémentation des fonctionnalités avec un focus sur la qualité du code et les performances.",
- services: ["Développement Frontend", "React", "Next.js"]
- },
- {
- title: "Gestion de l'état",
- description: "Mise en place d'une gestion d'état robuste et performante pour les données de l'application.",
- services: ["State Management", "API Integration"]
- },
- {
- title: "Tests et qualité",
- description: "Mise en place des tests automatisés et des processus d'assurance qualité.",
- services: ["Tests unitaires", "Tests E2E"]
- },
- {
- title: "Optimisation et monitoring",
- description: "Optimisation des performances et mise en place d'outils de monitoring.",
- services: ["Performance", "Analytics"]
- }
+ { key: "technical-architecture" },
+ { key: "project-setup" },
+ { key: "feature-development" },
+ { key: "state-management" },
+ { key: "testing-quality" },
+ { key: "optimization-monitoring" },
];
const frontendCategory: ServiceCategoryData = {
id: ServiceCategory.FRONTEND,
- name: "Développement Front-end",
- description: "Création d'applications web et mobiles performantes",
icon: Code,
benefits: frontendBenefits,
processList: frontendProcessList,
subServices: [
{
id: "web",
- name: "Applications Web",
- description: "Développement d'applications web modernes avec React et Next.js",
route: Routes.service.frontend.web,
icon: Globe,
- heroTitle: "Développement Web Frontend",
- heroDescription: "Créez des applications web modernes, réactives et performantes avec les dernières technologies frontend. Notre expertise vous garantit une expérience utilisateur exceptionnelle.",
features: [
- {
- title: "React & Next.js",
- description: "Développement avec les frameworks modernes pour des applications performantes et évolutives.",
- icon: Code
- },
- {
- title: "Design Responsive",
- description: "Interfaces adaptatives pour une expérience optimale sur tous les appareils.",
- icon: Layout
- },
- {
- title: "Performance Web",
- description: "Optimisation poussée pour des temps de chargement rapides et une expérience fluide.",
- icon: Rocket
- },
- {
- title: "UI/UX Moderne",
- description: "Interfaces utilisateur élégantes et intuitives suivant les dernières tendances.",
- icon: PenTool
- }
+ { key: "react-nextjs", icon: Code },
+ { key: "responsive-design", icon: Layout },
+ { key: "web-performance", icon: Zap },
+ { key: "modern-ui-ux", icon: PenTool },
],
benefits: [
- {
- title: "Applications réactives",
- description: "Interfaces dynamiques et réactives pour une expérience utilisateur fluide.",
- icon: Monitor
- },
- {
- title: "Mobile First",
- description: "Conception pensée d'abord pour mobile puis adaptée aux grands écrans.",
- icon: Smartphone
- },
- {
- title: "Performance optimale",
- description: "Optimisation avancée pour des temps de chargement minimaux.",
- icon: Zap
- },
- {
- title: "SEO optimisé",
- description: "Structure optimisée pour un excellent référencement naturel.",
- icon: Globe
- }
+ { key: "reactive-apps", icon: Monitor },
+ { key: "mobile-first", icon: Smartphone },
+ { key: "optimal-performance", icon: Zap },
+ { key: "seo-optimized", icon: Globe },
],
faqItems: [
- {
- question: "Quelles technologies utilisez-vous pour le développement frontend ?",
- answer: "Nous utilisons principalement React avec Next.js, ainsi que TypeScript pour un code plus robuste. Nous intégrons également des outils modernes comme Tailwind CSS pour le styling, et diverses bibliothèques pour les animations et les interactions."
- },
- {
- question: "Comment gérez-vous la performance des applications web ?",
- answer: "Nous appliquons les meilleures pratiques d'optimisation : code splitting, lazy loading, optimisation des images, mise en cache intelligente, et nous utilisons des outils de mesure de performance pour garantir des temps de chargement optimaux."
- },
- {
- question: "Proposez-vous des solutions pour le SEO ?",
- answer: "Oui, nous développons des applications avec le SEO en tête : rendu côté serveur (SSR), génération de pages statiques, meta-données dynamiques, structure sémantique et optimisation pour les moteurs de recherche."
- },
- {
- question: "Comment assurez-vous la compatibilité avec différents navigateurs ?",
- answer: "Nous testons sur les principaux navigateurs et versions, utilisons des outils de transpilation modernes, et mettons en place des fallbacks appropriés pour garantir une expérience cohérente."
- },
- {
- question: "Proposez-vous la maintenance des applications développées ?",
- answer: "Oui, nous proposons différentes formules de maintenance incluant les mises à jour de sécurité, l'optimisation continue des performances, et l'évolution des fonctionnalités."
- }
+ { key: "technologies" },
+ { key: "performance" },
+ { key: "seo" },
+ { key: "browser-compatibility" },
+ { key: "maintenance" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Design UI/UX",
- description: "Conception d'interfaces utilisateur modernes et ergonomiques.",
- icon: PenTool
- },
- {
- title: "Intégration API",
- description: "Connection avec vos systèmes et services backend existants.",
- icon: Share2
- },
- {
- title: "Internationalisation",
- description: "Adaptation de votre application pour un public international.",
- icon: Globe
- }
- ]
+ { key: "ui-ux-design", icon: PenTool },
+ { key: "api-integration", icon: Share2 },
+ { key: "internationalization", icon: Globe },
+ ],
},
{
id: "mobile",
- name: "Applications Mobiles",
- description: "Création d'applications mobiles natives avec React Native",
route: Routes.service.frontend.mobile,
icon: Smartphone,
- heroTitle: "Développement Mobile React Native",
- heroDescription: "Créez des applications mobiles natives performantes pour iOS et Android avec React Native. Notre expertise vous garantit des applications robustes et une expérience utilisateur exceptionnelle.",
features: [
- {
- title: "React Native & Expo",
- description: "Développement cross-platform efficace pour iOS et Android avec une base de code unique.",
- icon: Code
- },
- {
- title: "Design Natif",
- description: "Interfaces respectant les guidelines de design iOS et Android pour une expérience familière.",
- icon: Layout
- },
- {
- title: "Performance Native",
- description: "Optimisation poussée pour des performances proches du natif sur chaque plateforme.",
- icon: Rocket
- },
- {
- title: "UI/UX Mobile",
- description: "Interfaces mobiles intuitives suivant les meilleures pratiques de chaque plateforme.",
- icon: PenTool
- }
+ { key: "react-native-expo", icon: Code },
+ { key: "native-design", icon: Layout },
+ { key: "native-performance", icon: Zap },
+ { key: "mobile-ui-ux", icon: PenTool },
],
benefits: [
- {
- title: "Multi-plateformes",
- description: "Applications fonctionnant sur iOS et Android à partir d'une base de code unique.",
- icon: Smartphone
- },
- {
- title: "Support tablettes",
- description: "Interfaces adaptées aux différentes tailles d'écrans et orientations.",
- icon: Tablet
- },
- {
- title: "Performance optimale",
- description: "Optimisation native pour des performances et une fluidité maximales.",
- icon: Gauge
- },
- {
- title: "Expérience native",
- description: "Utilisation des fonctionnalités natives des appareils (caméra, GPS, notifications...).",
- icon: AppWindow
- }
+ { key: "multi-platform", icon: Smartphone },
+ { key: "tablet-support", icon: Tablet },
+ { key: "optimal-performance", icon: Gauge },
+ { key: "native-experience", icon: Layers },
],
faqItems: [
- {
- question: "Pourquoi choisir React Native pour le développement mobile ?",
- answer: "React Native permet de développer des applications performantes pour iOS et Android à partir d'une base de code unique, réduisant les coûts et le temps de développement tout en maintenant une qualité native. Il bénéficie également d'un large écosystème et du support de Meta (Facebook)."
- },
- {
- question: "Comment assurez-vous la performance des applications ?",
- answer: "Nous optimisons chaque aspect de l'application : temps de démarrage, consommation mémoire, animations fluides, chargement des données... Nous utilisons également des outils de profilage pour identifier et résoudre les problèmes de performance."
- },
- {
- question: "Gérez-vous la publication sur les stores ?",
- answer: "Oui, nous prenons en charge tout le processus de publication : préparation des assets, configuration des comptes développeur, soumission aux stores (App Store et Play Store) et suivi des mises à jour."
- },
- {
- question: "Comment gérez-vous les mises à jour des applications ?",
- answer: "Nous mettons en place des systèmes de mise à jour OTA (Over The Air) quand c'est possible, et nous gérons les mises à jour via les stores avec un processus optimisé pour minimiser les temps de validation."
- },
- {
- question: "Proposez-vous un support après le lancement ?",
- answer: "Oui, nous proposons différentes formules de maintenance incluant : monitoring des performances, corrections de bugs, mises à jour de sécurité et évolutions fonctionnelles."
- }
+ { key: "why-react-native" },
+ { key: "performance" },
+ { key: "store-publishing" },
+ { key: "updates" },
+ { key: "post-launch-support" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Publication Store",
- description: "Gestion complète de la publication sur l'App Store et le Play Store.",
- icon: Store
- },
- {
- title: "Intégration Backend",
- description: "Connection avec vos systèmes et APIs existants.",
- icon: Share2
- },
- {
- title: "Formation React Native",
- description: "Formation de vos équipes au développement React Native.",
- icon: MessageSquare
- }
- ]
+ { key: "store-publishing", icon: Share2 },
+ { key: "backend-integration", icon: Share2 },
+ { key: "react-native-training", icon: MessageSquare },
+ ],
},
{
id: "desktop",
- name: "Logiciels de Bureau",
- description: "Développement d'applications desktop multiplateforme",
route: Routes.service.frontend.desktop,
- icon: Laptop,
- heroTitle: "Applications Desktop Multiplateformes",
- heroDescription: "Développez des applications de bureau modernes et performantes pour Windows, macOS et Linux. Notre expertise vous garantit des applications professionnelles qui tirent parti de toute la puissance du desktop.",
+ icon: Monitor,
features: [
- {
- title: "Electron & React",
- description: "Technologies modernes pour des applications desktop performantes et évolutives.",
- icon: Code
- },
- {
- title: "Multiplateforme",
- description: "Applications compatibles Windows, macOS et Linux à partir d'une base de code unique.",
- icon: Monitor
- },
- {
- title: "Performance native",
- description: "Optimisation pour tirer parti des ressources système de manière efficace.",
- icon: Rocket
- },
- {
- title: "Intégration système",
- description: "Accès aux fonctionnalités natives du système d'exploitation.",
- icon: Cpu
- }
+ { key: "electron-react", icon: Code },
+ { key: "multiplatform", icon: Monitor },
+ { key: "native-performance", icon: Zap },
+ { key: "system-integration", icon: Layers },
],
benefits: [
- {
- title: "Windows & macOS",
- description: "Support natif des principales plateformes desktop.",
- icon: Laptop
- },
- {
- title: "Accès système",
- description: "Interaction directe avec le système d'exploitation.",
- icon: Cpu
- },
- {
- title: "Mode hors ligne",
- description: "Fonctionnement autonome sans connexion internet requise.",
- icon: Download
- },
- {
- title: "Données locales",
- description: "Stockage et traitement des données en local pour plus de sécurité.",
- icon: Database
- }
+ { key: "windows-macos", icon: Monitor },
+ { key: "system-access", icon: Layers },
+ { key: "offline-mode", icon: Download },
+ { key: "local-data", icon: Database },
],
faqItems: [
- {
- question: "Pourquoi choisir Electron pour le développement desktop ?",
- answer: "Electron permet de créer des applications desktop multiplateformes avec des technologies web modernes (React, TypeScript). Cela offre un développement rapide, une maintenance simplifiée et une excellente expérience utilisateur, tout en garantissant la compatibilité avec Windows, macOS et Linux."
- },
- {
- question: "Comment gérez-vous la sécurité des applications desktop ?",
- answer: "Nous implémentons plusieurs niveaux de sécurité : chiffrement des données sensibles, protection contre les injections de code, mises à jour de sécurité automatiques, et bonnes pratiques de développement sécurisé. Nous suivons également les recommandations de sécurité spécifiques à chaque système d'exploitation."
- },
- {
- question: "Proposez-vous un système de mise à jour automatique ?",
- answer: "Oui, nous intégrons un système de mise à jour automatique qui permet de déployer facilement les nouvelles versions de l'application. Les utilisateurs sont notifiés des mises à jour disponibles et peuvent les installer en un clic."
- },
- {
- question: "Comment gérez-vous la distribution des applications ?",
- answer: "Nous gérons tout le processus de distribution : création des installateurs pour chaque plateforme, signature des applications, publication sur les stores si nécessaire (Microsoft Store, Mac App Store), et mise en place d'un système de mise à jour automatique."
- },
- {
- question: "Proposez-vous un support après le lancement ?",
- answer: "Oui, nous proposons plusieurs formules de maintenance incluant : support technique, correction de bugs, mises à jour de sécurité, optimisations de performance et évolutions fonctionnelles."
- }
+ { key: "why-electron" },
+ { key: "security" },
+ { key: "auto-update" },
+ { key: "distribution" },
+ { key: "post-launch-support" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Télémétrie",
- description: "Suivi des performances et du comportement utilisateur.",
- icon: LineChart
- },
- {
- title: "Distribution",
- description: "Publication sur les stores et gestion des mises à jour.",
- icon: Upload
- },
- {
- title: "Cloud Sync",
- description: "Synchronisation des données avec le cloud.",
- icon: Cloud
- }
- ]
+ { key: "telemetry", icon: LineChart },
+ { key: "distribution", icon: Share2 },
+ { key: "cloud-sync", icon: Cloud },
+ ],
},
{
id: "pwa",
- name: "Progressive Web Apps",
- description: "Création d'applications web progressives performantes",
route: Routes.service.frontend.pwa,
icon: Globe,
- heroTitle: "Progressive Web Apps (PWA)",
- heroDescription: "Transformez votre site web en véritable application installable avec les Progressive Web Apps. Offrez une expérience utilisateur exceptionnelle, en ligne comme hors ligne.",
features: [
- {
- title: "Installation native",
- description: "Applications installables directement depuis le navigateur, sans passer par les stores.",
- icon: ArrowDownToLine
- },
- {
- title: "Mode hors ligne",
- description: "Fonctionnement même sans connexion internet grâce au cache intelligent.",
- icon: Wifi
- },
- {
- title: "Performance optimale",
- description: "Chargement rapide et expérience fluide sur tous les appareils.",
- icon: Rocket
- },
- {
- title: "Notifications Push",
- description: "Engagement utilisateur amélioré grâce aux notifications push.",
- icon: Bell
- }
+ { key: "native-installation", icon: Download },
+ { key: "offline-mode", icon: WifiOff },
+ { key: "optimal-performance", icon: Zap },
+ { key: "push-notifications", icon: Bell },
],
benefits: [
- {
- title: "Multi-plateformes",
- description: "Une seule application pour tous les appareils et systèmes d'exploitation.",
- icon: Smartphone
- },
- {
- title: "Toujours à jour",
- description: "Mises à jour automatiques sans action utilisateur nécessaire.",
- icon: ArrowDownToLine
- },
- {
- title: "Légèreté",
- description: "Pas d'installation lourde, accessible instantanément.",
- icon: Cloud
- },
- {
- title: "Performances natives",
- description: "Expérience utilisateur proche des applications natives.",
- icon: Zap
- }
+ { key: "multi-platform", icon: Smartphone },
+ { key: "always-updated", icon: Download },
+ { key: "lightweight", icon: Cloud },
+ { key: "native-performance", icon: Zap },
],
faqItems: [
- {
- question: "Qu'est-ce qu'une Progressive Web App ?",
- answer: "Une PWA est une application web qui offre une expérience similaire à une application native : elle est installable, fonctionne hors ligne, et peut envoyer des notifications push. Elle combine les avantages du web (accessibilité, mise à jour automatique) et du natif (performance, fonctionnalités avancées)."
- },
- {
- question: "Quels sont les avantages par rapport à une application native ?",
- answer: "Les PWA offrent plusieurs avantages : pas besoin de passer par les stores, mise à jour automatique, développement plus rapide et moins coûteux, meilleur référencement, et une base de code unique pour toutes les plateformes."
- },
- {
- question: "Comment fonctionne le mode hors ligne ?",
- answer: "Nous utilisons des Service Workers pour mettre en cache les ressources essentielles et les données. L'application peut ainsi fonctionner même sans connexion internet, avec une synchronisation automatique une fois la connexion rétablie."
- },
- {
- question: "Les PWA sont-elles compatibles avec tous les navigateurs ?",
- answer: "Les PWA fonctionnent sur la majorité des navigateurs modernes. Pour les navigateurs plus anciens, nous mettons en place des solutions de fallback pour garantir une expérience utilisateur optimale."
- },
- {
- question: "Proposez-vous un support après le lancement ?",
- answer: "Oui, nous proposons plusieurs formules de maintenance incluant : mises à jour de sécurité, optimisations de performance, ajout de fonctionnalités et support technique."
- }
+ { key: "what-is-pwa" },
+ { key: "vs-native" },
+ { key: "offline" },
+ { key: "browser-compatibility" },
+ { key: "post-launch-support" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Analytics avancés",
- description: "Suivi détaillé du comportement utilisateur et des performances.",
- icon: LineChart
- },
- {
- title: "SEO optimisé",
- description: "Optimisation pour les moteurs de recherche et partage social.",
- icon: Globe
- },
- {
- title: "Sécurité renforcée",
- description: "Protection des données et communications sécurisées.",
- icon: Shield
- }
- ]
- }
- ]
+ { key: "advanced-analytics", icon: LineChart },
+ { key: "seo-optimized", icon: Search },
+ { key: "enhanced-security", icon: Shield },
+ ],
+ },
+ ],
};
-export default frontendCategory;
\ No newline at end of file
+export default frontendCategory;
diff --git a/apps/web/src/constants/services/integration.ts b/apps/web/src/constants/services/integration.ts
index 7215c0306..59096a466 100644
--- a/apps/web/src/constants/services/integration.ts
+++ b/apps/web/src/constants/services/integration.ts
@@ -1,11 +1,11 @@
-import {
- Layers,
- ShoppingBag,
- Globe,
- Box,
- Rocket,
- Palette,
- Settings,
+import {
+ Layers,
+ ShoppingBag,
+ Globe,
+ Box,
+ Rocket,
+ Palette,
+ Settings,
Shield,
Code,
Share2,
@@ -19,634 +19,219 @@ import {
Image as ImageIcon,
Shapes,
MousePointer,
- Users
+ Users,
} from "lucide-react";
-import { ServiceBenefit, ServiceCategoryData, ServiceCategory, ServiceProcessStep } from "@/types/service";
+import {
+ ServiceBenefit,
+ ServiceCategoryData,
+ ServiceCategory,
+ ServiceProcessStep,
+} from "@/types/service";
import Routes from "@/constants/routes";
const integrationBenefits: ServiceBenefit[] = [
- {
- title: "Code propre et maintenable",
- description: "Intégration avec des standards de code élevés et une architecture pensée pour la maintenabilité à long terme.",
- icon: Code
- },
- {
- title: "Performance optimisée",
- description: "Sites web rapides et fluides grâce à des techniques d'optimisation avancées et au respect des bonnes pratiques.",
- icon: Zap
- },
- {
- title: "Responsive design",
- description: "Adaptation parfaite à tous les écrans et appareils pour une expérience utilisateur cohérente.",
- icon: Layers
- },
- {
- title: "Animations fluides",
- description: "Intégration d'animations soignées pour enrichir l'expérience utilisateur tout en maintenant les performances.",
- icon: Rocket
- }
+ { key: "clean-maintainable-code", icon: Code },
+ { key: "optimized-performance", icon: Zap },
+ { key: "responsive-design", icon: Layers },
+ { key: "smooth-animations", icon: Rocket },
];
const integrationProcessList: ServiceProcessStep[] = [
- {
- title: "Analyse des maquettes",
- description: "Étude approfondie des maquettes pour identifier les composants, les interactions et les points d'attention techniques.",
- services: ["Analyse technique", "Architecture"]
- },
- {
- title: "Architecture technique",
- description: "Définition de l'architecture frontend et choix des technologies adaptées au projet.",
- services: ["Architecture", "Conseil technique"]
- },
- {
- title: "Développement des composants",
- description: "Création des composants réutilisables en suivant les principes du design system.",
- services: ["Développement Frontend", "Intégration"]
- },
- {
- title: "Intégration responsive",
- description: "Adaptation du design pour tous les formats d'écran avec une attention particulière à l'expérience mobile.",
- services: ["Intégration", "Responsive Design"]
- },
- {
- title: "Optimisation",
- description: "Optimisation des performances, de l'accessibilité et du référencement technique.",
- services: ["Performance", "SEO technique"]
- },
- {
- title: "Tests et validation",
- description: "Tests approfondis sur différents navigateurs et appareils pour garantir une expérience utilisateur optimale.",
- services: ["Tests", "Quality Assurance"]
- }
+ { key: "mockup-analysis" },
+ { key: "technical-architecture" },
+ { key: "component-development" },
+ { key: "responsive-integration" },
+ { key: "optimization" },
+ { key: "testing-validation" },
];
const integrationCategory: ServiceCategoryData = {
id: ServiceCategory.INTEGRATION,
- name: "Intégration",
- description: "Intégration sur les principales plateformes e-commerce et CMS",
icon: Layers,
benefits: integrationBenefits,
processList: integrationProcessList,
subServices: [
{
id: "shopify",
- name: "Shopify",
- description: "Création et personnalisation de boutiques en ligne Shopify",
route: Routes.service.integration.shopify,
icon: ShoppingBag,
- heroTitle: "Créez votre boutique en ligne avec Shopify",
- heroDescription: "Transformez votre vision e-commerce en réalité avec notre expertise Shopify. Nous créons des boutiques en ligne performantes, esthétiques et optimisées pour la conversion.",
features: [
- {
- title: "Design personnalisé",
- description: "Création d'un thème unique qui reflète votre marque et optimise l'expérience utilisateur.",
- icon: Palette
- },
- {
- title: "Optimisation des conversions",
- description: "Mise en place des meilleures pratiques pour maximiser vos ventes et fidéliser vos clients.",
- icon: Rocket
- },
- {
- title: "Sécurité renforcée",
- description: "Protection de vos données et de celles de vos clients avec les dernières normes de sécurité.",
- icon: Shield
- },
- {
- title: "Intégrations avancées",
- description: "Connection avec vos outils préférés pour la gestion des stocks, la comptabilité et le marketing.",
- icon: Settings
- }
+ { key: "custom-design", icon: Palette },
+ { key: "conversion-optimization", icon: Rocket },
+ { key: "enhanced-security", icon: Shield },
+ { key: "advanced-integrations", icon: Settings },
],
benefits: [
- {
- title: "Paiements sécurisés",
- description: "Intégration des principaux moyens de paiement et gestion sécurisée des transactions.",
- icon: CreditCard
- },
- {
- title: "International par défaut",
- description: "Vente dans le monde entier avec gestion multi-devises et traductions automatiques.",
- icon: Globe
- },
- {
- title: "Analytics puissant",
- description: "Suivi détaillé de vos performances et insights pour optimiser vos ventes.",
- icon: BarChart
- },
- {
- title: "Logistique simplifiée",
- description: "Gestion efficace des commandes et intégration avec les principaux transporteurs.",
- icon: Truck
- }
+ { key: "secure-payments", icon: CreditCard },
+ { key: "international-by-default", icon: Globe },
+ { key: "powerful-analytics", icon: BarChart },
+ { key: "simplified-logistics", icon: Truck },
],
faqItems: [
- {
- question: "Combien de temps faut-il pour créer une boutique Shopify ?",
- answer: "Le délai moyen pour créer une boutique Shopify varie de 4 à 8 semaines, selon la complexité du projet. Ce délai comprend la phase de design, le développement, l'intégration des produits et les tests."
- },
- {
- question: "Pouvez-vous migrer ma boutique existante vers Shopify ?",
- answer: "Oui, nous proposons un service complet de migration de votre boutique existante vers Shopify, incluant le transfert des produits, des clients et des commandes, tout en assurant une transition en douceur."
- },
- {
- question: "Quels types de personnalisation proposez-vous ?",
- answer: "Nous offrons une personnalisation complète de votre boutique Shopify : design sur mesure, fonctionnalités personnalisées, intégrations spécifiques, et optimisation pour mobile."
- },
- {
- question: "Proposez-vous un support après le lancement ?",
- answer: "Oui, nous proposons plusieurs formules de support et maintenance pour assurer le bon fonctionnement de votre boutique après son lancement, incluant les mises à jour, les optimisations et le support technique."
- },
- {
- question: "Comment assurez-vous la sécurité de ma boutique ?",
- answer: "Nous mettons en place les meilleures pratiques de sécurité : SSL, conformité PCI DSS, sauvegardes régulières, et protection contre les fraudes. Shopify assure également une sécurité de niveau bancaire pour toutes les transactions."
- }
+ { key: "creation-timeline" },
+ { key: "migration" },
+ { key: "customization-types" },
+ { key: "post-launch-support" },
+ { key: "security" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Référencement SEO",
- description: "Optimisation pour les moteurs de recherche pour augmenter votre visibilité.",
- icon: Search
- },
- {
- title: "Marketing digital",
- description: "Stratégies marketing adaptées pour attirer et convertir plus de clients.",
- icon: Share2
- },
- {
- title: "Formation",
- description: "Formation complète pour gérer votre boutique en toute autonomie.",
- icon: MessageSquare
- }
- ]
+ { key: "seo", icon: Search },
+ { key: "digital-marketing", icon: Share2 },
+ { key: "training", icon: MessageSquare },
+ ],
},
{
id: "wordpress",
- name: "WordPress",
- description: "Développement de sites WordPress sur mesure",
route: Routes.service.integration.wordpress,
icon: Globe,
- heroTitle: "Développement WordPress sur mesure",
- heroDescription: "Créez un site web professionnel qui vous ressemble avec WordPress. Notre expertise vous garantit un site performant, sécurisé et parfaitement adapté à vos besoins.",
features: [
- {
- title: "Thèmes sur mesure",
- description: "Création de thèmes personnalisés qui reflètent votre identité et répondent précisément à vos besoins.",
- icon: Palette
- },
- {
- title: "Performance optimisée",
- description: "Optimisation poussée pour garantir des temps de chargement rapides et une expérience utilisateur fluide.",
- icon: Rocket
- },
- {
- title: "Sécurité renforcée",
- description: "Mise en place des meilleures pratiques de sécurité pour protéger votre site et vos données.",
- icon: Shield
- },
- {
- title: "Administration simplifiée",
- description: "Interface d'administration personnalisée et intuitive pour une gestion facile de votre contenu.",
- icon: Settings
- }
+ { key: "custom-themes", icon: Palette },
+ { key: "optimized-performance", icon: Rocket },
+ { key: "enhanced-security", icon: Shield },
+ { key: "simplified-administration", icon: Settings },
],
benefits: [
- {
- title: "Administration intuitive",
- description: "Interface de gestion simple et intuitive pour gérer votre contenu en toute autonomie.",
- icon: LayoutDashboard
- },
- {
- title: "SEO optimisé",
- description: "Structure optimisée pour le référencement naturel et outils SEO intégrés.",
- icon: Search
- },
- {
- title: "Extensions puissantes",
- description: "Accès à des milliers de plugins pour étendre les fonctionnalités de votre site.",
- icon: Box
- },
- {
- title: "Performance maximale",
- description: "Optimisation avancée des performances pour une expérience utilisateur optimale.",
- icon: Zap
- }
+ { key: "intuitive-administration", icon: LayoutDashboard },
+ { key: "seo-optimized", icon: Search },
+ { key: "powerful-extensions", icon: Box },
+ { key: "maximum-performance", icon: Zap },
],
faqItems: [
- {
- question: "Combien de temps faut-il pour créer un site WordPress ?",
- answer: "Le délai moyen pour créer un site WordPress varie de 4 à 12 semaines, selon la complexité du projet. Ce délai comprend la phase de design, le développement du thème sur mesure, l'intégration du contenu et les tests."
- },
- {
- question: "Pouvez-vous migrer mon site existant vers WordPress ?",
- answer: "Oui, nous proposons un service complet de migration vers WordPress, incluant le transfert du contenu, des images et des fonctionnalités, tout en préservant votre référencement."
- },
- {
- question: "Comment gérez-vous la maintenance et les mises à jour ?",
- answer: "Nous proposons différentes formules de maintenance incluant les mises à jour de sécurité, les sauvegardes régulières, les mises à jour de WordPress et des plugins, ainsi que le monitoring des performances."
- },
- {
- question: "Mon site sera-t-il optimisé pour les mobiles ?",
- answer: "Absolument. Tous nos développements WordPress sont responsive par défaut, garantissant une expérience optimale sur tous les appareils : ordinateurs, tablettes et smartphones."
- },
- {
- question: "Quelle est votre approche en matière de sécurité ?",
- answer: "Nous mettons en place une stratégie de sécurité complète : authentification forte, pare-feu applicatif, monitoring des tentatives d'intrusion, sauvegardes automatisées et mises à jour de sécurité régulières."
- }
+ { key: "creation-timeline" },
+ { key: "migration" },
+ { key: "maintenance-updates" },
+ { key: "mobile-optimization" },
+ { key: "security-approach" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Développement sur mesure",
- description: "Création de fonctionnalités spécifiques pour répondre à vos besoins particuliers.",
- icon: Code
- },
- {
- title: "Marketing digital",
- description: "Stratégies marketing adaptées pour augmenter votre visibilité en ligne.",
- icon: Share2
- },
- {
- title: "Formation WordPress",
- description: "Formation personnalisée pour maîtriser la gestion de votre site.",
- icon: MessageSquare
- }
- ]
+ { key: "custom-development", icon: Code },
+ { key: "digital-marketing", icon: Share2 },
+ { key: "wordpress-training", icon: MessageSquare },
+ ],
},
{
id: "webflow",
- name: "Webflow",
- description: "Création de sites web modernes avec Webflow",
route: Routes.service.integration.webflow,
icon: Box,
- heroTitle: "Développement Webflow professionnel",
- heroDescription: "Donnez vie à votre vision avec Webflow. Notre expertise vous garantit un site web moderne, interactif et parfaitement adapté à vos besoins, sans compromis sur la qualité.",
features: [
- {
- title: "Design visuel avancé",
- description: "Création d'interfaces uniques et animations sophistiquées sans les limitations du codage traditionnel.",
- icon: Palette
- },
- {
- title: "Performance optimale",
- description: "Sites rapides et réactifs optimisés pour tous les appareils et navigateurs.",
- icon: Rocket
- },
- {
- title: "Interactions riches",
- description: "Animations et interactions utilisateur fluides pour une expérience web moderne et engageante.",
- icon: MousePointer
- },
- {
- title: "CMS intégré",
- description: "Système de gestion de contenu puissant et flexible pour une mise à jour facile.",
- icon: Settings
- }
+ { key: "advanced-visual-design", icon: Palette },
+ { key: "optimal-performance", icon: Rocket },
+ { key: "rich-interactions", icon: MousePointer },
+ { key: "integrated-cms", icon: Settings },
],
benefits: [
- {
- title: "Développement visuel",
- description: "Création de sites complexes sans écrire de code, tout en gardant un contrôle total sur le design.",
- icon: LayoutDashboard
- },
- {
- title: "SEO natif",
- description: "Outils de référencement intégrés et structure optimisée pour les moteurs de recherche.",
- icon: Search
- },
- {
- title: "Responsive par défaut",
- description: "Design parfaitement adapté à tous les écrans, des mobiles aux grands écrans.",
- icon: Layers
- },
- {
- title: "Hébergement optimisé",
- description: "Infrastructure cloud robuste avec CDN global pour des performances optimales.",
- icon: Zap
- }
+ { key: "visual-development", icon: LayoutDashboard },
+ { key: "native-seo", icon: Search },
+ { key: "responsive-by-default", icon: Layers },
+ { key: "optimized-hosting", icon: Zap },
],
faqItems: [
- {
- question: "Combien de temps faut-il pour créer un site Webflow ?",
- answer: "Le délai moyen pour créer un site Webflow varie de 3 à 8 semaines, selon la complexité du projet. Ce délai comprend la conception, le développement des interactions, l'intégration du contenu et les tests."
- },
- {
- question: "Puis-je facilement mettre à jour mon site moi-même ?",
- answer: "Absolument ! Webflow dispose d'un CMS intuitif que nous personnalisons selon vos besoins. Nous vous formons à son utilisation pour que vous puissiez gérer votre contenu en toute autonomie."
- },
- {
- question: "Webflow est-il adapté aux sites e-commerce ?",
- answer: "Oui, Webflow propose une solution e-commerce robuste que nous pouvons personnaliser pour créer votre boutique en ligne avec des fonctionnalités avancées et un design sur mesure."
- },
- {
- question: "Comment gérez-vous les animations et interactions ?",
- answer: "Webflow permet de créer des animations et interactions sophistiquées sans code. Nous concevons des expériences interactives fluides et professionnelles tout en maintenant des performances optimales."
- },
- {
- question: "Quelle est la qualité du référencement avec Webflow ?",
- answer: "Webflow génère un code propre et optimisé pour le SEO. Nous mettons en place les meilleures pratiques de référencement pour maximiser votre visibilité sur les moteurs de recherche."
- }
+ { key: "creation-timeline" },
+ { key: "self-update" },
+ { key: "ecommerce" },
+ { key: "animations-interactions" },
+ { key: "seo-quality" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Intégrations personnalisées",
- description: "Connection avec vos outils et services tiers préférés.",
- icon: Code
- },
- {
- title: "Stratégie digitale",
- description: "Accompagnement dans votre stratégie de présence en ligne.",
- icon: Share2
- },
- {
- title: "Formation Webflow",
- description: "Formation sur mesure pour maîtriser la gestion de votre site.",
- icon: MessageSquare
- }
- ]
+ { key: "custom-integrations", icon: Code },
+ { key: "digital-strategy", icon: Share2 },
+ { key: "webflow-training", icon: MessageSquare },
+ ],
},
{
id: "squarespace",
- name: "SquareSpace",
- description: "Intégration et personnalisation sur SquareSpace",
route: Routes.service.integration.squarespace,
icon: Layers,
- heroTitle: "Sites web élégants avec Squarespace",
- heroDescription: "Créez une présence en ligne raffinée avec Squarespace. Notre expertise vous garantit un site web esthétique, fonctionnel et parfaitement adapté à votre image de marque.",
features: [
- {
- title: "Design minimaliste",
- description: "Création de sites élégants et épurés qui mettent en valeur votre contenu et votre marque.",
- icon: Palette
- },
- {
- title: "Expérience fluide",
- description: "Navigation intuitive et performances optimisées pour une expérience utilisateur sans faille.",
- icon: Rocket
- },
- {
- title: "Gestion de contenu",
- description: "Interface d'administration simple et intuitive pour gérer votre contenu facilement.",
- icon: LayoutDashboard
- },
- {
- title: "Intégration média",
- description: "Mise en valeur optimale de vos images et médias avec des galeries dynamiques.",
- icon: ImageIcon
- }
+ { key: "minimalist-design", icon: Palette },
+ { key: "smooth-experience", icon: Rocket },
+ { key: "content-management", icon: LayoutDashboard },
+ { key: "media-integration", icon: ImageIcon },
],
benefits: [
- {
- title: "Templates professionnels",
- description: "Large choix de templates modernes et personnalisables pour tous les secteurs.",
- icon: Shapes
- },
- {
- title: "E-commerce intégré",
- description: "Solutions de vente en ligne complètes et personnalisables.",
- icon: ShoppingBag
- },
- {
- title: "Performance optimale",
- description: "Sites rapides et sécurisés hébergés sur une infrastructure robuste.",
- icon: Zap
- },
- {
- title: "Marketing intégré",
- description: "Outils marketing et analyses statistiques pour développer votre activité.",
- icon: Share2
- }
+ { key: "professional-templates", icon: Shapes },
+ { key: "integrated-ecommerce", icon: ShoppingBag },
+ { key: "optimal-performance", icon: Zap },
+ { key: "integrated-marketing", icon: Share2 },
],
faqItems: [
- {
- question: "Combien de temps faut-il pour créer un site Squarespace ?",
- answer: "Le délai moyen pour créer un site Squarespace varie de 2 à 6 semaines, selon la complexité du projet. Ce délai comprend la sélection et personnalisation du template, l'intégration du contenu et les tests."
- },
- {
- question: "Puis-je vendre des produits sur mon site Squarespace ?",
- answer: "Oui, Squarespace propose une solution e-commerce complète que nous pouvons configurer pour vous permettre de vendre vos produits en ligne, avec gestion des stocks, paiements sécurisés et options d'expédition."
- },
- {
- question: "Est-il facile de mettre à jour le contenu ?",
- answer: "Absolument ! L'interface de Squarespace est très intuitive. Nous vous formons à son utilisation pour que vous puissiez gérer votre contenu en toute autonomie."
- },
- {
- question: "Mon site sera-t-il optimisé pour le référencement ?",
- answer: "Oui, nous mettons en place les meilleures pratiques SEO de Squarespace et configurons tous les éléments nécessaires pour optimiser votre visibilité sur les moteurs de recherche."
- },
- {
- question: "Proposez-vous un service de maintenance ?",
- answer: "Oui, nous proposons différentes formules de maintenance incluant les mises à jour, le support technique et l'optimisation continue de votre site Squarespace."
- }
+ { key: "creation-timeline" },
+ { key: "product-sales" },
+ { key: "content-updates" },
+ { key: "seo-optimization" },
+ { key: "maintenance-service" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Personnalisation avancée",
- description: "Modifications CSS et Javascript pour personnaliser votre site au-delà des options standard.",
- icon: Code
- },
- {
- title: "Stratégie de contenu",
- description: "Accompagnement dans la création et l'optimisation de votre contenu.",
- icon: Share2
- },
- {
- title: "Formation utilisateur",
- description: "Formation complète pour maîtriser la gestion de votre site Squarespace.",
- icon: MessageSquare
- }
- ]
+ { key: "advanced-customization", icon: Code },
+ { key: "content-strategy", icon: Share2 },
+ { key: "user-training", icon: MessageSquare },
+ ],
},
{
id: "prestashop",
- name: "PrestaShop",
- description: "Développement de boutiques PrestaShop",
route: Routes.service.integration.prestashop,
icon: ShoppingBag,
- heroTitle: "Développement e-commerce avec PrestaShop",
- heroDescription: "Lancez une boutique en ligne professionnelle avec PrestaShop. Notre expertise vous garantit une solution e-commerce puissante, évolutive et parfaitement adaptée à vos besoins.",
features: [
- {
- title: "Design personnalisé",
- description: "Création de thèmes sur mesure qui reflètent votre marque et optimisent la conversion.",
- icon: Palette
- },
- {
- title: "Gestion avancée",
- description: "Interface d'administration puissante pour gérer vos produits, commandes et clients.",
- icon: LayoutDashboard
- },
- {
- title: "Performance optimisée",
- description: "Optimisation poussée pour des temps de chargement rapides et une expérience fluide.",
- icon: Rocket
- },
- {
- title: "Sécurité renforcée",
- description: "Protection avancée de votre boutique et des données de vos clients.",
- icon: Shield
- }
+ { key: "custom-design", icon: Palette },
+ { key: "advanced-management", icon: LayoutDashboard },
+ { key: "optimized-performance", icon: Rocket },
+ { key: "enhanced-security", icon: Shield },
],
benefits: [
- {
- title: "Gestion complète",
- description: "Contrôle total sur vos produits, stocks, commandes et relations clients.",
- icon: ShoppingBag
- },
- {
- title: "Multi-boutiques",
- description: "Gestion de plusieurs boutiques depuis une seule interface d'administration.",
- icon: Globe
- },
- {
- title: "Logistique intégrée",
- description: "Gestion avancée des transporteurs et des frais de livraison.",
- icon: Truck
- },
- {
- title: "Analyses détaillées",
- description: "Statistiques complètes pour suivre et optimiser vos performances.",
- icon: BarChart
- }
+ { key: "complete-management", icon: ShoppingBag },
+ { key: "multi-store", icon: Globe },
+ { key: "integrated-logistics", icon: Truck },
+ { key: "detailed-analytics", icon: BarChart },
],
faqItems: [
- {
- question: "Combien de temps faut-il pour créer une boutique PrestaShop ?",
- answer: "Le délai moyen pour créer une boutique PrestaShop varie de 6 à 12 semaines, selon la complexité du projet. Ce délai comprend la personnalisation du thème, le développement des fonctionnalités sur mesure, l'intégration des produits et les tests."
- },
- {
- question: "Pouvez-vous migrer ma boutique existante vers PrestaShop ?",
- answer: "Oui, nous proposons un service complet de migration vers PrestaShop, incluant le transfert des produits, clients, commandes et historiques, tout en préservant votre référencement."
- },
- {
- question: "PrestaShop est-il adapté aux grands catalogues de produits ?",
- answer: "Absolument ! PrestaShop est conçu pour gérer efficacement des catalogues de plusieurs milliers de produits avec des variations, tout en maintenant d'excellentes performances."
- },
- {
- question: "Proposez-vous des développements sur mesure ?",
- answer: "Oui, nous développons des modules et fonctionnalités sur mesure pour adapter PrestaShop à vos besoins spécifiques : intégrations ERP, processus métier personnalisés, etc."
- },
- {
- question: "Comment gérez-vous la maintenance et les mises à jour ?",
- answer: "Nous proposons différentes formules de maintenance incluant les mises à jour de sécurité, les sauvegardes, l'optimisation des performances et le support technique."
- }
+ { key: "creation-timeline" },
+ { key: "migration" },
+ { key: "large-catalogs" },
+ { key: "custom-development" },
+ { key: "maintenance-updates" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Modules sur mesure",
- description: "Développement de fonctionnalités spécifiques pour votre activité.",
- icon: Code
- },
- {
- title: "Marketing digital",
- description: "Stratégies marketing pour augmenter votre visibilité et vos ventes.",
- icon: Share2
- },
- {
- title: "Formation PrestaShop",
- description: "Formation personnalisée pour maîtriser la gestion de votre boutique.",
- icon: MessageSquare
- }
- ]
+ { key: "custom-modules", icon: Code },
+ { key: "digital-marketing", icon: Share2 },
+ { key: "prestashop-training", icon: MessageSquare },
+ ],
},
{
id: "strapi",
- name: "Strapi",
- description: "Développement de CMS headless avec Strapi",
route: Routes.service.integration.strapi,
icon: Box,
- heroTitle: "Développement CMS headless avec Strapi",
- heroDescription: "Développez des applications modernes avec Strapi. Notre expertise vous garantit une solution de gestion de contenu flexible, évolutive et parfaitement adaptée à vos besoins.",
features: [
- {
- title: "API sur mesure",
- description: "Création d'APIs RESTful et GraphQL personnalisées pour tous vos besoins.",
- icon: Code
- },
- {
- title: "Administration flexible",
- description: "Interface d'administration personnalisable selon vos processus métier.",
- icon: LayoutDashboard
- },
- {
- title: "Performance optimale",
- description: "Architecture performante pour des temps de réponse rapides.",
- icon: Rocket
- },
- {
- title: "Sécurité avancée",
- description: "Protection robuste de vos données et de vos APIs.",
- icon: Shield
- }
+ { key: "custom-api", icon: Code },
+ { key: "flexible-administration", icon: LayoutDashboard },
+ { key: "optimal-performance", icon: Rocket },
+ { key: "advanced-security", icon: Shield },
],
benefits: [
- {
- title: "100% JavaScript",
- description: "Développement unifié en JavaScript/Node.js pour plus d'efficacité.",
- icon: Code
- },
- {
- title: "Modèles flexibles",
- description: "Création de modèles de contenu personnalisés sans contraintes.",
- icon: Box
- },
- {
- title: "Gestion des rôles",
- description: "Contrôle précis des accès et des permissions utilisateurs.",
- icon: Users
- },
- {
- title: "Workflows avancés",
- description: "Automatisation des processus de publication et de validation.",
- icon: Settings
- }
+ { key: "100-javascript", icon: Code },
+ { key: "flexible-models", icon: Box },
+ { key: "role-management", icon: Users },
+ { key: "advanced-workflows", icon: Settings },
],
faqItems: [
- {
- question: "Combien de temps faut-il pour mettre en place un projet Strapi ?",
- answer: "Le délai moyen pour mettre en place un projet Strapi varie de 4 à 12 semaines, selon la complexité. Ce délai comprend la conception des modèles de contenu, le développement des APIs, la personnalisation de l'administration et les tests."
- },
- {
- question: "Strapi peut-il gérer des contenus multilingues ?",
- answer: "Oui, Strapi gère nativement le contenu multilingue. Nous pouvons configurer et personnaliser la gestion des traductions selon vos besoins spécifiques."
- },
- {
- question: "Est-il possible de migrer notre contenu existant vers Strapi ?",
- answer: "Oui, nous proposons un service complet de migration de contenu vers Strapi, incluant l'analyse de vos données existantes, la création de modèles adaptés et l'import de vos contenus."
- },
- {
- question: "Comment gérez-vous le déploiement et l'hébergement ?",
- answer: "Nous pouvons déployer Strapi sur différentes plateformes cloud (AWS, Google Cloud, DigitalOcean...) et mettre en place une infrastructure scalable avec des environnements de développement, staging et production."
- },
- {
- question: "Proposez-vous des développements de plugins personnalisés ?",
- answer: "Oui, nous développons des plugins Strapi sur mesure pour étendre les fonctionnalités selon vos besoins : intégrations spécifiques, workflows personnalisés, interfaces d'administration dédiées, etc."
- }
+ { key: "setup-timeline" },
+ { key: "multilingual" },
+ { key: "content-migration" },
+ { key: "deployment-hosting" },
+ { key: "custom-plugins" },
],
testimonials: [],
complementaryServices: [
- {
- title: "Développement frontend",
- description: "Création d'applications frontend connectées à votre API Strapi.",
- icon: Globe
- },
- {
- title: "Intégrations",
- description: "Connection avec vos outils et services tiers existants.",
- icon: Share2
- },
- {
- title: "Formation Strapi",
- description: "Formation personnalisée pour maîtriser la gestion de votre CMS.",
- icon: MessageSquare
- }
- ]
- }
- ]
+ { key: "frontend-development", icon: Globe },
+ { key: "integrations", icon: Share2 },
+ { key: "strapi-training", icon: MessageSquare },
+ ],
+ },
+ ],
};
-export default integrationCategory;
\ No newline at end of file
+export default integrationCategory;
diff --git a/apps/web/src/locales/en/app/services/[category]/[service]/page.json b/apps/web/src/locales/en/app/services/[category]/[service]/page.json
new file mode 100644
index 000000000..35dfb2db9
--- /dev/null
+++ b/apps/web/src/locales/en/app/services/[category]/[service]/page.json
@@ -0,0 +1,28 @@
+{
+ "metadata": {
+ "not-found": {
+ "title": "Service not found",
+ "description": "This service does not exist."
+ }
+ },
+ "features": {
+ "title": "Excellence in {service}",
+ "description": "Our expertise in {service} guarantees you professional and high-performance solutions."
+ },
+ "benefits": {
+ "title": "Professional {service}",
+ "description": "Discover the advantages of a professional {service} service."
+ },
+ "testimonials": {
+ "title": "They trust us",
+ "description": "Discover our clients' feedback on their {service} projects"
+ },
+ "faq": {
+ "title": "Frequently asked questions",
+ "description": "Everything you need to know about our {service} service"
+ },
+ "complementary": {
+ "title": "Complementary services",
+ "description": "Optimize your {service} project with our additional services"
+ }
+}
diff --git a/apps/web/src/locales/en/app/services/page.json b/apps/web/src/locales/en/app/services/page.json
index fcdeee787..2edee7311 100644
--- a/apps/web/src/locales/en/app/services/page.json
+++ b/apps/web/src/locales/en/app/services/page.json
@@ -2,5 +2,18 @@
"metadata": {
"title": "Digital services agency: web, mobile and UI/UX design",
"description": "Complete web development, mobile, UI/UX design and CMS integration services. Our agency creates custom solutions tailored to your goals."
+ },
+ "hero": {
+ "title": "Custom solutions for your digital projects",
+ "description": "From conception to delivery, we support you at every stage of your project with expertise and passion.",
+ "cta": "Start a project"
+ },
+ "technologies": {
+ "title": "Our technology stack",
+ "description": "We master a wide range of modern technologies to meet all your needs."
+ },
+ "process": {
+ "title": "Our work process",
+ "description": "A proven and flexible methodology to lead your project to success."
}
}
diff --git a/apps/web/src/locales/en/components/marketing/services/service-layout.json b/apps/web/src/locales/en/components/marketing/services/service-layout.json
new file mode 100644
index 000000000..4597c7399
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/services/service-layout.json
@@ -0,0 +1,28 @@
+{
+ "hero": {
+ "cta": "Discuss your project"
+ },
+ "cards": {
+ "custom": {
+ "title": "Custom solutions",
+ "description": "Tailored to your needs"
+ },
+ "support": {
+ "title": "Expert support",
+ "description": "By our specialists"
+ },
+ "technologies": {
+ "title": "Modern technologies",
+ "description": "Always up to date"
+ },
+ "scalability": {
+ "title": "Guaranteed scalability",
+ "description": "For your growth"
+ }
+ },
+ "cta": {
+ "title": "Ready to bring your project to life?",
+ "description": "Contact us to discuss your needs and get a personalized quote.",
+ "button": "Get started now"
+ }
+}
diff --git a/apps/web/src/locales/en/components/marketing/services/service-overview.json b/apps/web/src/locales/en/components/marketing/services/service-overview.json
new file mode 100644
index 000000000..2147ed00a
--- /dev/null
+++ b/apps/web/src/locales/en/components/marketing/services/service-overview.json
@@ -0,0 +1,29 @@
+{
+ "hero": {
+ "cta": "Discuss your project"
+ },
+ "expertise": {
+ "title": "Deep expertise in {service}",
+ "description": "We combine creativity and technical expertise to deliver {service} solutions that perfectly meet your objectives. Our methodical approach and experience allow us to create sustainable and scalable solutions."
+ },
+ "services": {
+ "badge": "Our services",
+ "title": "Custom {service} solutions",
+ "description": "Discover our complete range of {service} services, designed to meet all your needs and support you in achieving your projects.",
+ "learnMore": "Learn more"
+ },
+ "benefits": {
+ "badge": "Benefits",
+ "title": "Why choose our {service} services?"
+ },
+ "process": {
+ "badge": "Our process",
+ "title": "How we work",
+ "description": "An integrated approach that combines our different areas of expertise for optimal results."
+ },
+ "cta": {
+ "title": "Ready to bring your project to life?",
+ "description": "Contact us to discuss your needs and get a personalized quote.",
+ "button": "Get started now"
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/backend.json b/apps/web/src/locales/en/constants/services/backend.json
new file mode 100644
index 000000000..d27ad5f7b
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/backend.json
@@ -0,0 +1,56 @@
+{
+ "name": "Back-end Development",
+ "description": "Architecture and development of robust solutions",
+ "benefits": {
+ "scalable-architecture": {
+ "title": "Scalable architecture",
+ "description": "Systems designed to evolve with your growth, using modern and distributed architectures."
+ },
+ "optimized-database": {
+ "title": "Optimized database",
+ "description": "Database design and optimization for maximum performance and data integrity."
+ },
+ "robust-infrastructure": {
+ "title": "Robust infrastructure",
+ "description": "Deployment on modern cloud infrastructure with high availability and resilience."
+ },
+ "advanced-security": {
+ "title": "Advanced security",
+ "description": "Implementation of security best practices and protection of sensitive data."
+ }
+ },
+ "process": {
+ "needs-analysis": {
+ "title": "Needs analysis",
+ "description": "In-depth study of technical requirements, architecture definition and technology choices."
+ },
+ "system-design": {
+ "title": "System design",
+ "description": "Backend architecture design, data modeling and API definition."
+ },
+ "api-development": {
+ "title": "API development",
+ "description": "Implementation of RESTful or GraphQL APIs with complete documentation."
+ },
+ "database": {
+ "title": "Database",
+ "description": "Database setup and optimization with focus on performance and scalability."
+ },
+ "testing-security": {
+ "title": "Testing and security",
+ "description": "Implementation of automated tests and advanced security measures."
+ },
+ "deployment-monitoring": {
+ "title": "Deployment and monitoring",
+ "description": "Setting up cloud infrastructure, monitoring and alerts."
+ }
+ },
+ "process-services": {
+ "needs-analysis": ["Architecture", "Technical consulting"],
+ "system-design": ["Architecture", "Database Design"],
+ "api-development": ["API Development", "Documentation"],
+ "database": ["Database", "Optimization"],
+ "testing-security": ["Tests", "Security"],
+ "deployment-monitoring": ["DevOps", "Monitoring"]
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/backend/api.json b/apps/web/src/locales/en/constants/services/backend/api.json
new file mode 100644
index 000000000..c08ad8038
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/backend/api.json
@@ -0,0 +1,80 @@
+{
+ "name": "RESTful APIs",
+ "description": "Design and development of high-performance APIs",
+ "hero": {
+ "title": "RESTful & GraphQL APIs",
+ "description": "Develop modern, secure and high-performance APIs for your applications. Our expertise guarantees robust and scalable interfaces that meet your specific needs."
+ },
+ "features": {
+ "rest-graphql": {
+ "title": "REST & GraphQL",
+ "description": "Development of modern APIs with industry standards."
+ },
+ "advanced-security": {
+ "title": "Advanced security",
+ "description": "Robust protection against vulnerabilities and attacks."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Architecture optimized for minimal response times."
+ },
+ "complete-documentation": {
+ "title": "Complete documentation",
+ "description": "Clear and interactive documentation for easy integration."
+ }
+ },
+ "benefits": {
+ "high-availability": {
+ "title": "High availability",
+ "description": "Redundant infrastructure for maximum availability."
+ },
+ "scalability": {
+ "title": "Scalability",
+ "description": "Architecture designed to support growth."
+ },
+ "advanced-monitoring": {
+ "title": "Advanced monitoring",
+ "description": "Real-time tracking of performance and health."
+ },
+ "intelligent-cache": {
+ "title": "Intelligent cache",
+ "description": "Performance optimization with advanced caching."
+ }
+ },
+ "faq": {
+ "rest-vs-graphql": {
+ "question": "What is the difference between REST and GraphQL?",
+ "answer": "REST is a traditional architecture where each endpoint corresponds to a specific resource, while GraphQL allows clients to request exactly the data they need. We advise you on the best approach based on your specific needs and use cases."
+ },
+ "api-security": {
+ "question": "How do you ensure API security?",
+ "answer": "We implement multiple security layers: JWT authentication, SSL/TLS encryption, rate limiting, data validation, protection against injections and CSRF attacks. We also follow OWASP recommendations for API security."
+ },
+ "scaling": {
+ "question": "How do you handle scaling?",
+ "answer": "We design horizontally scalable APIs, with load balancing, distributed caching, and query optimization. The architecture is designed to support significant traffic growth."
+ },
+ "documentation": {
+ "question": "What documentation do you provide?",
+ "answer": "We provide comprehensive documentation: OpenAPI/Swagger technical documentation, integration guides, code examples, and test environment. Documentation is kept up to date with each API evolution."
+ },
+ "post-deployment-support": {
+ "question": "Do you offer post-deployment support?",
+ "answer": "Yes, we offer several maintenance plans including: 24/7 monitoring, technical support, continuous performance optimization, security updates and functional evolutions."
+ }
+ },
+ "complementary": {
+ "advanced-analytics": {
+ "title": "Advanced analytics",
+ "description": "Detailed analysis of usage and performance."
+ },
+ "data-migration": {
+ "title": "Data migration",
+ "description": "Migration from your existing systems."
+ },
+ "integration": {
+ "title": "Integration",
+ "description": "Support for integration with your applications."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/backend/bots.json b/apps/web/src/locales/en/constants/services/backend/bots.json
new file mode 100644
index 000000000..0ae7d38c4
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/backend/bots.json
@@ -0,0 +1,80 @@
+{
+ "name": "Discord/Slack Bots",
+ "description": "Development of bots and automations",
+ "hero": {
+ "title": "Bots & Automations",
+ "description": "Develop intelligent bots and automations to improve engagement and productivity of your community. Our expertise guarantees reliable and high-performance bots for Discord, Slack and other platforms."
+ },
+ "features": {
+ "discord-slack": {
+ "title": "Discord & Slack",
+ "description": "Custom bots for major communication platforms."
+ },
+ "advanced-commands": {
+ "title": "Advanced commands",
+ "description": "Intuitive interface with customizable commands."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Architecture optimized for maximum responsiveness."
+ },
+ "integrations": {
+ "title": "Integrations",
+ "description": "Connection with your existing tools and services."
+ }
+ },
+ "benefits": {
+ "intelligent-moderation": {
+ "title": "Intelligent moderation",
+ "description": "Automated management of your community and moderation."
+ },
+ "notifications": {
+ "title": "Notifications",
+ "description": "Custom alerts and automatic updates."
+ },
+ "engagement": {
+ "title": "Engagement",
+ "description": "Interactive features to animate your community."
+ },
+ "statistics": {
+ "title": "Statistics",
+ "description": "Detailed tracking of activity and interactions."
+ }
+ },
+ "faq": {
+ "bot-types": {
+ "question": "What types of bots can you develop?",
+ "answer": "We develop bots for various platforms (Discord, Slack, Telegram) with different features: moderation, customer support, task automation, statistics, games and community activities. Each bot is customized according to your specific needs."
+ },
+ "bot-reliability": {
+ "question": "How do you ensure bot reliability?",
+ "answer": "We implement several mechanisms: 24/7 monitoring, automatic restart in case of problems, detailed logs, and real-time alerts. We also perform thorough testing before each deployment."
+ },
+ "customization": {
+ "question": "Can commands and features be customized?",
+ "answer": "Yes, all our bots are fully customizable: commands, responses, permissions, integrations. We adapt each feature to your needs and moderation guidelines."
+ },
+ "security": {
+ "question": "How do you handle security?",
+ "answer": "Security is a priority: secure authentication, granular permissions, input validation, protection against spam and abuse. We follow each platform's best practices."
+ },
+ "post-deployment-support": {
+ "question": "Do you offer post-deployment support?",
+ "answer": "Yes, we offer several maintenance plans including: 24/7 monitoring, regular updates, technical support, and functional evolutions according to your needs."
+ }
+ },
+ "complementary": {
+ "analytics": {
+ "title": "Analytics",
+ "description": "Detailed tracking of usage and interactions."
+ },
+ "support-24-7": {
+ "title": "24/7 Support",
+ "description": "Continuous monitoring and rapid intervention."
+ },
+ "evolutions": {
+ "title": "Evolutions",
+ "description": "Regular addition of new features."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/backend/cloud.json b/apps/web/src/locales/en/constants/services/backend/cloud.json
new file mode 100644
index 000000000..dd4169e7e
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/backend/cloud.json
@@ -0,0 +1,80 @@
+{
+ "name": "Cloud Solutions",
+ "description": "Cloud infrastructure deployment and management",
+ "hero": {
+ "title": "Cloud Solutions",
+ "description": "Optimize your infrastructure with modern and scalable cloud solutions. Our expertise guarantees secure and high-performance deployment on major cloud platforms."
+ },
+ "features": {
+ "multi-cloud": {
+ "title": "Multi-cloud",
+ "description": "Support for major platforms (AWS, GCP, Azure)."
+ },
+ "advanced-security": {
+ "title": "Advanced security",
+ "description": "Robust protection of your data and applications."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Architecture optimized for maximum performance."
+ },
+ "automatic-scalability": {
+ "title": "Automatic scalability",
+ "description": "Dynamic adaptation to load requirements."
+ }
+ },
+ "benefits": {
+ "high-availability": {
+ "title": "High availability",
+ "description": "Redundant and resilient infrastructure."
+ },
+ "elastic-storage": {
+ "title": "Elastic storage",
+ "description": "Flexible and secure data management."
+ },
+ "advanced-monitoring": {
+ "title": "Advanced monitoring",
+ "description": "Real-time monitoring of your infrastructure."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Multi-layer protection of your resources."
+ }
+ },
+ "faq": {
+ "platform-choice": {
+ "question": "Which cloud platform to choose?",
+ "answer": "The choice depends on your specific needs: AWS excels in service variety, Google Cloud in machine learning, and Azure in Microsoft integration. We guide you to the best solution based on your objectives, technical constraints and budget."
+ },
+ "cloud-security": {
+ "question": "How do you handle security in the cloud?",
+ "answer": "We implement multi-layer security: data encryption at rest and in transit, IAM access control, virtual private networks (VPC), web application firewalls (WAF), and continuous threat monitoring. We follow each platform's best practices."
+ },
+ "cost-optimization": {
+ "question": "How do you optimize costs?",
+ "answer": "We use several strategies: reserved instances, automatic scaling, resource optimization, removal of unused resources, and cost monitoring. We perform regular audits to identify savings opportunities."
+ },
+ "high-availability": {
+ "question": "How do you ensure high availability?",
+ "answer": "We deploy your infrastructure across multiple availability zones, with data replication, load balancing, and automatic failover. We also set up robust disaster recovery plans (DRP)."
+ },
+ "support-24-7": {
+ "question": "Do you offer 24/7 support?",
+ "answer": "Yes, we offer several support levels including: 24/7 monitoring, automatic alerting, rapid incident intervention, preventive maintenance, and dedicated technical support."
+ }
+ },
+ "complementary": {
+ "cloud-migration": {
+ "title": "Cloud migration",
+ "description": "Smooth transition to the cloud."
+ },
+ "multi-region": {
+ "title": "Multi-region",
+ "description": "Global deployment of your applications."
+ },
+ "devops": {
+ "title": "DevOps",
+ "description": "Automation and CI/CD in the cloud."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/backend/database.json b/apps/web/src/locales/en/constants/services/backend/database.json
new file mode 100644
index 000000000..38216b781
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/backend/database.json
@@ -0,0 +1,80 @@
+{
+ "name": "Databases",
+ "description": "Database architecture and optimization",
+ "hero": {
+ "title": "Database Architecture",
+ "description": "Design and optimize your databases for optimal performance and maximum scalability. Our expertise guarantees a robust architecture that meets your current and future needs."
+ },
+ "features": {
+ "optimized-architecture": {
+ "title": "Optimized architecture",
+ "description": "Intelligent design of schemas and relationships for optimal performance."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Robust protection of sensitive data and compliance with standards."
+ },
+ "high-performance": {
+ "title": "High performance",
+ "description": "Query and index optimization for minimal response times."
+ },
+ "backup-recovery": {
+ "title": "Backup & Recovery",
+ "description": "Reliable backup and restoration strategies."
+ }
+ },
+ "benefits": {
+ "horizontal-scalability": {
+ "title": "Horizontal scalability",
+ "description": "Architecture designed for growth and scaling."
+ },
+ "replication": {
+ "title": "Replication",
+ "description": "High availability and geographic distribution of data."
+ },
+ "advanced-monitoring": {
+ "title": "Advanced monitoring",
+ "description": "Real-time tracking of performance and health."
+ },
+ "optimized-search": {
+ "title": "Optimized search",
+ "description": "Intelligent indexing for fast searches."
+ }
+ },
+ "faq": {
+ "sql-vs-nosql": {
+ "question": "How to choose between SQL and NoSQL?",
+ "answer": "The choice depends on your specific needs. SQL databases are ideal for structured data with complex relationships, while NoSQL excels at handling unstructured data and horizontal scalability. We guide you to the best solution based on your use cases."
+ },
+ "data-security": {
+ "question": "How do you handle data security?",
+ "answer": "We implement multiple security layers: encryption of sensitive data, granular access control, access auditing, regular backups, and compliance with security standards (GDPR, etc.). We also perform regular security tests."
+ },
+ "performance-optimization": {
+ "question": "How do you optimize performance?",
+ "answer": "We use several techniques: schema and query optimization, intelligent indexing, caching, data partitioning, and continuous monitoring. We regularly analyze performance to identify optimization opportunities."
+ },
+ "migration-services": {
+ "question": "Do you offer migration services?",
+ "answer": "Yes, we handle database migrations end-to-end: analysis of existing systems, planning, testing, data migration with minimal interruption, and post-migration validation. We ensure data consistency and integrity."
+ },
+ "data-availability": {
+ "question": "How do you ensure data availability?",
+ "answer": "We set up highly available architectures with replication, clustering, and disaster recovery plans. We perform regular backups and test restoration procedures."
+ }
+ },
+ "complementary": {
+ "data-migration": {
+ "title": "Data migration",
+ "description": "Secure transfer from your existing systems."
+ },
+ "audit-optimization": {
+ "title": "Audit & Optimization",
+ "description": "Performance analysis and recommendations."
+ },
+ "monitoring-24-7": {
+ "title": "24/7 Monitoring",
+ "description": "Continuous surveillance and real-time alerts."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/backend/microservices.json b/apps/web/src/locales/en/constants/services/backend/microservices.json
new file mode 100644
index 000000000..c14bd3f0f
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/backend/microservices.json
@@ -0,0 +1,80 @@
+{
+ "name": "Microservices",
+ "description": "Microservices architecture and development",
+ "hero": {
+ "title": "Microservices Architecture",
+ "description": "Transform your monolithic applications into modern and scalable microservices architectures. Our expertise guarantees flexible, resilient and high-performance infrastructure."
+ },
+ "features": {
+ "scalable-architecture": {
+ "title": "Scalable architecture",
+ "description": "Modular design for optimal scalability."
+ },
+ "continuous-deployment": {
+ "title": "Continuous deployment",
+ "description": "CI/CD pipeline for smooth updates."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Independent services for better responsiveness."
+ },
+ "high-availability": {
+ "title": "High availability",
+ "description": "Resilient architecture with redundancy."
+ }
+ },
+ "benefits": {
+ "granular-scalability": {
+ "title": "Granular scalability",
+ "description": "Independent scaling of each service."
+ },
+ "flexible-deployment": {
+ "title": "Flexible deployment",
+ "description": "Updates without service interruption."
+ },
+ "fault-isolation": {
+ "title": "Fault isolation",
+ "description": "Increased resilience through service isolation."
+ },
+ "advanced-monitoring": {
+ "title": "Advanced monitoring",
+ "description": "Detailed surveillance of each component."
+ }
+ },
+ "faq": {
+ "when-microservices": {
+ "question": "When to adopt a microservices architecture?",
+ "answer": "Microservices architecture is particularly suitable for complex applications requiring high scalability, independent component scaling, and rapid evolution. We evaluate with you whether this architecture matches your specific needs."
+ },
+ "service-communication": {
+ "question": "How do you handle communication between services?",
+ "answer": "We implement robust communication patterns: API Gateway, message brokers (Kafka, RabbitMQ), synchronous (REST, gRPC) and asynchronous communication. Each method is chosen according to specific performance and reliability needs."
+ },
+ "data-consistency": {
+ "question": "How do you ensure data consistency?",
+ "answer": "We use several strategies: Saga pattern for distributed transactions, Event Sourcing for traceability, and CQRS for separation of read and write operations. Eventual consistency is managed appropriately."
+ },
+ "infrastructure-monitoring": {
+ "question": "How do you monitor the infrastructure?",
+ "answer": "We set up comprehensive monitoring: performance metrics, distributed tracing, centralized logs, and intelligent alerting. Custom dashboards allow visualizing the health of each service."
+ },
+ "team-training": {
+ "question": "Do you offer team training?",
+ "answer": "Yes, we offer comprehensive training for your teams: microservices principles, development best practices, monitoring and troubleshooting, and use of DevOps tools."
+ }
+ },
+ "complementary": {
+ "devops-cicd": {
+ "title": "DevOps & CI/CD",
+ "description": "Complete deployment automation."
+ },
+ "monitoring-24-7": {
+ "title": "24/7 Monitoring",
+ "description": "Continuous surveillance and real-time alerts."
+ },
+ "optimization": {
+ "title": "Optimization",
+ "description": "Continuous performance improvement."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/design.json b/apps/web/src/locales/en/constants/services/design.json
new file mode 100644
index 000000000..6799496fd
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/design.json
@@ -0,0 +1,56 @@
+{
+ "name": "UI/UX Design",
+ "description": "Creating modern interfaces and optimal user experiences",
+ "benefits": {
+ "user-centered-design": {
+ "title": "User-centered UI/UX design",
+ "description": "An approach that places user needs at the heart of our designs, validated by interactive prototypes."
+ },
+ "creative-innovation": {
+ "title": "Creative innovation",
+ "description": "Creative UI/UX solutions and innovative prototypes that set your brand apart while respecting standards."
+ },
+ "iterative-prototyping": {
+ "title": "Iterative prototyping",
+ "description": "A methodology based on rapid prototypes and frequent iterations to refine the user experience."
+ },
+ "business-objectives": {
+ "title": "Business objectives",
+ "description": "UI/UX design aligned with your business goals, validated by user testing on prototypes."
+ }
+ },
+ "process": {
+ "needs-analysis": {
+ "title": "Needs analysis",
+ "description": "Crucial first step where we analyze your needs, brand and business objectives to define the UI/UX direction."
+ },
+ "research-moodboard": {
+ "title": "Research and moodboard",
+ "description": "Creating moodboards and exploring possible creative directions. Defining the overall artistic direction."
+ },
+ "wireframes": {
+ "title": "Wireframes",
+ "description": "Designing wireframes to validate structure, hierarchy and information architecture."
+ },
+ "interface-design": {
+ "title": "Interface design",
+ "description": "Creating final mockups while respecting your brand guidelines. Special attention to components and their reusability."
+ },
+ "prototyping": {
+ "title": "Prototyping",
+ "description": "Creating prototypes to test interactions and validate user journeys."
+ },
+ "development": {
+ "title": "Development",
+ "description": "Transforming mockups into functional interfaces, with particular attention to defined animations."
+ }
+ },
+ "process-services": {
+ "needs-analysis": ["UI/UX Design"],
+ "research-moodboard": ["UI/UX Design", "Moodboard"],
+ "wireframes": ["UI/UX Design", "Wireframes"],
+ "interface-design": ["UI/UX Design"],
+ "prototyping": ["UI/UX Design"],
+ "development": ["Frontend Development", "Integration"]
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/design/audit.json b/apps/web/src/locales/en/constants/services/design/audit.json
new file mode 100644
index 000000000..570a0a57e
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/design/audit.json
@@ -0,0 +1,80 @@
+{
+ "name": "UX/UI Audit",
+ "description": "Analysis and optimization of your existing interfaces",
+ "hero": {
+ "title": "UX/UI Audit & Optimization",
+ "description": "Improve the user experience of your interfaces with a professional audit. Our expertise guarantees an in-depth analysis and concrete recommendations to optimize your interfaces."
+ },
+ "features": {
+ "heuristic-analysis": {
+ "title": "Heuristic analysis",
+ "description": "Expert evaluation based on UX principles."
+ },
+ "user-testing": {
+ "title": "User testing",
+ "description": "Observation and analysis of real behaviors."
+ },
+ "analytics": {
+ "title": "Analytics",
+ "description": "Analysis of usage data."
+ },
+ "accessibility": {
+ "title": "Accessibility",
+ "description": "Verification of accessibility standards."
+ }
+ },
+ "benefits": {
+ "conversion": {
+ "title": "Conversion",
+ "description": "Identification of conversion barriers."
+ },
+ "performance": {
+ "title": "Performance",
+ "description": "Analysis of performance metrics."
+ },
+ "satisfaction": {
+ "title": "Satisfaction",
+ "description": "Measurement of user satisfaction."
+ },
+ "journeys": {
+ "title": "Journeys",
+ "description": "Optimization of user journeys."
+ }
+ },
+ "faq": {
+ "complete-audit": {
+ "question": "What does a complete UX/UI audit include?",
+ "answer": "A complete audit includes: heuristic analysis based on UX principles, user testing, analytics data analysis, accessibility evaluation, competitive benchmark, and detailed recommendations. We provide a comprehensive report with concrete solutions."
+ },
+ "audit-process": {
+ "question": "How does the audit process work?",
+ "answer": "The process begins with a discovery phase to understand your objectives and KPIs. We then perform various analyses (heuristic, data, testing), synthesize results, and prepare a detailed report with prioritized recommendations."
+ },
+ "deliverables": {
+ "question": "What deliverables are provided?",
+ "answer": "You receive a complete audit report including: executive summary, detailed analyses, data visualizations, identified issues with severity levels, prioritized recommendations, and suggested action plan."
+ },
+ "measuring-impact": {
+ "question": "How do you measure the impact of recommendations?",
+ "answer": "We define specific KPIs for each recommendation and set up tracking of key metrics (conversion rate, user satisfaction, task completion time, etc.) to measure the impact of improvements."
+ },
+ "post-audit-support": {
+ "question": "Do you offer post-audit support?",
+ "answer": "Yes, we offer support for implementing recommendations, including: action prioritization, implementation support, and results measurement. We can also conduct follow-up audits."
+ }
+ },
+ "complementary": {
+ "user-testing": {
+ "title": "User testing",
+ "description": "In-depth testing sessions with your users."
+ },
+ "advanced-analytics": {
+ "title": "Advanced analytics",
+ "description": "Setting up tracking and in-depth analysis."
+ },
+ "ux-training": {
+ "title": "UX training",
+ "description": "Training your teams in best practices."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/design/branding.json b/apps/web/src/locales/en/constants/services/design/branding.json
new file mode 100644
index 000000000..ef731f93b
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/design/branding.json
@@ -0,0 +1,80 @@
+{
+ "name": "Brand guidelines",
+ "description": "Creating your complete visual identity",
+ "hero": {
+ "title": "Branding & Brand Identity",
+ "description": "Bring your brand to life with a distinctive and memorable visual identity. Our branding expertise helps you create a brand image that resonates with your audience and reflects your values."
+ },
+ "features": {
+ "visual-identity": {
+ "title": "Visual identity",
+ "description": "Creating a unique and memorable identity."
+ },
+ "brand-values": {
+ "title": "Brand values",
+ "description": "Visual expression of your DNA and values."
+ },
+ "brand-guidelines": {
+ "title": "Brand guidelines",
+ "description": "Complete documentation of your identity."
+ },
+ "design-system": {
+ "title": "Design system",
+ "description": "Consistent and reusable visual elements."
+ }
+ },
+ "benefits": {
+ "recognition": {
+ "title": "Recognition",
+ "description": "Memorable and distinctive brand image."
+ },
+ "consistency": {
+ "title": "Consistency",
+ "description": "Unified visual communication across all media."
+ },
+ "trust": {
+ "title": "Trust",
+ "description": "Enhanced credibility with your audience."
+ },
+ "reach": {
+ "title": "Reach",
+ "description": "Strong visual impact across all channels."
+ }
+ },
+ "faq": {
+ "complete-identity": {
+ "question": "What does a complete brand identity include?",
+ "answer": "A complete brand identity includes the logo, color palette, typography, graphic elements, tone of voice, and usage rules. We provide a detailed brand guidelines document that documents all these elements and guides their consistent use."
+ },
+ "creation-process": {
+ "question": "How does the creation process work?",
+ "answer": "The process begins with a discovery phase to understand your brand, values and audience. We then develop creative concepts, create visual elements, and iterate based on your feedback. The process ends with the delivery of a complete brand guidelines document."
+ },
+ "deliverables": {
+ "question": "What deliverables are provided?",
+ "answer": "You receive a complete package including: logos (different versions), color palette, typography, graphic elements, document templates, usage guides, and source files in all necessary formats."
+ },
+ "uniqueness": {
+ "question": "How do you ensure identity uniqueness?",
+ "answer": "We conduct thorough research of your market and competition to create a distinctive identity. We also verify the availability of visual elements to avoid any conflict with existing brands."
+ },
+ "transition": {
+ "question": "How do you handle the transition to the new identity?",
+ "answer": "We provide a gradual deployment plan that guides the transition to the new identity. This includes recommendations for internal and external communication, and an implementation timeline."
+ }
+ },
+ "complementary": {
+ "marketing-kit": {
+ "title": "Marketing kit",
+ "description": "Creation of consistent marketing materials."
+ },
+ "social-media": {
+ "title": "Social media",
+ "description": "Adaptation for social media."
+ },
+ "print-materials": {
+ "title": "Print materials",
+ "description": "Creation of printed materials."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/design/moodboard.json b/apps/web/src/locales/en/constants/services/design/moodboard.json
new file mode 100644
index 000000000..24b914195
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/design/moodboard.json
@@ -0,0 +1,80 @@
+{
+ "name": "Moodboard",
+ "description": "Defining the visual identity and ambiance of your project",
+ "hero": {
+ "title": "Moodboards & Artistic Direction",
+ "description": "Bring your vision to life with carefully crafted moodboards. Our design expertise helps you define a clear and inspiring artistic direction for your project."
+ },
+ "features": {
+ "creative-direction": {
+ "title": "Creative direction",
+ "description": "Clear definition of the ambiance and visual style."
+ },
+ "color-palette": {
+ "title": "Color palette",
+ "description": "Harmonious selection of your identity colors."
+ },
+ "visual-style": {
+ "title": "Visual style",
+ "description": "Exploration and definition of your graphic universe."
+ },
+ "targeted-inspiration": {
+ "title": "Targeted inspiration",
+ "description": "In-depth research tailored to your industry."
+ }
+ },
+ "benefits": {
+ "clear-direction": {
+ "title": "Clear direction",
+ "description": "Shared vision and alignment of creative teams."
+ },
+ "visual-communication": {
+ "title": "Visual communication",
+ "description": "Effective support for sharing your vision."
+ },
+ "consistency": {
+ "title": "Consistency",
+ "description": "Guaranteed harmonious visual identity."
+ },
+ "creative-expertise": {
+ "title": "Creative expertise",
+ "description": "Professional advice and artistic direction."
+ }
+ },
+ "faq": {
+ "what-is-moodboard": {
+ "question": "What is a moodboard and what is it used for?",
+ "answer": "A moodboard is a visual assembly that defines the artistic direction of your project. It combines colors, typography, images and textures to create a coherent visual reference. It's an essential tool for communicating your vision and ensuring the consistency of your visual identity."
+ },
+ "creation-process": {
+ "question": "How does the creation process work?",
+ "answer": "The process begins with a discovery phase where we explore your goals and universe. We then conduct in-depth research to select appropriate visual elements. After several iterations and your feedback, we finalize the moodboard that will serve as a guide for your project."
+ },
+ "moodboard-elements": {
+ "question": "What elements does a moodboard include?",
+ "answer": "A professional moodboard typically includes: a color palette, typography, inspirational images, textures, patterns, and stylistic references. We also add explanatory notes to clarify creative choices."
+ },
+ "moodboard-usage": {
+ "question": "How do you use the moodboard throughout the project?",
+ "answer": "The moodboard serves as a reference throughout the project. It guides design decisions, ensures visual consistency and facilitates communication between all stakeholders. It's a living document that can evolve with your feedback."
+ },
+ "creation-timeline": {
+ "question": "How long does it take to create a moodboard?",
+ "answer": "Creating a professional moodboard typically takes 1 to 2 weeks, including the research phase, initial creation and iterations based on your feedback. This time allows us to explore in depth and refine the artistic direction."
+ }
+ },
+ "complementary": {
+ "brand-guidelines": {
+ "title": "Brand guidelines",
+ "description": "Creation of a complete brand guidelines document."
+ },
+ "style-guide": {
+ "title": "Style guide",
+ "description": "Detailed guide for using your identity."
+ },
+ "artistic-direction": {
+ "title": "Artistic direction",
+ "description": "Ongoing creative guidance."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/design/ui.json b/apps/web/src/locales/en/constants/services/design/ui.json
new file mode 100644
index 000000000..57d83c1e5
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/design/ui.json
@@ -0,0 +1,80 @@
+{
+ "name": "UI mockups",
+ "description": "Detailed design of user interfaces",
+ "hero": {
+ "title": "User Interface Design",
+ "description": "Create modern, elegant and intuitive interfaces for your applications. Our UI design expertise guarantees professional mockups that will captivate your users."
+ },
+ "features": {
+ "modern-design": {
+ "title": "Modern design",
+ "description": "Elegant interfaces following the latest trends."
+ },
+ "design-system": {
+ "title": "Design system",
+ "description": "Consistent and reusable components."
+ },
+ "responsive-design": {
+ "title": "Responsive design",
+ "description": "Perfect adaptation to all screens."
+ },
+ "animations-micro-interactions": {
+ "title": "Animations & micro-interactions",
+ "description": "Fluid and engaging interactions."
+ }
+ },
+ "benefits": {
+ "visual-identity": {
+ "title": "Visual identity",
+ "description": "Design consistent with your brand."
+ },
+ "user-experience": {
+ "title": "User experience",
+ "description": "Intuitive and pleasant interfaces to use."
+ },
+ "design-system": {
+ "title": "Design system",
+ "description": "Library of reusable components."
+ },
+ "accessibility": {
+ "title": "Accessibility",
+ "description": "Interfaces accessible to all users."
+ }
+ },
+ "faq": {
+ "ui-design-process": {
+ "question": "How does the UI design process work?",
+ "answer": "The process begins with analyzing your needs and brand identity. We then create initial versions of key screens, establish the design system, then iterate on detailed mockups. Each step includes your feedback to ensure a result perfectly aligned with your expectations."
+ },
+ "tools-deliverables": {
+ "question": "What tools and deliverables are provided?",
+ "answer": "We primarily use Figma for UI design. You receive detailed mockups of all screens, a complete design system with its components, specifications for developers, and assets necessary for integration."
+ },
+ "responsive-handling": {
+ "question": "How do you handle responsive design?",
+ "answer": "We follow a mobile-first approach and create mockups for each important breakpoint (mobile, tablet, desktop). Each interface is optimized to offer the best possible experience on its medium."
+ },
+ "design-consistency": {
+ "question": "How do you ensure design consistency?",
+ "answer": "We create a complete design system including a component library, typographic rules, color palette and design principles. This system ensures consistency throughout the interface."
+ },
+ "developer-handoff": {
+ "question": "How do you facilitate developer work?",
+ "answer": "We provide detailed specifications for each component, including measurements, styles, states and interactions. We also use tools like Zeplin or Figma exports to facilitate integration."
+ }
+ },
+ "complementary": {
+ "design-system": {
+ "title": "Design system",
+ "description": "Creation of a component library."
+ },
+ "prototyping": {
+ "title": "Prototyping",
+ "description": "Creation of interactive prototypes."
+ },
+ "development": {
+ "title": "Development",
+ "description": "Integration of your mockups into code."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/design/wireframes.json b/apps/web/src/locales/en/constants/services/design/wireframes.json
new file mode 100644
index 000000000..f0be142d7
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/design/wireframes.json
@@ -0,0 +1,80 @@
+{
+ "name": "Wireframes",
+ "description": "Designing structure and user journey",
+ "hero": {
+ "title": "Wireframes & UX Architecture",
+ "description": "Structure your user interfaces with professional wireframes. Our UX design expertise guarantees intuitive architecture and optimal user experience from the earliest stages of your project."
+ },
+ "features": {
+ "ux-architecture": {
+ "title": "UX architecture",
+ "description": "Clear and logical structure of your interfaces."
+ },
+ "user-journey": {
+ "title": "User journey",
+ "description": "Optimization of navigation flows."
+ },
+ "visual-hierarchy": {
+ "title": "Visual hierarchy",
+ "description": "Efficient organization of content and features."
+ },
+ "interactions": {
+ "title": "Interactions",
+ "description": "Definition of behaviors and transitions."
+ }
+ },
+ "benefits": {
+ "responsive-design": {
+ "title": "Responsive design",
+ "description": "Adaptation to all screen formats."
+ },
+ "rapid-prototyping": {
+ "title": "Rapid prototyping",
+ "description": "Efficient testing and iterations."
+ },
+ "collaboration": {
+ "title": "Collaboration",
+ "description": "Clear communication with all stakeholders."
+ },
+ "early-validation": {
+ "title": "Early validation",
+ "description": "Quick detection and correction of UX issues."
+ }
+ },
+ "faq": {
+ "what-is-wireframe": {
+ "question": "What is a wireframe and why is it important?",
+ "answer": "A wireframe is a schematic representation of your interface that focuses on structure, hierarchy and functionality, without the final design elements. It's a crucial step that validates information architecture and user experience before investing in detailed design."
+ },
+ "creation-process": {
+ "question": "How does the creation process work?",
+ "answer": "The process begins with analyzing your needs and objectives. We then create low-fidelity wireframes to validate the overall structure, then more detailed versions with interactions. After several iterations and your feedback, we finalize the wireframes that will serve as the basis for UI design."
+ },
+ "deliverables": {
+ "question": "What deliverables are provided?",
+ "answer": "You receive a complete set of wireframes for each key screen, user flow diagrams, interaction documentation, and interactive prototypes to test user journeys. All source files are also provided."
+ },
+ "responsive-handling": {
+ "question": "How do you handle responsive design?",
+ "answer": "We create wireframes adapted to each important screen format (desktop, tablet, mobile) following a mobile-first approach. Each version is optimized to offer the best possible user experience on its medium."
+ },
+ "creation-timeline": {
+ "question": "How long does wireframe creation take?",
+ "answer": "Duration depends on project complexity, but generally 2 to 4 weeks for a medium project, including analysis, creation, iterations and finalization phases. We establish a detailed schedule at the start of the project."
+ }
+ },
+ "complementary": {
+ "ux-audit": {
+ "title": "UX audit",
+ "description": "In-depth analysis of your existing interfaces."
+ },
+ "prototyping": {
+ "title": "Prototyping",
+ "description": "Creation of interactive prototypes."
+ },
+ "ux-documentation": {
+ "title": "UX documentation",
+ "description": "Detailed documentation of user journeys."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/frontend.json b/apps/web/src/locales/en/constants/services/frontend.json
new file mode 100644
index 000000000..a69b34166
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/frontend.json
@@ -0,0 +1,56 @@
+{
+ "name": "Front-end development",
+ "description": "Creating high-performance web and mobile applications",
+ "benefits": {
+ "scalable-architecture": {
+ "title": "Scalable architecture",
+ "description": "Applications built on modern and scalable architectures, ready for your project's evolution."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Focus on performance with advanced optimization and caching techniques."
+ },
+ "maintainable-code": {
+ "title": "Maintainable code",
+ "description": "Clean and modular architecture enabling easy maintenance and quick iterations."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Implementation of frontend security best practices to protect your users."
+ }
+ },
+ "process": {
+ "technical-architecture": {
+ "title": "Technical architecture",
+ "description": "Frontend architecture definition, technology selection and development environment setup."
+ },
+ "project-setup": {
+ "title": "Project setup",
+ "description": "Project configuration with development best practices, testing and continuous deployment."
+ },
+ "feature-development": {
+ "title": "Feature development",
+ "description": "Feature implementation with focus on code quality and performance."
+ },
+ "state-management": {
+ "title": "State management",
+ "description": "Setting up robust and performant state management for application data."
+ },
+ "testing-quality": {
+ "title": "Testing and quality",
+ "description": "Implementation of automated tests and quality assurance processes."
+ },
+ "optimization-monitoring": {
+ "title": "Optimization and monitoring",
+ "description": "Performance optimization and monitoring tools setup."
+ }
+ },
+ "process-services": {
+ "technical-architecture": ["Architecture", "Technical consulting"],
+ "project-setup": ["Technical setup", "CI/CD"],
+ "feature-development": ["Frontend development", "React", "Next.js"],
+ "state-management": ["State Management", "API Integration"],
+ "testing-quality": ["Unit tests", "E2E tests"],
+ "optimization-monitoring": ["Performance", "Analytics"]
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/frontend/desktop.json b/apps/web/src/locales/en/constants/services/frontend/desktop.json
new file mode 100644
index 000000000..96269817a
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/frontend/desktop.json
@@ -0,0 +1,80 @@
+{
+ "name": "Desktop software",
+ "description": "Cross-platform desktop application development",
+ "hero": {
+ "title": "Cross-platform desktop applications",
+ "description": "Develop modern and high-performance desktop applications for Windows, macOS and Linux. Our expertise guarantees professional applications that leverage the full power of desktop."
+ },
+ "features": {
+ "electron-react": {
+ "title": "Electron & React",
+ "description": "Modern technologies for performant and scalable desktop applications."
+ },
+ "multiplatform": {
+ "title": "Multiplatform",
+ "description": "Windows, macOS and Linux compatible applications from a single codebase."
+ },
+ "native-performance": {
+ "title": "Native performance",
+ "description": "Optimization to efficiently leverage system resources."
+ },
+ "system-integration": {
+ "title": "System integration",
+ "description": "Access to native operating system features."
+ }
+ },
+ "benefits": {
+ "windows-macos": {
+ "title": "Windows & macOS",
+ "description": "Native support for major desktop platforms."
+ },
+ "system-access": {
+ "title": "System access",
+ "description": "Direct interaction with the operating system."
+ },
+ "offline-mode": {
+ "title": "Offline mode",
+ "description": "Standalone operation without internet connection required."
+ },
+ "local-data": {
+ "title": "Local data",
+ "description": "Local storage and data processing for enhanced security."
+ }
+ },
+ "faq": {
+ "why-electron": {
+ "question": "Why choose Electron for desktop development?",
+ "answer": "Electron enables creating cross-platform desktop applications with modern web technologies (React, TypeScript). This offers rapid development, simplified maintenance and excellent user experience, while ensuring compatibility with Windows, macOS and Linux."
+ },
+ "security": {
+ "question": "How do you handle desktop application security?",
+ "answer": "We implement several security levels: encryption of sensitive data, protection against code injection, automatic security updates, and secure development best practices. We also follow security recommendations specific to each operating system."
+ },
+ "auto-update": {
+ "question": "Do you offer an automatic update system?",
+ "answer": "Yes, we integrate an automatic update system that enables easy deployment of new application versions. Users are notified of available updates and can install them with one click."
+ },
+ "distribution": {
+ "question": "How do you handle application distribution?",
+ "answer": "We manage the entire distribution process: creating installers for each platform, signing applications, publishing on stores if needed (Microsoft Store, Mac App Store), and setting up an automatic update system."
+ },
+ "post-launch-support": {
+ "question": "Do you offer support after launch?",
+ "answer": "Yes, we offer several maintenance plans including: technical support, bug fixes, security updates, performance optimizations and feature evolution."
+ }
+ },
+ "complementary": {
+ "telemetry": {
+ "title": "Telemetry",
+ "description": "Tracking performance and user behavior."
+ },
+ "distribution": {
+ "title": "Distribution",
+ "description": "Store publishing and update management."
+ },
+ "cloud-sync": {
+ "title": "Cloud sync",
+ "description": "Data synchronization with the cloud."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/frontend/mobile.json b/apps/web/src/locales/en/constants/services/frontend/mobile.json
new file mode 100644
index 000000000..8316d8ad6
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/frontend/mobile.json
@@ -0,0 +1,80 @@
+{
+ "name": "Mobile applications",
+ "description": "Creating native mobile applications with React Native",
+ "hero": {
+ "title": "React Native mobile development",
+ "description": "Create high-performance native mobile applications for iOS and Android with React Native. Our expertise guarantees robust applications and exceptional user experience."
+ },
+ "features": {
+ "react-native-expo": {
+ "title": "React Native & Expo",
+ "description": "Efficient cross-platform development for iOS and Android with a single codebase."
+ },
+ "native-design": {
+ "title": "Native design",
+ "description": "Interfaces respecting iOS and Android design guidelines for a familiar experience."
+ },
+ "native-performance": {
+ "title": "Native performance",
+ "description": "Advanced optimization for near-native performance on each platform."
+ },
+ "mobile-ui-ux": {
+ "title": "Mobile UI/UX",
+ "description": "Intuitive mobile interfaces following best practices of each platform."
+ }
+ },
+ "benefits": {
+ "multi-platform": {
+ "title": "Multi-platform",
+ "description": "Applications working on iOS and Android from a single codebase."
+ },
+ "tablet-support": {
+ "title": "Tablet support",
+ "description": "Interfaces adapted to different screen sizes and orientations."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Native optimization for maximum performance and fluidity."
+ },
+ "native-experience": {
+ "title": "Native experience",
+ "description": "Using native device features (camera, GPS, notifications...)."
+ }
+ },
+ "faq": {
+ "why-react-native": {
+ "question": "Why choose React Native for mobile development?",
+ "answer": "React Native enables developing high-performance applications for iOS and Android from a single codebase, reducing costs and development time while maintaining native quality. It also benefits from a large ecosystem and Meta (Facebook) support."
+ },
+ "performance": {
+ "question": "How do you ensure application performance?",
+ "answer": "We optimize every aspect of the application: startup time, memory consumption, smooth animations, data loading... We also use profiling tools to identify and resolve performance issues."
+ },
+ "store-publishing": {
+ "question": "Do you handle store publishing?",
+ "answer": "Yes, we handle the entire publishing process: asset preparation, developer account configuration, submission to stores (App Store and Play Store) and update tracking."
+ },
+ "updates": {
+ "question": "How do you manage application updates?",
+ "answer": "We set up OTA (Over The Air) update systems when possible, and manage updates via stores with an optimized process to minimize validation times."
+ },
+ "post-launch-support": {
+ "question": "Do you offer support after launch?",
+ "answer": "Yes, we offer various maintenance plans including: performance monitoring, bug fixes, security updates and feature evolution."
+ }
+ },
+ "complementary": {
+ "store-publishing": {
+ "title": "Store publishing",
+ "description": "Complete management of App Store and Play Store publishing."
+ },
+ "backend-integration": {
+ "title": "Backend integration",
+ "description": "Connection with your existing systems and APIs."
+ },
+ "react-native-training": {
+ "title": "React Native training",
+ "description": "Training your teams in React Native development."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/frontend/pwa.json b/apps/web/src/locales/en/constants/services/frontend/pwa.json
new file mode 100644
index 000000000..ed158009e
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/frontend/pwa.json
@@ -0,0 +1,80 @@
+{
+ "name": "Progressive web apps",
+ "description": "Creating high-performance progressive web applications",
+ "hero": {
+ "title": "Progressive web apps (PWA)",
+ "description": "Transform your website into a true installable application with Progressive Web Apps. Offer an exceptional user experience, online and offline."
+ },
+ "features": {
+ "native-installation": {
+ "title": "Native installation",
+ "description": "Installable applications directly from the browser, without going through stores."
+ },
+ "offline-mode": {
+ "title": "Offline mode",
+ "description": "Works even without internet connection thanks to smart caching."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Fast loading and smooth experience on all devices."
+ },
+ "push-notifications": {
+ "title": "Push notifications",
+ "description": "Improved user engagement through push notifications."
+ }
+ },
+ "benefits": {
+ "multi-platform": {
+ "title": "Multi-platform",
+ "description": "One application for all devices and operating systems."
+ },
+ "always-updated": {
+ "title": "Always updated",
+ "description": "Automatic updates without user action required."
+ },
+ "lightweight": {
+ "title": "Lightweight",
+ "description": "No heavy installation, instantly accessible."
+ },
+ "native-performance": {
+ "title": "Native performance",
+ "description": "User experience close to native applications."
+ }
+ },
+ "faq": {
+ "what-is-pwa": {
+ "question": "What is a Progressive Web App?",
+ "answer": "A PWA is a web application that offers an experience similar to a native application: it is installable, works offline, and can send push notifications. It combines the advantages of the web (accessibility, automatic update) and native (performance, advanced features)."
+ },
+ "vs-native": {
+ "question": "What are the advantages compared to a native application?",
+ "answer": "PWAs offer several advantages: no need to go through stores, automatic updates, faster and less expensive development, better referencing, and a single codebase for all platforms."
+ },
+ "offline": {
+ "question": "How does offline mode work?",
+ "answer": "We use Service Workers to cache essential resources and data. The application can thus work even without internet connection, with automatic synchronization once connection is restored."
+ },
+ "browser-compatibility": {
+ "question": "Are PWAs compatible with all browsers?",
+ "answer": "PWAs work on most modern browsers. For older browsers, we set up fallback solutions to guarantee an optimal user experience."
+ },
+ "post-launch-support": {
+ "question": "Do you offer support after launch?",
+ "answer": "Yes, we offer several maintenance plans including: security updates, performance optimizations, feature additions and technical support."
+ }
+ },
+ "complementary": {
+ "advanced-analytics": {
+ "title": "Advanced analytics",
+ "description": "Detailed tracking of user behavior and performance."
+ },
+ "seo-optimized": {
+ "title": "Optimized SEO",
+ "description": "Optimization for search engines and social sharing."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Data protection and secure communications."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/frontend/web.json b/apps/web/src/locales/en/constants/services/frontend/web.json
new file mode 100644
index 000000000..90b1ae9b6
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/frontend/web.json
@@ -0,0 +1,80 @@
+{
+ "name": "Web applications",
+ "description": "Modern web application development with React and Next.js",
+ "hero": {
+ "title": "Frontend web development",
+ "description": "Create modern, responsive and high-performance web applications with the latest frontend technologies. Our expertise guarantees you an exceptional user experience."
+ },
+ "features": {
+ "react-nextjs": {
+ "title": "React & Next.js",
+ "description": "Development with modern frameworks for performant and scalable applications."
+ },
+ "responsive-design": {
+ "title": "Responsive design",
+ "description": "Adaptive interfaces for optimal experience on all devices."
+ },
+ "web-performance": {
+ "title": "Web performance",
+ "description": "Advanced optimization for fast loading times and smooth experience."
+ },
+ "modern-ui-ux": {
+ "title": "Modern UI/UX",
+ "description": "Elegant and intuitive user interfaces following the latest trends."
+ }
+ },
+ "benefits": {
+ "reactive-apps": {
+ "title": "Reactive applications",
+ "description": "Dynamic and reactive interfaces for a smooth user experience."
+ },
+ "mobile-first": {
+ "title": "Mobile first",
+ "description": "Design thought for mobile first then adapted to larger screens."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Advanced optimization for minimal loading times."
+ },
+ "seo-optimized": {
+ "title": "SEO optimized",
+ "description": "Structure optimized for excellent natural referencing."
+ }
+ },
+ "faq": {
+ "technologies": {
+ "question": "What technologies do you use for frontend development?",
+ "answer": "We primarily use React with Next.js, as well as TypeScript for more robust code. We also integrate modern tools like Tailwind CSS for styling, and various libraries for animations and interactions."
+ },
+ "performance": {
+ "question": "How do you manage web application performance?",
+ "answer": "We apply optimization best practices: code splitting, lazy loading, image optimization, smart caching, and we use performance measurement tools to ensure optimal loading times."
+ },
+ "seo": {
+ "question": "Do you offer SEO solutions?",
+ "answer": "Yes, we develop applications with SEO in mind: server-side rendering (SSR), static page generation, dynamic meta-data, semantic structure and search engine optimization."
+ },
+ "browser-compatibility": {
+ "question": "How do you ensure compatibility with different browsers?",
+ "answer": "We test on major browsers and versions, use modern transpilation tools, and set up appropriate fallbacks to guarantee a consistent experience."
+ },
+ "maintenance": {
+ "question": "Do you offer maintenance for developed applications?",
+ "answer": "Yes, we offer various maintenance plans including security updates, continuous performance optimization, and feature evolution."
+ }
+ },
+ "complementary": {
+ "ui-ux-design": {
+ "title": "UI/UX design",
+ "description": "Design of modern and ergonomic user interfaces."
+ },
+ "api-integration": {
+ "title": "API integration",
+ "description": "Connection with your existing backend systems and services."
+ },
+ "internationalization": {
+ "title": "Internationalization",
+ "description": "Adapting your application for an international audience."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration.json b/apps/web/src/locales/en/constants/services/integration.json
new file mode 100644
index 000000000..90e4897ca
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration.json
@@ -0,0 +1,56 @@
+{
+ "name": "Integration",
+ "description": "Integration on major e-commerce and CMS platforms",
+ "benefits": {
+ "clean-maintainable-code": {
+ "title": "Clean and maintainable code",
+ "description": "Integration with high code standards and architecture designed for long-term maintainability."
+ },
+ "optimized-performance": {
+ "title": "Optimized performance",
+ "description": "Fast and smooth websites through advanced optimization techniques and best practices."
+ },
+ "responsive-design": {
+ "title": "Responsive design",
+ "description": "Perfect adaptation to all screens and devices for a consistent user experience."
+ },
+ "smooth-animations": {
+ "title": "Smooth animations",
+ "description": "Integration of polished animations to enrich user experience while maintaining performance."
+ }
+ },
+ "process": {
+ "mockup-analysis": {
+ "title": "Mockup analysis",
+ "description": "In-depth study of mockups to identify components, interactions and technical points of attention."
+ },
+ "technical-architecture": {
+ "title": "Technical architecture",
+ "description": "Definition of frontend architecture and selection of technologies suited to the project."
+ },
+ "component-development": {
+ "title": "Component development",
+ "description": "Creation of reusable components following design system principles."
+ },
+ "responsive-integration": {
+ "title": "Responsive integration",
+ "description": "Design adaptation for all screen formats with particular attention to mobile experience."
+ },
+ "optimization": {
+ "title": "Optimization",
+ "description": "Performance, accessibility and technical SEO optimization."
+ },
+ "testing-validation": {
+ "title": "Testing and validation",
+ "description": "Thorough testing on different browsers and devices to ensure optimal user experience."
+ }
+ },
+ "process-services": {
+ "mockup-analysis": ["Technical analysis", "Architecture"],
+ "technical-architecture": ["Architecture", "Technical consulting"],
+ "component-development": ["Frontend Development", "Integration"],
+ "responsive-integration": ["Integration", "Responsive Design"],
+ "optimization": ["Performance", "Technical SEO"],
+ "testing-validation": ["Testing", "Quality Assurance"]
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration/prestashop.json b/apps/web/src/locales/en/constants/services/integration/prestashop.json
new file mode 100644
index 000000000..5ad5215a3
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration/prestashop.json
@@ -0,0 +1,80 @@
+{
+ "name": "PrestaShop",
+ "description": "PrestaShop store development",
+ "hero": {
+ "title": "E-commerce development with PrestaShop",
+ "description": "Launch a professional online store with PrestaShop. Our expertise guarantees a powerful, scalable e-commerce solution perfectly adapted to your needs."
+ },
+ "features": {
+ "custom-design": {
+ "title": "Custom design",
+ "description": "Creation of custom themes that reflect your brand and optimize conversion."
+ },
+ "advanced-management": {
+ "title": "Advanced management",
+ "description": "Powerful admin interface to manage your products, orders and customers."
+ },
+ "optimized-performance": {
+ "title": "Optimized performance",
+ "description": "Advanced optimization for fast loading times and smooth experience."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Advanced protection of your store and your customers' data."
+ }
+ },
+ "benefits": {
+ "complete-management": {
+ "title": "Complete management",
+ "description": "Full control over your products, inventory, orders and customer relationships."
+ },
+ "multi-store": {
+ "title": "Multi-store",
+ "description": "Management of multiple stores from a single admin interface."
+ },
+ "integrated-logistics": {
+ "title": "Integrated logistics",
+ "description": "Advanced carrier and shipping cost management."
+ },
+ "detailed-analytics": {
+ "title": "Detailed analytics",
+ "description": "Complete statistics to track and optimize your performance."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "How long does it take to create a PrestaShop store?",
+ "answer": "The average time to create a PrestaShop store varies from 6 to 12 weeks, depending on project complexity. This includes theme customization, custom feature development, product integration and testing."
+ },
+ "migration": {
+ "question": "Can you migrate my existing store to PrestaShop?",
+ "answer": "Yes, we offer a complete migration service to PrestaShop, including transfer of products, customers, orders and history, while preserving your SEO."
+ },
+ "large-catalogs": {
+ "question": "Is PrestaShop suitable for large product catalogs?",
+ "answer": "Absolutely! PrestaShop is designed to efficiently manage catalogs of several thousand products with variations, while maintaining excellent performance."
+ },
+ "custom-development": {
+ "question": "Do you offer custom development?",
+ "answer": "Yes, we develop custom modules and features to adapt PrestaShop to your specific needs: ERP integrations, custom business processes, etc."
+ },
+ "maintenance-updates": {
+ "question": "How do you handle maintenance and updates?",
+ "answer": "We offer different maintenance plans including security updates, backups, performance optimization and technical support."
+ }
+ },
+ "complementary": {
+ "custom-modules": {
+ "title": "Custom modules",
+ "description": "Development of specific features for your business."
+ },
+ "digital-marketing": {
+ "title": "Digital marketing",
+ "description": "Marketing strategies to increase your visibility and sales."
+ },
+ "prestashop-training": {
+ "title": "PrestaShop training",
+ "description": "Custom training to master your store management."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration/shopify.json b/apps/web/src/locales/en/constants/services/integration/shopify.json
new file mode 100644
index 000000000..a4371afc0
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration/shopify.json
@@ -0,0 +1,80 @@
+{
+ "name": "Shopify",
+ "description": "Creation and customization of Shopify online stores",
+ "hero": {
+ "title": "Create your online store with Shopify",
+ "description": "Transform your e-commerce vision into reality with our Shopify expertise. We create high-performance, aesthetic and conversion-optimized online stores."
+ },
+ "features": {
+ "custom-design": {
+ "title": "Custom design",
+ "description": "Creation of a unique theme that reflects your brand and optimizes user experience."
+ },
+ "conversion-optimization": {
+ "title": "Conversion optimization",
+ "description": "Implementation of best practices to maximize your sales and retain your customers."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Protection of your data and your customers' data with the latest security standards."
+ },
+ "advanced-integrations": {
+ "title": "Advanced integrations",
+ "description": "Connection with your favorite tools for inventory management, accounting and marketing."
+ }
+ },
+ "benefits": {
+ "secure-payments": {
+ "title": "Secure payments",
+ "description": "Integration of major payment methods and secure transaction management."
+ },
+ "international-by-default": {
+ "title": "International by default",
+ "description": "Sell worldwide with multi-currency management and automatic translations."
+ },
+ "powerful-analytics": {
+ "title": "Powerful analytics",
+ "description": "Detailed tracking of your performance and insights to optimize your sales."
+ },
+ "simplified-logistics": {
+ "title": "Simplified logistics",
+ "description": "Efficient order management and integration with major carriers."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "How long does it take to create a Shopify store?",
+ "answer": "The average time to create a Shopify store varies from 4 to 8 weeks, depending on project complexity. This includes the design phase, development, product integration and testing."
+ },
+ "migration": {
+ "question": "Can you migrate my existing store to Shopify?",
+ "answer": "Yes, we offer a complete migration service from your existing store to Shopify, including transfer of products, customers and orders, while ensuring a smooth transition."
+ },
+ "customization-types": {
+ "question": "What types of customization do you offer?",
+ "answer": "We offer complete customization of your Shopify store: custom design, custom features, specific integrations, and mobile optimization."
+ },
+ "post-launch-support": {
+ "question": "Do you offer post-launch support?",
+ "answer": "Yes, we offer several support and maintenance plans to ensure the smooth operation of your store after launch, including updates, optimizations and technical support."
+ },
+ "security": {
+ "question": "How do you ensure the security of my store?",
+ "answer": "We implement security best practices: SSL, PCI DSS compliance, regular backups, and fraud protection. Shopify also provides bank-level security for all transactions."
+ }
+ },
+ "complementary": {
+ "seo": {
+ "title": "SEO",
+ "description": "Search engine optimization to increase your visibility."
+ },
+ "digital-marketing": {
+ "title": "Digital marketing",
+ "description": "Marketing strategies adapted to attract and convert more customers."
+ },
+ "training": {
+ "title": "Training",
+ "description": "Complete training to manage your store independently."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration/squarespace.json b/apps/web/src/locales/en/constants/services/integration/squarespace.json
new file mode 100644
index 000000000..2d8627bbd
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration/squarespace.json
@@ -0,0 +1,80 @@
+{
+ "name": "SquareSpace",
+ "description": "Integration and customization on SquareSpace",
+ "hero": {
+ "title": "Elegant websites with Squarespace",
+ "description": "Create a refined online presence with Squarespace. Our expertise guarantees an aesthetic, functional website perfectly adapted to your brand image."
+ },
+ "features": {
+ "minimalist-design": {
+ "title": "Minimalist design",
+ "description": "Creation of elegant and clean sites that showcase your content and brand."
+ },
+ "smooth-experience": {
+ "title": "Smooth experience",
+ "description": "Intuitive navigation and optimized performance for a flawless user experience."
+ },
+ "content-management": {
+ "title": "Content management",
+ "description": "Simple and intuitive admin interface to easily manage your content."
+ },
+ "media-integration": {
+ "title": "Media integration",
+ "description": "Optimal showcase of your images and media with dynamic galleries."
+ }
+ },
+ "benefits": {
+ "professional-templates": {
+ "title": "Professional templates",
+ "description": "Wide choice of modern and customizable templates for all industries."
+ },
+ "integrated-ecommerce": {
+ "title": "Integrated e-commerce",
+ "description": "Complete and customizable online sales solutions."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Fast and secure sites hosted on robust infrastructure."
+ },
+ "integrated-marketing": {
+ "title": "Integrated marketing",
+ "description": "Marketing tools and statistical analysis to grow your business."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "How long does it take to create a Squarespace site?",
+ "answer": "The average time to create a Squarespace site varies from 2 to 6 weeks, depending on project complexity. This includes template selection and customization, content integration and testing."
+ },
+ "product-sales": {
+ "question": "Can I sell products on my Squarespace site?",
+ "answer": "Yes, Squarespace offers a complete e-commerce solution that we can configure to allow you to sell your products online, with inventory management, secure payments and shipping options."
+ },
+ "content-updates": {
+ "question": "Is it easy to update the content?",
+ "answer": "Absolutely! Squarespace's interface is very intuitive. We train you on its use so you can manage your content independently."
+ },
+ "seo-optimization": {
+ "question": "Will my site be optimized for SEO?",
+ "answer": "Yes, we implement Squarespace SEO best practices and configure all necessary elements to optimize your visibility on search engines."
+ },
+ "maintenance-service": {
+ "question": "Do you offer maintenance service?",
+ "answer": "Yes, we offer different maintenance plans including updates, technical support and continuous optimization of your Squarespace site."
+ }
+ },
+ "complementary": {
+ "advanced-customization": {
+ "title": "Advanced customization",
+ "description": "CSS and Javascript modifications to customize your site beyond standard options."
+ },
+ "content-strategy": {
+ "title": "Content strategy",
+ "description": "Support in creating and optimizing your content."
+ },
+ "user-training": {
+ "title": "User training",
+ "description": "Complete training to master your Squarespace site management."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration/strapi.json b/apps/web/src/locales/en/constants/services/integration/strapi.json
new file mode 100644
index 000000000..5267e8251
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration/strapi.json
@@ -0,0 +1,80 @@
+{
+ "name": "Strapi",
+ "description": "Headless CMS development with Strapi",
+ "hero": {
+ "title": "Headless CMS development with Strapi",
+ "description": "Develop modern applications with Strapi. Our expertise guarantees a flexible, scalable content management solution perfectly adapted to your needs."
+ },
+ "features": {
+ "custom-api": {
+ "title": "Custom API",
+ "description": "Creation of custom RESTful and GraphQL APIs for all your needs."
+ },
+ "flexible-administration": {
+ "title": "Flexible administration",
+ "description": "Customizable admin interface according to your business processes."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "High-performance architecture for fast response times."
+ },
+ "advanced-security": {
+ "title": "Advanced security",
+ "description": "Robust protection of your data and APIs."
+ }
+ },
+ "benefits": {
+ "100-javascript": {
+ "title": "100% JavaScript",
+ "description": "Unified development in JavaScript/Node.js for more efficiency."
+ },
+ "flexible-models": {
+ "title": "Flexible models",
+ "description": "Creation of custom content models without constraints."
+ },
+ "role-management": {
+ "title": "Role management",
+ "description": "Precise control of access and user permissions."
+ },
+ "advanced-workflows": {
+ "title": "Advanced workflows",
+ "description": "Automation of publication and validation processes."
+ }
+ },
+ "faq": {
+ "setup-timeline": {
+ "question": "How long does it take to set up a Strapi project?",
+ "answer": "The average time to set up a Strapi project varies from 4 to 12 weeks, depending on complexity. This includes content model design, API development, admin customization and testing."
+ },
+ "multilingual": {
+ "question": "Can Strapi handle multilingual content?",
+ "answer": "Yes, Strapi natively handles multilingual content. We can configure and customize translation management according to your specific needs."
+ },
+ "content-migration": {
+ "question": "Is it possible to migrate our existing content to Strapi?",
+ "answer": "Yes, we offer a complete content migration service to Strapi, including analysis of your existing data, creation of adapted models and import of your content."
+ },
+ "deployment-hosting": {
+ "question": "How do you handle deployment and hosting?",
+ "answer": "We can deploy Strapi on different cloud platforms (AWS, Google Cloud, DigitalOcean...) and set up scalable infrastructure with development, staging and production environments."
+ },
+ "custom-plugins": {
+ "question": "Do you offer custom plugin development?",
+ "answer": "Yes, we develop custom Strapi plugins to extend functionality according to your needs: specific integrations, custom workflows, dedicated admin interfaces, etc."
+ }
+ },
+ "complementary": {
+ "frontend-development": {
+ "title": "Frontend development",
+ "description": "Creation of frontend applications connected to your Strapi API."
+ },
+ "integrations": {
+ "title": "Integrations",
+ "description": "Connection with your existing third-party tools and services."
+ },
+ "strapi-training": {
+ "title": "Strapi training",
+ "description": "Custom training to master your CMS management."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration/webflow.json b/apps/web/src/locales/en/constants/services/integration/webflow.json
new file mode 100644
index 000000000..9871d26f3
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration/webflow.json
@@ -0,0 +1,80 @@
+{
+ "name": "Webflow",
+ "description": "Creation of modern websites with Webflow",
+ "hero": {
+ "title": "Professional Webflow Development",
+ "description": "Bring your vision to life with Webflow. Our expertise guarantees a modern, interactive website perfectly adapted to your needs, without compromising on quality."
+ },
+ "features": {
+ "advanced-visual-design": {
+ "title": "Advanced visual design",
+ "description": "Creation of unique interfaces and sophisticated animations without the limitations of traditional coding."
+ },
+ "optimal-performance": {
+ "title": "Optimal performance",
+ "description": "Fast and responsive sites optimized for all devices and browsers."
+ },
+ "rich-interactions": {
+ "title": "Rich interactions",
+ "description": "Smooth user animations and interactions for a modern and engaging web experience."
+ },
+ "integrated-cms": {
+ "title": "Integrated CMS",
+ "description": "Powerful and flexible content management system for easy updates."
+ }
+ },
+ "benefits": {
+ "visual-development": {
+ "title": "Visual development",
+ "description": "Creation of complex sites without writing code, while maintaining full control over design."
+ },
+ "native-seo": {
+ "title": "Native SEO",
+ "description": "Built-in SEO tools and structure optimized for search engines."
+ },
+ "responsive-by-default": {
+ "title": "Responsive by default",
+ "description": "Design perfectly adapted to all screens, from mobile to large screens."
+ },
+ "optimized-hosting": {
+ "title": "Optimized hosting",
+ "description": "Robust cloud infrastructure with global CDN for optimal performance."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "How long does it take to create a Webflow site?",
+ "answer": "The average time to create a Webflow site varies from 3 to 8 weeks, depending on project complexity. This includes design, interaction development, content integration and testing."
+ },
+ "self-update": {
+ "question": "Can I easily update my site myself?",
+ "answer": "Absolutely! Webflow has an intuitive CMS that we customize to your needs. We train you on its use so you can manage your content independently."
+ },
+ "ecommerce": {
+ "question": "Is Webflow suitable for e-commerce sites?",
+ "answer": "Yes, Webflow offers a robust e-commerce solution that we can customize to create your online store with advanced features and custom design."
+ },
+ "animations-interactions": {
+ "question": "How do you handle animations and interactions?",
+ "answer": "Webflow allows creating sophisticated animations and interactions without code. We design smooth and professional interactive experiences while maintaining optimal performance."
+ },
+ "seo-quality": {
+ "question": "What is the SEO quality with Webflow?",
+ "answer": "Webflow generates clean, SEO-optimized code. We implement SEO best practices to maximize your visibility on search engines."
+ }
+ },
+ "complementary": {
+ "custom-integrations": {
+ "title": "Custom integrations",
+ "description": "Connection with your favorite third-party tools and services."
+ },
+ "digital-strategy": {
+ "title": "Digital strategy",
+ "description": "Support in your online presence strategy."
+ },
+ "webflow-training": {
+ "title": "Webflow training",
+ "description": "Custom training to master your site management."
+ }
+ }
+}
diff --git a/apps/web/src/locales/en/constants/services/integration/wordpress.json b/apps/web/src/locales/en/constants/services/integration/wordpress.json
new file mode 100644
index 000000000..7a30a5862
--- /dev/null
+++ b/apps/web/src/locales/en/constants/services/integration/wordpress.json
@@ -0,0 +1,80 @@
+{
+ "name": "WordPress",
+ "description": "Custom WordPress website development",
+ "hero": {
+ "title": "Custom WordPress Development",
+ "description": "Create a professional website that reflects you with WordPress. Our expertise guarantees a high-performance, secure site perfectly adapted to your needs."
+ },
+ "features": {
+ "custom-themes": {
+ "title": "Custom themes",
+ "description": "Creation of custom themes that reflect your identity and precisely meet your needs."
+ },
+ "optimized-performance": {
+ "title": "Optimized performance",
+ "description": "Advanced optimization to guarantee fast loading times and smooth user experience."
+ },
+ "enhanced-security": {
+ "title": "Enhanced security",
+ "description": "Implementation of security best practices to protect your site and your data."
+ },
+ "simplified-administration": {
+ "title": "Simplified administration",
+ "description": "Custom and intuitive admin interface for easy content management."
+ }
+ },
+ "benefits": {
+ "intuitive-administration": {
+ "title": "Intuitive administration",
+ "description": "Simple and intuitive management interface to manage your content independently."
+ },
+ "seo-optimized": {
+ "title": "SEO optimized",
+ "description": "Structure optimized for natural search and integrated SEO tools."
+ },
+ "powerful-extensions": {
+ "title": "Powerful extensions",
+ "description": "Access to thousands of plugins to extend your site's functionality."
+ },
+ "maximum-performance": {
+ "title": "Maximum performance",
+ "description": "Advanced performance optimization for optimal user experience."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "How long does it take to create a WordPress site?",
+ "answer": "The average time to create a WordPress site varies from 4 to 12 weeks, depending on project complexity. This includes the design phase, custom theme development, content integration and testing."
+ },
+ "migration": {
+ "question": "Can you migrate my existing site to WordPress?",
+ "answer": "Yes, we offer a complete migration service to WordPress, including transfer of content, images and features, while preserving your SEO."
+ },
+ "maintenance-updates": {
+ "question": "How do you handle maintenance and updates?",
+ "answer": "We offer different maintenance plans including security updates, regular backups, WordPress and plugin updates, as well as performance monitoring."
+ },
+ "mobile-optimization": {
+ "question": "Will my site be optimized for mobile?",
+ "answer": "Absolutely. All our WordPress developments are responsive by default, guaranteeing an optimal experience on all devices: computers, tablets and smartphones."
+ },
+ "security-approach": {
+ "question": "What is your approach to security?",
+ "answer": "We implement a comprehensive security strategy: strong authentication, web application firewall, intrusion attempt monitoring, automated backups and regular security updates."
+ }
+ },
+ "complementary": {
+ "custom-development": {
+ "title": "Custom development",
+ "description": "Creation of specific features to meet your particular needs."
+ },
+ "digital-marketing": {
+ "title": "Digital marketing",
+ "description": "Marketing strategies adapted to increase your online visibility."
+ },
+ "wordpress-training": {
+ "title": "WordPress training",
+ "description": "Custom training to master your site management."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/app/services/[category]/[service]/page.json b/apps/web/src/locales/fr/app/services/[category]/[service]/page.json
new file mode 100644
index 000000000..e16db09fa
--- /dev/null
+++ b/apps/web/src/locales/fr/app/services/[category]/[service]/page.json
@@ -0,0 +1,28 @@
+{
+ "metadata": {
+ "not-found": {
+ "title": "Service non trouvé",
+ "description": "Ce service n'existe pas."
+ }
+ },
+ "features": {
+ "title": "Excellence en {service}",
+ "description": "Notre expertise en {service} vous garantit des solutions professionnelles et performantes."
+ },
+ "benefits": {
+ "title": "{service} professionnel",
+ "description": "Découvrez les avantages d'un service {service} professionnel."
+ },
+ "testimonials": {
+ "title": "Ils nous font confiance",
+ "description": "Découvrez les retours de nos clients sur leurs projets {service}"
+ },
+ "faq": {
+ "title": "Questions fréquentes",
+ "description": "Tout ce que vous devez savoir sur notre service de {service}"
+ },
+ "complementary": {
+ "title": "Services complémentaires",
+ "description": "Optimisez votre projet {service} avec nos services additionnels"
+ }
+}
diff --git a/apps/web/src/locales/fr/app/services/page.json b/apps/web/src/locales/fr/app/services/page.json
index b8c9e6e57..b82ebc7df 100644
--- a/apps/web/src/locales/fr/app/services/page.json
+++ b/apps/web/src/locales/fr/app/services/page.json
@@ -2,5 +2,18 @@
"metadata": {
"title": "Agence de services digitaux : web, mobile et design UI/UX",
"description": "Services complets de développement web, mobile, design UI/UX et intégration CMS. Notre agence crée des solutions sur mesure qui répondent à vos objectifs."
+ },
+ "hero": {
+ "title": "Des solutions sur mesure pour vos projets digitaux",
+ "description": "De la conception à la réalisation, nous vous accompagnons à chaque étape de votre projet avec expertise et passion.",
+ "cta": "Démarrer un projet"
+ },
+ "technologies": {
+ "title": "Notre stack technologique",
+ "description": "Nous maîtrisons un large éventail de technologies modernes pour répondre à tous vos besoins."
+ },
+ "process": {
+ "title": "Notre processus de travail",
+ "description": "Une méthodologie éprouvée et flexible pour mener votre projet vers le succès."
}
}
diff --git a/apps/web/src/locales/fr/components/marketing/services/service-layout.json b/apps/web/src/locales/fr/components/marketing/services/service-layout.json
new file mode 100644
index 000000000..fb8898ca9
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/services/service-layout.json
@@ -0,0 +1,28 @@
+{
+ "hero": {
+ "cta": "Discuter de votre projet"
+ },
+ "cards": {
+ "custom": {
+ "title": "Solutions sur mesure",
+ "description": "Adaptées à vos besoins"
+ },
+ "support": {
+ "title": "Support expert",
+ "description": "Par nos spécialistes"
+ },
+ "technologies": {
+ "title": "Technologies modernes",
+ "description": "Toujours à jour"
+ },
+ "scalability": {
+ "title": "Évolutivité garantie",
+ "description": "Pour votre croissance"
+ }
+ },
+ "cta": {
+ "title": "Prêt à concrétiser votre projet ?",
+ "description": "Contactez-nous pour discuter de vos besoins et obtenir un devis personnalisé.",
+ "button": "Commencer maintenant"
+ }
+}
diff --git a/apps/web/src/locales/fr/components/marketing/services/service-overview.json b/apps/web/src/locales/fr/components/marketing/services/service-overview.json
new file mode 100644
index 000000000..6e064df59
--- /dev/null
+++ b/apps/web/src/locales/fr/components/marketing/services/service-overview.json
@@ -0,0 +1,29 @@
+{
+ "hero": {
+ "cta": "Discuter de votre projet"
+ },
+ "expertise": {
+ "title": "Une expertise pointue en {service}",
+ "description": "Nous combinons créativité et expertise technique pour offrir des solutions {service} qui répondent parfaitement à vos objectifs. Notre approche méthodique et notre expérience nous permettent de créer des solutions durables et évolutives."
+ },
+ "services": {
+ "badge": "Nos services",
+ "title": "Solutions {service} sur mesure",
+ "description": "Découvrez notre gamme complète de services {service}, conçue pour répondre à tous vos besoins et vous accompagner dans la réalisation de vos projets.",
+ "learnMore": "En savoir plus"
+ },
+ "benefits": {
+ "badge": "Avantages",
+ "title": "Pourquoi choisir nos services {service} ?"
+ },
+ "process": {
+ "badge": "Notre processus",
+ "title": "Comment nous travaillons",
+ "description": "Une approche intégrée qui combine nos différentes expertises pour un résultat optimal."
+ },
+ "cta": {
+ "title": "Prêt à concrétiser votre projet ?",
+ "description": "Contactez-nous pour discuter de vos besoins et obtenir un devis personnalisé.",
+ "button": "Commencer maintenant"
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/backend.json b/apps/web/src/locales/fr/constants/services/backend.json
new file mode 100644
index 000000000..53ed52d85
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/backend.json
@@ -0,0 +1,56 @@
+{
+ "name": "Développement Back-end",
+ "description": "Architecture et développement de solutions robustes",
+ "benefits": {
+ "scalable-architecture": {
+ "title": "Architecture scalable",
+ "description": "Systèmes conçus pour évoluer avec votre croissance, utilisant des architectures modernes et distribuées."
+ },
+ "optimized-database": {
+ "title": "Base de données optimisée",
+ "description": "Conception et optimisation des bases de données pour des performances maximales et une intégrité des données."
+ },
+ "robust-infrastructure": {
+ "title": "Infrastructure robuste",
+ "description": "Déploiement sur des infrastructures cloud modernes avec haute disponibilité et résilience."
+ },
+ "advanced-security": {
+ "title": "Sécurité avancée",
+ "description": "Implémentation des meilleures pratiques de sécurité et de protection des données sensibles."
+ }
+ },
+ "process": {
+ "needs-analysis": {
+ "title": "Analyse des besoins",
+ "description": "Étude approfondie des besoins techniques, définition de l'architecture et des choix technologiques."
+ },
+ "system-design": {
+ "title": "Conception système",
+ "description": "Design de l'architecture backend, modélisation des données et définition des APIs."
+ },
+ "api-development": {
+ "title": "Développement API",
+ "description": "Implémentation des APIs RESTful ou GraphQL avec documentation complète."
+ },
+ "database": {
+ "title": "Base de données",
+ "description": "Mise en place et optimisation des bases de données avec focus sur la performance et la scalabilité."
+ },
+ "testing-security": {
+ "title": "Tests et sécurité",
+ "description": "Implémentation des tests automatisés et des mesures de sécurité avancées."
+ },
+ "deployment-monitoring": {
+ "title": "Déploiement et monitoring",
+ "description": "Mise en place de l'infrastructure cloud, du monitoring et des alertes."
+ }
+ },
+ "process-services": {
+ "needs-analysis": ["Architecture", "Conseil technique"],
+ "system-design": ["Architecture", "Database Design"],
+ "api-development": ["API Development", "Documentation"],
+ "database": ["Database", "Optimisation"],
+ "testing-security": ["Tests", "Security"],
+ "deployment-monitoring": ["DevOps", "Monitoring"]
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/backend/api.json b/apps/web/src/locales/fr/constants/services/backend/api.json
new file mode 100644
index 000000000..6f60671fa
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/backend/api.json
@@ -0,0 +1,80 @@
+{
+ "name": "APIs RESTful",
+ "description": "Conception et développement d'APIs performantes",
+ "hero": {
+ "title": "APIs RESTful & GraphQL",
+ "description": "Développez des APIs modernes, sécurisées et performantes pour vos applications. Notre expertise vous garantit des interfaces robustes et évolutives qui répondent à vos besoins spécifiques."
+ },
+ "features": {
+ "rest-graphql": {
+ "title": "REST & GraphQL",
+ "description": "Développement d'APIs modernes avec les standards de l'industrie."
+ },
+ "advanced-security": {
+ "title": "Sécurité avancée",
+ "description": "Protection robuste contre les vulnérabilités et les attaques."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Architecture optimisée pour des temps de réponse minimaux."
+ },
+ "complete-documentation": {
+ "title": "Documentation complète",
+ "description": "Documentation claire et interactive pour une intégration facile."
+ }
+ },
+ "benefits": {
+ "high-availability": {
+ "title": "Haute disponibilité",
+ "description": "Infrastructure redondante pour une disponibilité maximale."
+ },
+ "scalability": {
+ "title": "Scalabilité",
+ "description": "Architecture conçue pour supporter la croissance."
+ },
+ "advanced-monitoring": {
+ "title": "Monitoring avancé",
+ "description": "Suivi en temps réel des performances et de la santé."
+ },
+ "intelligent-cache": {
+ "title": "Cache intelligent",
+ "description": "Optimisation des performances avec mise en cache avancée."
+ }
+ },
+ "faq": {
+ "rest-vs-graphql": {
+ "question": "Quelle est la différence entre REST et GraphQL ?",
+ "answer": "REST est une architecture traditionnelle où chaque endpoint correspond à une ressource spécifique, tandis que GraphQL permet aux clients de demander exactement les données dont ils ont besoin. Nous vous conseillons la meilleure approche selon vos besoins spécifiques et vos cas d'usage."
+ },
+ "api-security": {
+ "question": "Comment assurez-vous la sécurité des APIs ?",
+ "answer": "Nous implémentons plusieurs niveaux de sécurité : authentification JWT, chiffrement SSL/TLS, rate limiting, validation des données, protection contre les injections et les attaques CSRF. Nous suivons également les recommandations OWASP pour la sécurité des APIs."
+ },
+ "scaling": {
+ "question": "Comment gérez-vous la montée en charge ?",
+ "answer": "Nous concevons des APIs scalables horizontalement, avec load balancing, mise en cache distribuée, et optimisation des requêtes. L'architecture est pensée pour supporter une croissance importante du trafic."
+ },
+ "documentation": {
+ "question": "Quelle documentation fournissez-vous ?",
+ "answer": "Nous fournissons une documentation complète : documentation technique OpenAPI/Swagger, guides d'intégration, exemples de code, et environnement de test. La documentation est maintenue à jour avec chaque évolution de l'API."
+ },
+ "post-deployment-support": {
+ "question": "Proposez-vous un support après le déploiement ?",
+ "answer": "Oui, nous proposons plusieurs formules de maintenance incluant : monitoring 24/7, support technique, optimisation continue des performances, mises à jour de sécurité et évolutions fonctionnelles."
+ }
+ },
+ "complementary": {
+ "advanced-analytics": {
+ "title": "Analytics avancés",
+ "description": "Analyse détaillée de l'utilisation et des performances."
+ },
+ "data-migration": {
+ "title": "Migration de données",
+ "description": "Migration depuis vos systèmes existants."
+ },
+ "integration": {
+ "title": "Intégration",
+ "description": "Support pour l'intégration avec vos applications."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/backend/bots.json b/apps/web/src/locales/fr/constants/services/backend/bots.json
new file mode 100644
index 000000000..7ac351245
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/backend/bots.json
@@ -0,0 +1,80 @@
+{
+ "name": "Bots Discord/Slack",
+ "description": "Développement de bots et d'automatisations",
+ "hero": {
+ "title": "Bots & Automatisations",
+ "description": "Développez des bots intelligents et des automatisations pour améliorer l'engagement et la productivité de votre communauté. Notre expertise vous garantit des bots fiables et performants pour Discord, Slack et autres plateformes."
+ },
+ "features": {
+ "discord-slack": {
+ "title": "Discord & Slack",
+ "description": "Bots personnalisés pour les principales plateformes de communication."
+ },
+ "advanced-commands": {
+ "title": "Commandes avancées",
+ "description": "Interface intuitive avec commandes personnalisables."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Architecture optimisée pour une réactivité maximale."
+ },
+ "integrations": {
+ "title": "Intégrations",
+ "description": "Connection avec vos outils et services existants."
+ }
+ },
+ "benefits": {
+ "intelligent-moderation": {
+ "title": "Modération intelligente",
+ "description": "Gestion automatisée de votre communauté et modération."
+ },
+ "notifications": {
+ "title": "Notifications",
+ "description": "Alertes personnalisées et mises à jour automatiques."
+ },
+ "engagement": {
+ "title": "Engagement",
+ "description": "Fonctionnalités interactives pour animer votre communauté."
+ },
+ "statistics": {
+ "title": "Statistiques",
+ "description": "Suivi détaillé de l'activité et des interactions."
+ }
+ },
+ "faq": {
+ "bot-types": {
+ "question": "Quels types de bots pouvez-vous développer ?",
+ "answer": "Nous développons des bots pour diverses plateformes (Discord, Slack, Telegram) avec différentes fonctionnalités : modération, support client, automatisation de tâches, statistiques, jeux et animations communautaires. Chaque bot est personnalisé selon vos besoins spécifiques."
+ },
+ "bot-reliability": {
+ "question": "Comment assurez-vous la fiabilité des bots ?",
+ "answer": "Nous implémentons plusieurs mécanismes : monitoring 24/7, redémarrage automatique en cas de problème, logs détaillés, et alertes en temps réel. Nous effectuons également des tests approfondis avant chaque déploiement."
+ },
+ "customization": {
+ "question": "Peut-on personnaliser les commandes et fonctionnalités ?",
+ "answer": "Oui, tous nos bots sont entièrement personnalisables : commandes, réponses, permissions, intégrations. Nous adaptons chaque fonctionnalité à vos besoins et votre charte de modération."
+ },
+ "security": {
+ "question": "Comment gérez-vous la sécurité ?",
+ "answer": "La sécurité est une priorité : authentification sécurisée, permissions granulaires, validation des entrées, protection contre le spam et les abus. Nous suivons les meilleures pratiques de chaque plateforme."
+ },
+ "post-deployment-support": {
+ "question": "Proposez-vous un support après le déploiement ?",
+ "answer": "Oui, nous proposons plusieurs formules de maintenance incluant : surveillance 24/7, mises à jour régulières, support technique, et évolutions fonctionnelles selon vos besoins."
+ }
+ },
+ "complementary": {
+ "analytics": {
+ "title": "Analytics",
+ "description": "Suivi détaillé de l'utilisation et des interactions."
+ },
+ "support-24-7": {
+ "title": "Support 24/7",
+ "description": "Surveillance continue et intervention rapide."
+ },
+ "evolutions": {
+ "title": "Évolutions",
+ "description": "Ajout régulier de nouvelles fonctionnalités."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/backend/cloud.json b/apps/web/src/locales/fr/constants/services/backend/cloud.json
new file mode 100644
index 000000000..1a4d4db4b
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/backend/cloud.json
@@ -0,0 +1,80 @@
+{
+ "name": "Solutions Cloud",
+ "description": "Déploiement et gestion d'infrastructures cloud",
+ "hero": {
+ "title": "Solutions Cloud",
+ "description": "Optimisez votre infrastructure avec des solutions cloud modernes et évolutives. Notre expertise vous garantit un déploiement sécurisé et performant sur les principales plateformes cloud."
+ },
+ "features": {
+ "multi-cloud": {
+ "title": "Multi-cloud",
+ "description": "Support des principales plateformes (AWS, GCP, Azure)."
+ },
+ "advanced-security": {
+ "title": "Sécurité avancée",
+ "description": "Protection robuste de vos données et applications."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Architecture optimisée pour des performances maximales."
+ },
+ "automatic-scalability": {
+ "title": "Scalabilité automatique",
+ "description": "Adaptation dynamique aux besoins de charge."
+ }
+ },
+ "benefits": {
+ "high-availability": {
+ "title": "Haute disponibilité",
+ "description": "Infrastructure redondante et résiliente."
+ },
+ "elastic-storage": {
+ "title": "Stockage élastique",
+ "description": "Gestion flexible et sécurisée des données."
+ },
+ "advanced-monitoring": {
+ "title": "Monitoring avancé",
+ "description": "Surveillance en temps réel de votre infrastructure."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Protection multicouche de vos ressources."
+ }
+ },
+ "faq": {
+ "platform-choice": {
+ "question": "Quelle plateforme cloud choisir ?",
+ "answer": "Le choix dépend de vos besoins spécifiques : AWS excelle en variété de services, Google Cloud en machine learning, et Azure en intégration Microsoft. Nous vous guidons vers la meilleure solution en fonction de vos objectifs, contraintes techniques et budget."
+ },
+ "cloud-security": {
+ "question": "Comment gérez-vous la sécurité dans le cloud ?",
+ "answer": "Nous implémentons une sécurité multicouche : chiffrement des données au repos et en transit, contrôle d'accès IAM, réseaux privés virtuels (VPC), pare-feu applicatifs (WAF), et surveillance continue des menaces. Nous suivons les meilleures pratiques de chaque plateforme."
+ },
+ "cost-optimization": {
+ "question": "Comment optimisez-vous les coûts ?",
+ "answer": "Nous utilisons plusieurs stratégies : instances réservées, scaling automatique, optimisation des ressources, suppression des ressources inutilisées, et monitoring des coûts. Nous effectuons des audits réguliers pour identifier les opportunités d'économies."
+ },
+ "high-availability": {
+ "question": "Comment assurez-vous la haute disponibilité ?",
+ "answer": "Nous déployons votre infrastructure sur plusieurs zones de disponibilité, avec réplication des données, load balancing, et failover automatique. Nous mettons également en place des plans de reprise d'activité (DRP) robustes."
+ },
+ "support-24-7": {
+ "question": "Proposez-vous un support 24/7 ?",
+ "answer": "Oui, nous proposons plusieurs niveaux de support incluant : monitoring 24/7, alerting automatique, intervention rapide en cas d'incident, maintenance préventive, et support technique dédié."
+ }
+ },
+ "complementary": {
+ "cloud-migration": {
+ "title": "Migration cloud",
+ "description": "Transition en douceur vers le cloud."
+ },
+ "multi-region": {
+ "title": "Multi-région",
+ "description": "Déploiement global de vos applications."
+ },
+ "devops": {
+ "title": "DevOps",
+ "description": "Automatisation et CI/CD dans le cloud."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/backend/database.json b/apps/web/src/locales/fr/constants/services/backend/database.json
new file mode 100644
index 000000000..323bb6a5c
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/backend/database.json
@@ -0,0 +1,80 @@
+{
+ "name": "Bases de données",
+ "description": "Architecture et optimisation de bases de données",
+ "hero": {
+ "title": "Architecture de Bases de Données",
+ "description": "Concevez et optimisez vos bases de données pour des performances optimales et une scalabilité maximale. Notre expertise vous garantit une architecture robuste qui répond à vos besoins actuels et futurs."
+ },
+ "features": {
+ "optimized-architecture": {
+ "title": "Architecture optimisée",
+ "description": "Conception intelligente des schémas et des relations pour des performances optimales."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Protection robuste des données sensibles et conformité aux normes."
+ },
+ "high-performance": {
+ "title": "Haute performance",
+ "description": "Optimisation des requêtes et des index pour des temps de réponse minimaux."
+ },
+ "backup-recovery": {
+ "title": "Backup & Recovery",
+ "description": "Stratégies de sauvegarde et de restauration fiables."
+ }
+ },
+ "benefits": {
+ "horizontal-scalability": {
+ "title": "Scalabilité horizontale",
+ "description": "Architecture conçue pour la croissance et la montée en charge."
+ },
+ "replication": {
+ "title": "Réplication",
+ "description": "Haute disponibilité et répartition géographique des données."
+ },
+ "advanced-monitoring": {
+ "title": "Monitoring avancé",
+ "description": "Suivi en temps réel des performances et de la santé."
+ },
+ "optimized-search": {
+ "title": "Recherche optimisée",
+ "description": "Indexation intelligente pour des recherches rapides."
+ }
+ },
+ "faq": {
+ "sql-vs-nosql": {
+ "question": "Comment choisir entre SQL et NoSQL ?",
+ "answer": "Le choix dépend de vos besoins spécifiques. Les bases SQL sont idéales pour les données structurées avec des relations complexes, tandis que NoSQL excelle dans la gestion de données non structurées et la scalabilité horizontale. Nous vous guidons vers la meilleure solution selon vos cas d'usage."
+ },
+ "data-security": {
+ "question": "Comment gérez-vous la sécurité des données ?",
+ "answer": "Nous implémentons plusieurs niveaux de sécurité : chiffrement des données sensibles, contrôle d'accès granulaire, audit des accès, backups réguliers, et conformité aux normes de sécurité (RGPD, etc.). Nous effectuons également des tests de sécurité réguliers."
+ },
+ "performance-optimization": {
+ "question": "Comment optimisez-vous les performances ?",
+ "answer": "Nous utilisons plusieurs techniques : optimisation des schémas et des requêtes, indexation intelligente, mise en cache, partitionnement des données, et monitoring continu. Nous analysons régulièrement les performances pour identifier les opportunités d'optimisation."
+ },
+ "migration-services": {
+ "question": "Proposez-vous des services de migration ?",
+ "answer": "Oui, nous gérons les migrations de bases de données de bout en bout : analyse de l'existant, planification, tests, migration des données avec minimum d'interruption, et validation post-migration. Nous assurons la cohérence et l'intégrité des données."
+ },
+ "data-availability": {
+ "question": "Comment assurez-vous la disponibilité des données ?",
+ "answer": "Nous mettons en place des architectures hautement disponibles avec réplication, clustering, et plans de reprise d'activité. Nous effectuons des sauvegardes régulières et testons les procédures de restauration."
+ }
+ },
+ "complementary": {
+ "data-migration": {
+ "title": "Migration de données",
+ "description": "Transfer sécurisé depuis vos systèmes existants."
+ },
+ "audit-optimization": {
+ "title": "Audit & Optimisation",
+ "description": "Analyse des performances et recommandations."
+ },
+ "monitoring-24-7": {
+ "title": "Monitoring 24/7",
+ "description": "Surveillance continue et alertes en temps réel."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/backend/microservices.json b/apps/web/src/locales/fr/constants/services/backend/microservices.json
new file mode 100644
index 000000000..ce13762b9
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/backend/microservices.json
@@ -0,0 +1,80 @@
+{
+ "name": "Microservices",
+ "description": "Architecture et développement de microservices",
+ "hero": {
+ "title": "Architecture Microservices",
+ "description": "Transformez vos applications monolithiques en architectures microservices modernes et scalables. Notre expertise vous garantit une infrastructure flexible, résiliente et performante."
+ },
+ "features": {
+ "scalable-architecture": {
+ "title": "Architecture évolutive",
+ "description": "Conception modulaire pour une scalabilité optimale."
+ },
+ "continuous-deployment": {
+ "title": "Déploiement continu",
+ "description": "Pipeline CI/CD pour des mises à jour fluides."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Services indépendants pour une meilleure réactivité."
+ },
+ "high-availability": {
+ "title": "Haute disponibilité",
+ "description": "Architecture résiliente avec redondance."
+ }
+ },
+ "benefits": {
+ "granular-scalability": {
+ "title": "Scalabilité granulaire",
+ "description": "Mise à l'échelle indépendante de chaque service."
+ },
+ "flexible-deployment": {
+ "title": "Déploiement flexible",
+ "description": "Mises à jour sans interruption de service."
+ },
+ "fault-isolation": {
+ "title": "Isolation des pannes",
+ "description": "Résilience accrue grâce à l'isolation des services."
+ },
+ "advanced-monitoring": {
+ "title": "Monitoring avancé",
+ "description": "Surveillance détaillée de chaque composant."
+ }
+ },
+ "faq": {
+ "when-microservices": {
+ "question": "Quand adopter une architecture microservices ?",
+ "answer": "L'architecture microservices est particulièrement adaptée aux applications complexes nécessitant une grande scalabilité, une mise à l'échelle indépendante des composants, et une évolution rapide. Nous évaluons avec vous si cette architecture correspond à vos besoins spécifiques."
+ },
+ "service-communication": {
+ "question": "Comment gérez-vous la communication entre services ?",
+ "answer": "Nous implémentons des patterns de communication robustes : API Gateway, message brokers (Kafka, RabbitMQ), communication synchrone (REST, gRPC) et asynchrone. Chaque méthode est choisie selon les besoins spécifiques de performance et de fiabilité."
+ },
+ "data-consistency": {
+ "question": "Comment assurez-vous la cohérence des données ?",
+ "answer": "Nous utilisons plusieurs stratégies : Saga pattern pour les transactions distribuées, Event Sourcing pour la traçabilité, et CQRS pour la séparation des opérations de lecture et d'écriture. La cohérence éventuelle est gérée de manière appropriée."
+ },
+ "infrastructure-monitoring": {
+ "question": "Comment surveillez-vous l'infrastructure ?",
+ "answer": "Nous mettons en place un monitoring complet : métriques de performance, tracing distribué, logs centralisés, et alerting intelligent. Des dashboards personnalisés permettent de visualiser la santé de chaque service."
+ },
+ "team-training": {
+ "question": "Proposez-vous de la formation pour les équipes ?",
+ "answer": "Oui, nous proposons des formations complètes pour vos équipes : principes des microservices, bonnes pratiques de développement, monitoring et troubleshooting, et utilisation des outils DevOps."
+ }
+ },
+ "complementary": {
+ "devops-cicd": {
+ "title": "DevOps & CI/CD",
+ "description": "Automatisation complète du déploiement."
+ },
+ "monitoring-24-7": {
+ "title": "Monitoring 24/7",
+ "description": "Surveillance continue et alertes en temps réel."
+ },
+ "optimization": {
+ "title": "Optimisation",
+ "description": "Amélioration continue des performances."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/design.json b/apps/web/src/locales/fr/constants/services/design.json
new file mode 100644
index 000000000..9b828a24a
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/design.json
@@ -0,0 +1,56 @@
+{
+ "name": "Design UI/UX",
+ "description": "Création d'interfaces modernes et d'expériences utilisateur optimales",
+ "benefits": {
+ "user-centered-design": {
+ "title": "Design UI/UX centré utilisateur",
+ "description": "Une approche qui place les besoins utilisateurs au cœur de nos designs, validée par des prototypes interactifs."
+ },
+ "creative-innovation": {
+ "title": "Innovation créative",
+ "description": "Des solutions UI/UX créatives et des prototypes innovants qui distinguent votre marque tout en respectant les standards."
+ },
+ "iterative-prototyping": {
+ "title": "Prototypage itératif",
+ "description": "Une méthodologie basée sur des prototypes rapides et des itérations fréquentes pour affiner l'expérience utilisateur."
+ },
+ "business-objectives": {
+ "title": "Objectifs business",
+ "description": "Un design UI/UX aligné sur vos objectifs commerciaux, validé par des tests utilisateurs sur prototypes."
+ }
+ },
+ "process": {
+ "needs-analysis": {
+ "title": "Analyse des besoins",
+ "description": "Première étape cruciale où nous analysons vos besoins, votre marque et vos objectifs business pour définir la direction UI/UX."
+ },
+ "research-moodboard": {
+ "title": "Recherche et moodboard",
+ "description": "Création de moodboards et exploration des directions créatives possibles. Définition de la direction artistique globale."
+ },
+ "wireframes": {
+ "title": "Wireframes",
+ "description": "Conception des wireframes pour valider la structure, la hiérarchie et l'architecture de l'information."
+ },
+ "interface-design": {
+ "title": "Design d'interface",
+ "description": "Création des maquettes finales en respectant votre charte graphique. Attention particulière aux composants et à leur réutilisabilité."
+ },
+ "prototyping": {
+ "title": "Prototypage",
+ "description": "Création de prototypes pour tester les interactions et valider les parcours utilisateurs."
+ },
+ "development": {
+ "title": "Développement",
+ "description": "Transformation des maquettes en interfaces fonctionnelles, avec une attention particulière aux animations définies."
+ }
+ },
+ "process-services": {
+ "needs-analysis": ["Design UI/UX"],
+ "research-moodboard": ["Design UI/UX", "Moodboard"],
+ "wireframes": ["Design UI/UX", "Wireframes"],
+ "interface-design": ["Design UI/UX"],
+ "prototyping": ["Design UI/UX"],
+ "development": ["Développement Frontend", "Intégration"]
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/design/audit.json b/apps/web/src/locales/fr/constants/services/design/audit.json
new file mode 100644
index 000000000..d3bfd2846
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/design/audit.json
@@ -0,0 +1,80 @@
+{
+ "name": "Audit UX/UI",
+ "description": "Analyse et optimisation de vos interfaces existantes",
+ "hero": {
+ "title": "Audit UX/UI & Optimisation",
+ "description": "Améliorez l'expérience utilisateur de vos interfaces grâce à un audit professionnel. Notre expertise vous garantit une analyse approfondie et des recommandations concrètes pour optimiser vos interfaces."
+ },
+ "features": {
+ "heuristic-analysis": {
+ "title": "Analyse heuristique",
+ "description": "Évaluation experte basée sur les principes UX."
+ },
+ "user-testing": {
+ "title": "Tests utilisateurs",
+ "description": "Observation et analyse des comportements réels."
+ },
+ "analytics": {
+ "title": "Analytics",
+ "description": "Analyse des données d'utilisation."
+ },
+ "accessibility": {
+ "title": "Accessibilité",
+ "description": "Vérification des standards d'accessibilité."
+ }
+ },
+ "benefits": {
+ "conversion": {
+ "title": "Conversion",
+ "description": "Identification des freins à la conversion."
+ },
+ "performance": {
+ "title": "Performance",
+ "description": "Analyse des métriques de performance."
+ },
+ "satisfaction": {
+ "title": "Satisfaction",
+ "description": "Mesure de la satisfaction utilisateur."
+ },
+ "journeys": {
+ "title": "Parcours",
+ "description": "Optimisation des parcours utilisateurs."
+ }
+ },
+ "faq": {
+ "complete-audit": {
+ "question": "Que comprend un audit UX/UI complet ?",
+ "answer": "Un audit complet inclut : analyse heuristique basée sur les principes UX, tests utilisateurs, analyse des données analytics, évaluation de l'accessibilité, benchmark concurrentiel, et recommandations détaillées. Nous fournissons un rapport complet avec des solutions concrètes."
+ },
+ "audit-process": {
+ "question": "Comment se déroule le processus d'audit ?",
+ "answer": "Le processus commence par une phase de découverte pour comprendre vos objectifs et KPIs. Nous réalisons ensuite les différentes analyses (heuristique, données, tests), synthétisons les résultats, et préparons un rapport détaillé avec des recommandations priorisées."
+ },
+ "deliverables": {
+ "question": "Quels livrables sont fournis ?",
+ "answer": "Vous recevez un rapport d'audit complet incluant : synthèse exécutive, analyses détaillées, visualisations des données, problèmes identifiés avec leur niveau de gravité, recommandations priorisées, et plan d'action suggéré."
+ },
+ "measuring-impact": {
+ "question": "Comment mesurez-vous l'impact des recommandations ?",
+ "answer": "Nous définissons des KPIs spécifiques pour chaque recommandation et mettons en place un suivi des métriques clés (taux de conversion, satisfaction utilisateur, temps de complétion des tâches, etc.) pour mesurer l'impact des améliorations."
+ },
+ "post-audit-support": {
+ "question": "Proposez-vous un accompagnement post-audit ?",
+ "answer": "Oui, nous proposons un accompagnement pour la mise en œuvre des recommandations, incluant : priorisation des actions, support dans l'implémentation, et mesure des résultats. Nous pouvons également réaliser des audits de suivi."
+ }
+ },
+ "complementary": {
+ "user-testing": {
+ "title": "Tests utilisateurs",
+ "description": "Sessions de tests approfondis avec vos utilisateurs."
+ },
+ "advanced-analytics": {
+ "title": "Analytics avancés",
+ "description": "Mise en place de tracking et analyse approfondie."
+ },
+ "ux-training": {
+ "title": "Formation UX",
+ "description": "Formation de vos équipes aux bonnes pratiques."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/design/branding.json b/apps/web/src/locales/fr/constants/services/design/branding.json
new file mode 100644
index 000000000..da218546a
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/design/branding.json
@@ -0,0 +1,80 @@
+{
+ "name": "Charte graphique",
+ "description": "Création de votre identité visuelle complète",
+ "hero": {
+ "title": "Branding & Identité de Marque",
+ "description": "Donnez vie à votre marque avec une identité visuelle distinctive et mémorable. Notre expertise en branding vous aide à créer une image de marque qui résonne avec votre audience et reflète vos valeurs."
+ },
+ "features": {
+ "visual-identity": {
+ "title": "Identité visuelle",
+ "description": "Création d'une identité unique et mémorable."
+ },
+ "brand-values": {
+ "title": "Valeurs de marque",
+ "description": "Expression visuelle de votre ADN et vos valeurs."
+ },
+ "brand-guidelines": {
+ "title": "Charte graphique",
+ "description": "Documentation complète de votre identité."
+ },
+ "design-system": {
+ "title": "Design system",
+ "description": "Éléments visuels cohérents et réutilisables."
+ }
+ },
+ "benefits": {
+ "recognition": {
+ "title": "Reconnaissance",
+ "description": "Image de marque mémorable et distinctive."
+ },
+ "consistency": {
+ "title": "Cohérence",
+ "description": "Communication visuelle unifiée sur tous les supports."
+ },
+ "trust": {
+ "title": "Confiance",
+ "description": "Crédibilité renforcée auprès de votre audience."
+ },
+ "reach": {
+ "title": "Portée",
+ "description": "Impact visuel fort sur tous les canaux."
+ }
+ },
+ "faq": {
+ "complete-identity": {
+ "question": "Que comprend une identité de marque complète ?",
+ "answer": "Une identité de marque complète inclut le logo, la palette de couleurs, la typographie, les éléments graphiques, le ton de voix, et les règles d'utilisation. Nous fournissons une charte graphique détaillée qui documente tous ces éléments et guide leur utilisation cohérente."
+ },
+ "creation-process": {
+ "question": "Comment se déroule le processus de création ?",
+ "answer": "Le processus commence par une phase de découverte pour comprendre votre marque, vos valeurs et votre audience. Nous développons ensuite des concepts créatifs, créons les éléments visuels, et itérons selon vos retours. Le processus se termine par la livraison d'une charte graphique complète."
+ },
+ "deliverables": {
+ "question": "Quels livrables sont fournis ?",
+ "answer": "Vous recevez un package complet incluant : logos (différentes versions), palette de couleurs, typographies, éléments graphiques, modèles de documents, guides d'utilisation, et fichiers sources dans tous les formats nécessaires."
+ },
+ "uniqueness": {
+ "question": "Comment garantissez-vous l'unicité de l'identité ?",
+ "answer": "Nous effectuons une recherche approfondie de votre marché et de la concurrence pour créer une identité distinctive. Nous vérifions également la disponibilité des éléments visuels pour éviter tout conflit avec des marques existantes."
+ },
+ "transition": {
+ "question": "Comment gérez-vous la transition vers la nouvelle identité ?",
+ "answer": "Nous fournissons un plan de déploiement progressif qui guide la transition vers la nouvelle identité. Cela inclut des recommandations pour la communication interne et externe, et un calendrier de mise en œuvre."
+ }
+ },
+ "complementary": {
+ "marketing-kit": {
+ "title": "Marketing Kit",
+ "description": "Création de supports marketing cohérents."
+ },
+ "social-media": {
+ "title": "Réseaux sociaux",
+ "description": "Adaptation pour les médias sociaux."
+ },
+ "print-materials": {
+ "title": "Supports print",
+ "description": "Création de supports imprimés."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/design/moodboard.json b/apps/web/src/locales/fr/constants/services/design/moodboard.json
new file mode 100644
index 000000000..6dfcb6fae
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/design/moodboard.json
@@ -0,0 +1,80 @@
+{
+ "name": "Moodboard",
+ "description": "Définition de l'identité visuelle et de l'ambiance de votre projet",
+ "hero": {
+ "title": "Moodboards & Direction Artistique",
+ "description": "Donnez vie à votre vision grâce à des moodboards soigneusement élaborés. Notre expertise en design vous aide à définir une direction artistique claire et inspirante pour votre projet."
+ },
+ "features": {
+ "creative-direction": {
+ "title": "Direction créative",
+ "description": "Définition claire de l'ambiance et du style visuel."
+ },
+ "color-palette": {
+ "title": "Palette de couleurs",
+ "description": "Sélection harmonieuse des couleurs de votre identité."
+ },
+ "visual-style": {
+ "title": "Style visuel",
+ "description": "Exploration et définition de votre univers graphique."
+ },
+ "targeted-inspiration": {
+ "title": "Inspiration ciblée",
+ "description": "Recherche approfondie adaptée à votre secteur."
+ }
+ },
+ "benefits": {
+ "clear-direction": {
+ "title": "Direction claire",
+ "description": "Vision commune et alignement des équipes créatives."
+ },
+ "visual-communication": {
+ "title": "Communication visuelle",
+ "description": "Support efficace pour partager votre vision."
+ },
+ "consistency": {
+ "title": "Cohérence",
+ "description": "Garantie d'une identité visuelle harmonieuse."
+ },
+ "creative-expertise": {
+ "title": "Expertise créative",
+ "description": "Conseils professionnels et direction artistique."
+ }
+ },
+ "faq": {
+ "what-is-moodboard": {
+ "question": "Qu'est-ce qu'un moodboard et à quoi sert-il ?",
+ "answer": "Un moodboard est un assemblage visuel qui définit la direction artistique de votre projet. Il combine couleurs, typographies, images et textures pour créer une référence visuelle cohérente. C'est un outil essentiel pour communiquer votre vision et assurer la cohérence de votre identité visuelle."
+ },
+ "creation-process": {
+ "question": "Comment se déroule le processus de création ?",
+ "answer": "Le processus commence par une phase de découverte où nous explorons vos objectifs et votre univers. Nous effectuons ensuite une recherche approfondie pour sélectionner les éléments visuels appropriés. Après plusieurs itérations et vos retours, nous finalisons le moodboard qui servira de guide pour votre projet."
+ },
+ "moodboard-elements": {
+ "question": "Quels éléments comprend un moodboard ?",
+ "answer": "Un moodboard professionnel inclut généralement : une palette de couleurs, des typographies, des images d'inspiration, des textures, des patterns, et des références stylistiques. Nous ajoutons également des notes explicatives pour clarifier les choix créatifs."
+ },
+ "moodboard-usage": {
+ "question": "Comment utilisez-vous le moodboard dans la suite du projet ?",
+ "answer": "Le moodboard sert de référence tout au long du projet. Il guide les décisions de design, assure la cohérence visuelle et facilite la communication entre toutes les parties prenantes. C'est un document vivant qui peut évoluer avec vos retours."
+ },
+ "creation-timeline": {
+ "question": "Combien de temps prend la création d'un moodboard ?",
+ "answer": "La création d'un moodboard professionnel prend généralement 1 à 2 semaines, incluant la phase de recherche, la création initiale et les itérations basées sur vos retours. Ce temps nous permet d'explorer en profondeur et d'affiner la direction artistique."
+ }
+ },
+ "complementary": {
+ "brand-guidelines": {
+ "title": "Charte graphique",
+ "description": "Création d'une charte graphique complète."
+ },
+ "style-guide": {
+ "title": "Style Guide",
+ "description": "Guide détaillé d'utilisation de votre identité."
+ },
+ "artistic-direction": {
+ "title": "Direction artistique",
+ "description": "Accompagnement créatif continu."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/design/ui.json b/apps/web/src/locales/fr/constants/services/design/ui.json
new file mode 100644
index 000000000..f8b460445
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/design/ui.json
@@ -0,0 +1,80 @@
+{
+ "name": "Maquettage UI",
+ "description": "Design détaillé des interfaces utilisateur",
+ "hero": {
+ "title": "Design d'Interface Utilisateur",
+ "description": "Créez des interfaces modernes, élégantes et intuitives pour vos applications. Notre expertise en design UI vous garantit des maquettes professionnelles qui captiveront vos utilisateurs."
+ },
+ "features": {
+ "modern-design": {
+ "title": "Design moderne",
+ "description": "Interfaces élégantes suivant les dernières tendances."
+ },
+ "design-system": {
+ "title": "Système de design",
+ "description": "Composants cohérents et réutilisables."
+ },
+ "responsive-design": {
+ "title": "Responsive design",
+ "description": "Adaptation parfaite à tous les écrans."
+ },
+ "animations-micro-interactions": {
+ "title": "Animations & micro-interactions",
+ "description": "Interactions fluides et engageantes."
+ }
+ },
+ "benefits": {
+ "visual-identity": {
+ "title": "Identité visuelle",
+ "description": "Design cohérent avec votre marque."
+ },
+ "user-experience": {
+ "title": "Expérience utilisateur",
+ "description": "Interfaces intuitives et agréables à utiliser."
+ },
+ "design-system": {
+ "title": "Design system",
+ "description": "Bibliothèque de composants réutilisables."
+ },
+ "accessibility": {
+ "title": "Accessibilité",
+ "description": "Interfaces accessibles à tous les utilisateurs."
+ }
+ },
+ "faq": {
+ "ui-design-process": {
+ "question": "Comment se déroule le processus de design UI ?",
+ "answer": "Le processus commence par l'analyse de vos besoins et de votre identité de marque. Nous créons ensuite des premières versions des écrans clés, établissons le système de design, puis itérons sur les maquettes détaillées. Chaque étape inclut vos retours pour assurer un résultat parfaitement aligné avec vos attentes."
+ },
+ "tools-deliverables": {
+ "question": "Quels outils et livrables sont fournis ?",
+ "answer": "Nous utilisons principalement Figma pour le design UI. Vous recevez les maquettes détaillées de tous les écrans, un système de design complet avec ses composants, les spécifications pour les développeurs, et les assets nécessaires à l'intégration."
+ },
+ "responsive-handling": {
+ "question": "Comment gérez-vous le responsive design ?",
+ "answer": "Nous suivons une approche mobile-first et créons des maquettes pour chaque breakpoint important (mobile, tablette, desktop). Chaque interface est optimisée pour offrir la meilleure expérience possible sur son support."
+ },
+ "design-consistency": {
+ "question": "Comment garantissez-vous la cohérence du design ?",
+ "answer": "Nous créons un système de design complet incluant une bibliothèque de composants, des règles typographiques, une palette de couleurs et des principes de design. Ce système assure la cohérence à travers toute l'interface."
+ },
+ "developer-handoff": {
+ "question": "Comment facilitez-vous le travail des développeurs ?",
+ "answer": "Nous fournissons des spécifications détaillées pour chaque composant, incluant les mesures, les styles, les états et les interactions. Nous utilisons également des outils comme Zeplin ou les exports Figma pour faciliter l'intégration."
+ }
+ },
+ "complementary": {
+ "design-system": {
+ "title": "Design system",
+ "description": "Création d'une bibliothèque de composants."
+ },
+ "prototyping": {
+ "title": "Prototypage",
+ "description": "Création de prototypes interactifs."
+ },
+ "development": {
+ "title": "Développement",
+ "description": "Intégration de vos maquettes en code."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/design/wireframes.json b/apps/web/src/locales/fr/constants/services/design/wireframes.json
new file mode 100644
index 000000000..85f872e5b
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/design/wireframes.json
@@ -0,0 +1,80 @@
+{
+ "name": "Wireframes",
+ "description": "Conception de la structure et du parcours utilisateur",
+ "hero": {
+ "title": "Wireframes & Architecture UX",
+ "description": "Structurez vos interfaces utilisateur avec des wireframes professionnels. Notre expertise en UX design vous garantit une architecture intuitive et une expérience utilisateur optimale dès les premières étapes de votre projet."
+ },
+ "features": {
+ "ux-architecture": {
+ "title": "Architecture UX",
+ "description": "Structure claire et logique de vos interfaces."
+ },
+ "user-journey": {
+ "title": "Parcours utilisateur",
+ "description": "Optimisation des flux de navigation."
+ },
+ "visual-hierarchy": {
+ "title": "Hiérarchie visuelle",
+ "description": "Organisation efficace du contenu et des fonctionnalités."
+ },
+ "interactions": {
+ "title": "Interactions",
+ "description": "Définition des comportements et des transitions."
+ }
+ },
+ "benefits": {
+ "responsive-design": {
+ "title": "Responsive Design",
+ "description": "Adaptation à tous les formats d'écrans."
+ },
+ "rapid-prototyping": {
+ "title": "Prototypage rapide",
+ "description": "Tests et itérations efficaces."
+ },
+ "collaboration": {
+ "title": "Collaboration",
+ "description": "Communication claire avec toutes les parties prenantes."
+ },
+ "early-validation": {
+ "title": "Validation précoce",
+ "description": "Détection et correction rapide des problèmes UX."
+ }
+ },
+ "faq": {
+ "what-is-wireframe": {
+ "question": "Qu'est-ce qu'un wireframe et pourquoi est-ce important ?",
+ "answer": "Un wireframe est une représentation schématique de votre interface qui se concentre sur la structure, la hiérarchie et les fonctionnalités, sans les éléments de design final. C'est une étape cruciale qui permet de valider l'architecture de l'information et l'expérience utilisateur avant d'investir dans le design détaillé."
+ },
+ "creation-process": {
+ "question": "Comment se déroule le processus de création ?",
+ "answer": "Le processus commence par l'analyse de vos besoins et objectifs. Nous créons ensuite des wireframes de basse fidélité pour valider la structure globale, puis des versions plus détaillées avec les interactions. Après plusieurs itérations et vos retours, nous finalisons les wireframes qui serviront de base au design UI."
+ },
+ "deliverables": {
+ "question": "Quels livrables sont fournis ?",
+ "answer": "Vous recevez un ensemble complet de wireframes pour chaque écran clé, des diagrammes de flux utilisateur, une documentation des interactions, et des prototypes interactifs pour tester les parcours utilisateur. Tous les fichiers sources sont également fournis."
+ },
+ "responsive-handling": {
+ "question": "Comment gérez-vous le responsive design ?",
+ "answer": "Nous créons des wireframes adaptés à chaque format d'écran important (desktop, tablet, mobile) en suivant une approche mobile-first. Chaque version est optimisée pour offrir la meilleure expérience utilisateur possible sur son support."
+ },
+ "creation-timeline": {
+ "question": "Combien de temps prend la création des wireframes ?",
+ "answer": "La durée dépend de la complexité du projet, mais généralement 2 à 4 semaines pour un projet moyen, incluant les phases d'analyse, création, itérations et finalisation. Nous établissons un planning détaillé au début du projet."
+ }
+ },
+ "complementary": {
+ "ux-audit": {
+ "title": "Audit UX",
+ "description": "Analyse approfondie de vos interfaces existantes."
+ },
+ "prototyping": {
+ "title": "Prototypage",
+ "description": "Création de prototypes interactifs."
+ },
+ "ux-documentation": {
+ "title": "Documentation UX",
+ "description": "Documentation détaillée des parcours utilisateur."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/frontend.json b/apps/web/src/locales/fr/constants/services/frontend.json
new file mode 100644
index 000000000..75517a3e2
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/frontend.json
@@ -0,0 +1,56 @@
+{
+ "name": "Développement front-end",
+ "description": "Création d'applications web et mobiles performantes",
+ "benefits": {
+ "scalable-architecture": {
+ "title": "Architecture évolutive",
+ "description": "Applications construites sur des architectures modernes et scalables, prêtes pour l'évolution de votre projet."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Focus sur les performances avec des techniques avancées d'optimisation et de mise en cache."
+ },
+ "maintainable-code": {
+ "title": "Code maintenable",
+ "description": "Architecture propre et modulaire permettant une maintenance facile et des évolutions rapides."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Implémentation des meilleures pratiques de sécurité frontend pour protéger vos utilisateurs."
+ }
+ },
+ "process": {
+ "technical-architecture": {
+ "title": "Architecture technique",
+ "description": "Définition de l'architecture frontend, choix des technologies et mise en place de l'environnement de développement."
+ },
+ "project-setup": {
+ "title": "Mise en place du projet",
+ "description": "Configuration du projet avec les bonnes pratiques de développement, tests et déploiement continu."
+ },
+ "feature-development": {
+ "title": "Développement des features",
+ "description": "Implémentation des fonctionnalités avec un focus sur la qualité du code et les performances."
+ },
+ "state-management": {
+ "title": "Gestion de l'état",
+ "description": "Mise en place d'une gestion d'état robuste et performante pour les données de l'application."
+ },
+ "testing-quality": {
+ "title": "Tests et qualité",
+ "description": "Mise en place des tests automatisés et des processus d'assurance qualité."
+ },
+ "optimization-monitoring": {
+ "title": "Optimisation et monitoring",
+ "description": "Optimisation des performances et mise en place d'outils de monitoring."
+ }
+ },
+ "process-services": {
+ "technical-architecture": ["Architecture", "Conseil technique"],
+ "project-setup": ["Setup technique", "CI/CD"],
+ "feature-development": ["Développement Frontend", "React", "Next.js"],
+ "state-management": ["State Management", "API Integration"],
+ "testing-quality": ["Tests unitaires", "Tests E2E"],
+ "optimization-monitoring": ["Performance", "Analytics"]
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/frontend/desktop.json b/apps/web/src/locales/fr/constants/services/frontend/desktop.json
new file mode 100644
index 000000000..c7de3ea14
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/frontend/desktop.json
@@ -0,0 +1,80 @@
+{
+ "name": "Logiciels de bureau",
+ "description": "Développement d'applications desktop multiplateforme",
+ "hero": {
+ "title": "Applications desktop multiplateformes",
+ "description": "Développez des applications de bureau modernes et performantes pour Windows, macOS et Linux. Notre expertise vous garantit des applications professionnelles qui tirent parti de toute la puissance du desktop."
+ },
+ "features": {
+ "electron-react": {
+ "title": "Electron & React",
+ "description": "Technologies modernes pour des applications desktop performantes et évolutives."
+ },
+ "multiplatform": {
+ "title": "Multiplateforme",
+ "description": "Applications compatibles Windows, macOS et Linux à partir d'une base de code unique."
+ },
+ "native-performance": {
+ "title": "Performance native",
+ "description": "Optimisation pour tirer parti des ressources système de manière efficace."
+ },
+ "system-integration": {
+ "title": "Intégration système",
+ "description": "Accès aux fonctionnalités natives du système d'exploitation."
+ }
+ },
+ "benefits": {
+ "windows-macos": {
+ "title": "Windows & macOS",
+ "description": "Support natif des principales plateformes desktop."
+ },
+ "system-access": {
+ "title": "Accès système",
+ "description": "Interaction directe avec le système d'exploitation."
+ },
+ "offline-mode": {
+ "title": "Mode hors ligne",
+ "description": "Fonctionnement autonome sans connexion internet requise."
+ },
+ "local-data": {
+ "title": "Données locales",
+ "description": "Stockage et traitement des données en local pour plus de sécurité."
+ }
+ },
+ "faq": {
+ "why-electron": {
+ "question": "Pourquoi choisir Electron pour le développement desktop ?",
+ "answer": "Electron permet de créer des applications desktop multiplateformes avec des technologies web modernes (React, TypeScript). Cela offre un développement rapide, une maintenance simplifiée et une excellente expérience utilisateur, tout en garantissant la compatibilité avec Windows, macOS et Linux."
+ },
+ "security": {
+ "question": "Comment gérez-vous la sécurité des applications desktop ?",
+ "answer": "Nous implémentons plusieurs niveaux de sécurité : chiffrement des données sensibles, protection contre les injections de code, mises à jour de sécurité automatiques, et bonnes pratiques de développement sécurisé. Nous suivons également les recommandations de sécurité spécifiques à chaque système d'exploitation."
+ },
+ "auto-update": {
+ "question": "Proposez-vous un système de mise à jour automatique ?",
+ "answer": "Oui, nous intégrons un système de mise à jour automatique qui permet de déployer facilement les nouvelles versions de l'application. Les utilisateurs sont notifiés des mises à jour disponibles et peuvent les installer en un clic."
+ },
+ "distribution": {
+ "question": "Comment gérez-vous la distribution des applications ?",
+ "answer": "Nous gérons tout le processus de distribution : création des installateurs pour chaque plateforme, signature des applications, publication sur les stores si nécessaire (Microsoft Store, Mac App Store), et mise en place d'un système de mise à jour automatique."
+ },
+ "post-launch-support": {
+ "question": "Proposez-vous un support après le lancement ?",
+ "answer": "Oui, nous proposons plusieurs formules de maintenance incluant : support technique, correction de bugs, mises à jour de sécurité, optimisations de performance et évolutions fonctionnelles."
+ }
+ },
+ "complementary": {
+ "telemetry": {
+ "title": "Télémétrie",
+ "description": "Suivi des performances et du comportement utilisateur."
+ },
+ "distribution": {
+ "title": "Distribution",
+ "description": "Publication sur les stores et gestion des mises à jour."
+ },
+ "cloud-sync": {
+ "title": "Cloud sync",
+ "description": "Synchronisation des données avec le cloud."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/frontend/mobile.json b/apps/web/src/locales/fr/constants/services/frontend/mobile.json
new file mode 100644
index 000000000..d3a90879c
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/frontend/mobile.json
@@ -0,0 +1,80 @@
+{
+ "name": "Applications mobiles",
+ "description": "Création d'applications mobiles natives avec React Native",
+ "hero": {
+ "title": "Développement mobile React Native",
+ "description": "Créez des applications mobiles natives performantes pour iOS et Android avec React Native. Notre expertise vous garantit des applications robustes et une expérience utilisateur exceptionnelle."
+ },
+ "features": {
+ "react-native-expo": {
+ "title": "React Native & Expo",
+ "description": "Développement cross-platform efficace pour iOS et Android avec une base de code unique."
+ },
+ "native-design": {
+ "title": "Design natif",
+ "description": "Interfaces respectant les guidelines de design iOS et Android pour une expérience familière."
+ },
+ "native-performance": {
+ "title": "Performance native",
+ "description": "Optimisation poussée pour des performances proches du natif sur chaque plateforme."
+ },
+ "mobile-ui-ux": {
+ "title": "UI/UX mobile",
+ "description": "Interfaces mobiles intuitives suivant les meilleures pratiques de chaque plateforme."
+ }
+ },
+ "benefits": {
+ "multi-platform": {
+ "title": "Multi-plateformes",
+ "description": "Applications fonctionnant sur iOS et Android à partir d'une base de code unique."
+ },
+ "tablet-support": {
+ "title": "Support tablettes",
+ "description": "Interfaces adaptées aux différentes tailles d'écrans et orientations."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Optimisation native pour des performances et une fluidité maximales."
+ },
+ "native-experience": {
+ "title": "Expérience native",
+ "description": "Utilisation des fonctionnalités natives des appareils (caméra, GPS, notifications...)."
+ }
+ },
+ "faq": {
+ "why-react-native": {
+ "question": "Pourquoi choisir React Native pour le développement mobile ?",
+ "answer": "React Native permet de développer des applications performantes pour iOS et Android à partir d'une base de code unique, réduisant les coûts et le temps de développement tout en maintenant une qualité native. Il bénéficie également d'un large écosystème et du support de Meta (Facebook)."
+ },
+ "performance": {
+ "question": "Comment assurez-vous la performance des applications ?",
+ "answer": "Nous optimisons chaque aspect de l'application : temps de démarrage, consommation mémoire, animations fluides, chargement des données... Nous utilisons également des outils de profilage pour identifier et résoudre les problèmes de performance."
+ },
+ "store-publishing": {
+ "question": "Gérez-vous la publication sur les stores ?",
+ "answer": "Oui, nous prenons en charge tout le processus de publication : préparation des assets, configuration des comptes développeur, soumission aux stores (App Store et Play Store) et suivi des mises à jour."
+ },
+ "updates": {
+ "question": "Comment gérez-vous les mises à jour des applications ?",
+ "answer": "Nous mettons en place des systèmes de mise à jour OTA (Over The Air) quand c'est possible, et nous gérons les mises à jour via les stores avec un processus optimisé pour minimiser les temps de validation."
+ },
+ "post-launch-support": {
+ "question": "Proposez-vous un support après le lancement ?",
+ "answer": "Oui, nous proposons différentes formules de maintenance incluant : monitoring des performances, corrections de bugs, mises à jour de sécurité et évolutions fonctionnelles."
+ }
+ },
+ "complementary": {
+ "store-publishing": {
+ "title": "Publication store",
+ "description": "Gestion complète de la publication sur l'App Store et le Play Store."
+ },
+ "backend-integration": {
+ "title": "Intégration backend",
+ "description": "Connection avec vos systèmes et APIs existants."
+ },
+ "react-native-training": {
+ "title": "Formation React Native",
+ "description": "Formation de vos équipes au développement React Native."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/frontend/pwa.json b/apps/web/src/locales/fr/constants/services/frontend/pwa.json
new file mode 100644
index 000000000..deb15ef68
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/frontend/pwa.json
@@ -0,0 +1,80 @@
+{
+ "name": "Progressive web apps",
+ "description": "Création d'applications web progressives performantes",
+ "hero": {
+ "title": "Progressive web apps (PWA)",
+ "description": "Transformez votre site web en véritable application installable avec les Progressive Web Apps. Offrez une expérience utilisateur exceptionnelle, en ligne comme hors ligne."
+ },
+ "features": {
+ "native-installation": {
+ "title": "Installation native",
+ "description": "Applications installables directement depuis le navigateur, sans passer par les stores."
+ },
+ "offline-mode": {
+ "title": "Mode hors ligne",
+ "description": "Fonctionnement même sans connexion internet grâce au cache intelligent."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Chargement rapide et expérience fluide sur tous les appareils."
+ },
+ "push-notifications": {
+ "title": "Notifications push",
+ "description": "Engagement utilisateur amélioré grâce aux notifications push."
+ }
+ },
+ "benefits": {
+ "multi-platform": {
+ "title": "Multi-plateformes",
+ "description": "Une seule application pour tous les appareils et systèmes d'exploitation."
+ },
+ "always-updated": {
+ "title": "Toujours à jour",
+ "description": "Mises à jour automatiques sans action utilisateur nécessaire."
+ },
+ "lightweight": {
+ "title": "Légèreté",
+ "description": "Pas d'installation lourde, accessible instantanément."
+ },
+ "native-performance": {
+ "title": "Performances natives",
+ "description": "Expérience utilisateur proche des applications natives."
+ }
+ },
+ "faq": {
+ "what-is-pwa": {
+ "question": "Qu'est-ce qu'une Progressive Web App ?",
+ "answer": "Une PWA est une application web qui offre une expérience similaire à une application native : elle est installable, fonctionne hors ligne, et peut envoyer des notifications push. Elle combine les avantages du web (accessibilité, mise à jour automatique) et du natif (performance, fonctionnalités avancées)."
+ },
+ "vs-native": {
+ "question": "Quels sont les avantages par rapport à une application native ?",
+ "answer": "Les PWA offrent plusieurs avantages : pas besoin de passer par les stores, mise à jour automatique, développement plus rapide et moins coûteux, meilleur référencement, et une base de code unique pour toutes les plateformes."
+ },
+ "offline": {
+ "question": "Comment fonctionne le mode hors ligne ?",
+ "answer": "Nous utilisons des Service Workers pour mettre en cache les ressources essentielles et les données. L'application peut ainsi fonctionner même sans connexion internet, avec une synchronisation automatique une fois la connexion rétablie."
+ },
+ "browser-compatibility": {
+ "question": "Les PWA sont-elles compatibles avec tous les navigateurs ?",
+ "answer": "Les PWA fonctionnent sur la majorité des navigateurs modernes. Pour les navigateurs plus anciens, nous mettons en place des solutions de fallback pour garantir une expérience utilisateur optimale."
+ },
+ "post-launch-support": {
+ "question": "Proposez-vous un support après le lancement ?",
+ "answer": "Oui, nous proposons plusieurs formules de maintenance incluant : mises à jour de sécurité, optimisations de performance, ajout de fonctionnalités et support technique."
+ }
+ },
+ "complementary": {
+ "advanced-analytics": {
+ "title": "Analytics avancés",
+ "description": "Suivi détaillé du comportement utilisateur et des performances."
+ },
+ "seo-optimized": {
+ "title": "SEO optimisé",
+ "description": "Optimisation pour les moteurs de recherche et partage social."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Protection des données et communications sécurisées."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/frontend/web.json b/apps/web/src/locales/fr/constants/services/frontend/web.json
new file mode 100644
index 000000000..1bb522c3c
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/frontend/web.json
@@ -0,0 +1,80 @@
+{
+ "name": "Applications web",
+ "description": "Développement d'applications web modernes avec React et Next.js",
+ "hero": {
+ "title": "Développement web frontend",
+ "description": "Créez des applications web modernes, réactives et performantes avec les dernières technologies frontend. Notre expertise vous garantit une expérience utilisateur exceptionnelle."
+ },
+ "features": {
+ "react-nextjs": {
+ "title": "React & Next.js",
+ "description": "Développement avec les frameworks modernes pour des applications performantes et évolutives."
+ },
+ "responsive-design": {
+ "title": "Design responsive",
+ "description": "Interfaces adaptatives pour une expérience optimale sur tous les appareils."
+ },
+ "web-performance": {
+ "title": "Performance web",
+ "description": "Optimisation poussée pour des temps de chargement rapides et une expérience fluide."
+ },
+ "modern-ui-ux": {
+ "title": "UI/UX moderne",
+ "description": "Interfaces utilisateur élégantes et intuitives suivant les dernières tendances."
+ }
+ },
+ "benefits": {
+ "reactive-apps": {
+ "title": "Applications réactives",
+ "description": "Interfaces dynamiques et réactives pour une expérience utilisateur fluide."
+ },
+ "mobile-first": {
+ "title": "Mobile first",
+ "description": "Conception pensée d'abord pour mobile puis adaptée aux grands écrans."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Optimisation avancée pour des temps de chargement minimaux."
+ },
+ "seo-optimized": {
+ "title": "SEO optimisé",
+ "description": "Structure optimisée pour un excellent référencement naturel."
+ }
+ },
+ "faq": {
+ "technologies": {
+ "question": "Quelles technologies utilisez-vous pour le développement frontend ?",
+ "answer": "Nous utilisons principalement React avec Next.js, ainsi que TypeScript pour un code plus robuste. Nous intégrons également des outils modernes comme Tailwind CSS pour le styling, et diverses bibliothèques pour les animations et les interactions."
+ },
+ "performance": {
+ "question": "Comment gérez-vous la performance des applications web ?",
+ "answer": "Nous appliquons les meilleures pratiques d'optimisation : code splitting, lazy loading, optimisation des images, mise en cache intelligente, et nous utilisons des outils de mesure de performance pour garantir des temps de chargement optimaux."
+ },
+ "seo": {
+ "question": "Proposez-vous des solutions pour le SEO ?",
+ "answer": "Oui, nous développons des applications avec le SEO en tête : rendu côté serveur (SSR), génération de pages statiques, meta-données dynamiques, structure sémantique et optimisation pour les moteurs de recherche."
+ },
+ "browser-compatibility": {
+ "question": "Comment assurez-vous la compatibilité avec différents navigateurs ?",
+ "answer": "Nous testons sur les principaux navigateurs et versions, utilisons des outils de transpilation modernes, et mettons en place des fallbacks appropriés pour garantir une expérience cohérente."
+ },
+ "maintenance": {
+ "question": "Proposez-vous la maintenance des applications développées ?",
+ "answer": "Oui, nous proposons différentes formules de maintenance incluant les mises à jour de sécurité, l'optimisation continue des performances, et l'évolution des fonctionnalités."
+ }
+ },
+ "complementary": {
+ "ui-ux-design": {
+ "title": "Design UI/UX",
+ "description": "Conception d'interfaces utilisateur modernes et ergonomiques."
+ },
+ "api-integration": {
+ "title": "Intégration API",
+ "description": "Connection avec vos systèmes et services backend existants."
+ },
+ "internationalization": {
+ "title": "Internationalisation",
+ "description": "Adaptation de votre application pour un public international."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration.json b/apps/web/src/locales/fr/constants/services/integration.json
new file mode 100644
index 000000000..33782ff9e
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration.json
@@ -0,0 +1,56 @@
+{
+ "name": "Intégration",
+ "description": "Intégration sur les principales plateformes e-commerce et CMS",
+ "benefits": {
+ "clean-maintainable-code": {
+ "title": "Code propre et maintenable",
+ "description": "Intégration avec des standards de code élevés et une architecture pensée pour la maintenabilité à long terme."
+ },
+ "optimized-performance": {
+ "title": "Performance optimisée",
+ "description": "Sites web rapides et fluides grâce à des techniques d'optimisation avancées et au respect des bonnes pratiques."
+ },
+ "responsive-design": {
+ "title": "Responsive design",
+ "description": "Adaptation parfaite à tous les écrans et appareils pour une expérience utilisateur cohérente."
+ },
+ "smooth-animations": {
+ "title": "Animations fluides",
+ "description": "Intégration d'animations soignées pour enrichir l'expérience utilisateur tout en maintenant les performances."
+ }
+ },
+ "process": {
+ "mockup-analysis": {
+ "title": "Analyse des maquettes",
+ "description": "Étude approfondie des maquettes pour identifier les composants, les interactions et les points d'attention techniques."
+ },
+ "technical-architecture": {
+ "title": "Architecture technique",
+ "description": "Définition de l'architecture frontend et choix des technologies adaptées au projet."
+ },
+ "component-development": {
+ "title": "Développement des composants",
+ "description": "Création des composants réutilisables en suivant les principes du design system."
+ },
+ "responsive-integration": {
+ "title": "Intégration responsive",
+ "description": "Adaptation du design pour tous les formats d'écran avec une attention particulière à l'expérience mobile."
+ },
+ "optimization": {
+ "title": "Optimisation",
+ "description": "Optimisation des performances, de l'accessibilité et du référencement technique."
+ },
+ "testing-validation": {
+ "title": "Tests et validation",
+ "description": "Tests approfondis sur différents navigateurs et appareils pour garantir une expérience utilisateur optimale."
+ }
+ },
+ "process-services": {
+ "mockup-analysis": ["Analyse technique", "Architecture"],
+ "technical-architecture": ["Architecture", "Conseil technique"],
+ "component-development": ["Développement Frontend", "Intégration"],
+ "responsive-integration": ["Intégration", "Responsive Design"],
+ "optimization": ["Performance", "SEO technique"],
+ "testing-validation": ["Tests", "Quality Assurance"]
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration/prestashop.json b/apps/web/src/locales/fr/constants/services/integration/prestashop.json
new file mode 100644
index 000000000..36c9f10a8
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration/prestashop.json
@@ -0,0 +1,80 @@
+{
+ "name": "PrestaShop",
+ "description": "Développement de boutiques PrestaShop",
+ "hero": {
+ "title": "Développement e-commerce avec PrestaShop",
+ "description": "Lancez une boutique en ligne professionnelle avec PrestaShop. Notre expertise vous garantit une solution e-commerce puissante, évolutive et parfaitement adaptée à vos besoins."
+ },
+ "features": {
+ "custom-design": {
+ "title": "Design personnalisé",
+ "description": "Création de thèmes sur mesure qui reflètent votre marque et optimisent la conversion."
+ },
+ "advanced-management": {
+ "title": "Gestion avancée",
+ "description": "Interface d'administration puissante pour gérer vos produits, commandes et clients."
+ },
+ "optimized-performance": {
+ "title": "Performance optimisée",
+ "description": "Optimisation poussée pour des temps de chargement rapides et une expérience fluide."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Protection avancée de votre boutique et des données de vos clients."
+ }
+ },
+ "benefits": {
+ "complete-management": {
+ "title": "Gestion complète",
+ "description": "Contrôle total sur vos produits, stocks, commandes et relations clients."
+ },
+ "multi-store": {
+ "title": "Multi-boutiques",
+ "description": "Gestion de plusieurs boutiques depuis une seule interface d'administration."
+ },
+ "integrated-logistics": {
+ "title": "Logistique intégrée",
+ "description": "Gestion avancée des transporteurs et des frais de livraison."
+ },
+ "detailed-analytics": {
+ "title": "Analyses détaillées",
+ "description": "Statistiques complètes pour suivre et optimiser vos performances."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "Combien de temps faut-il pour créer une boutique PrestaShop ?",
+ "answer": "Le délai moyen pour créer une boutique PrestaShop varie de 6 à 12 semaines, selon la complexité du projet. Ce délai comprend la personnalisation du thème, le développement des fonctionnalités sur mesure, l'intégration des produits et les tests."
+ },
+ "migration": {
+ "question": "Pouvez-vous migrer ma boutique existante vers PrestaShop ?",
+ "answer": "Oui, nous proposons un service complet de migration vers PrestaShop, incluant le transfert des produits, clients, commandes et historiques, tout en préservant votre référencement."
+ },
+ "large-catalogs": {
+ "question": "PrestaShop est-il adapté aux grands catalogues de produits ?",
+ "answer": "Absolument ! PrestaShop est conçu pour gérer efficacement des catalogues de plusieurs milliers de produits avec des variations, tout en maintenant d'excellentes performances."
+ },
+ "custom-development": {
+ "question": "Proposez-vous des développements sur mesure ?",
+ "answer": "Oui, nous développons des modules et fonctionnalités sur mesure pour adapter PrestaShop à vos besoins spécifiques : intégrations ERP, processus métier personnalisés, etc."
+ },
+ "maintenance-updates": {
+ "question": "Comment gérez-vous la maintenance et les mises à jour ?",
+ "answer": "Nous proposons différentes formules de maintenance incluant les mises à jour de sécurité, les sauvegardes, l'optimisation des performances et le support technique."
+ }
+ },
+ "complementary": {
+ "custom-modules": {
+ "title": "Modules sur mesure",
+ "description": "Développement de fonctionnalités spécifiques pour votre activité."
+ },
+ "digital-marketing": {
+ "title": "Marketing digital",
+ "description": "Stratégies marketing pour augmenter votre visibilité et vos ventes."
+ },
+ "prestashop-training": {
+ "title": "Formation PrestaShop",
+ "description": "Formation personnalisée pour maîtriser la gestion de votre boutique."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration/shopify.json b/apps/web/src/locales/fr/constants/services/integration/shopify.json
new file mode 100644
index 000000000..94edd34f0
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration/shopify.json
@@ -0,0 +1,80 @@
+{
+ "name": "Shopify",
+ "description": "Création et personnalisation de boutiques en ligne Shopify",
+ "hero": {
+ "title": "Créez votre boutique en ligne avec Shopify",
+ "description": "Transformez votre vision e-commerce en réalité avec notre expertise Shopify. Nous créons des boutiques en ligne performantes, esthétiques et optimisées pour la conversion."
+ },
+ "features": {
+ "custom-design": {
+ "title": "Design personnalisé",
+ "description": "Création d'un thème unique qui reflète votre marque et optimise l'expérience utilisateur."
+ },
+ "conversion-optimization": {
+ "title": "Optimisation des conversions",
+ "description": "Mise en place des meilleures pratiques pour maximiser vos ventes et fidéliser vos clients."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Protection de vos données et de celles de vos clients avec les dernières normes de sécurité."
+ },
+ "advanced-integrations": {
+ "title": "Intégrations avancées",
+ "description": "Connection avec vos outils préférés pour la gestion des stocks, la comptabilité et le marketing."
+ }
+ },
+ "benefits": {
+ "secure-payments": {
+ "title": "Paiements sécurisés",
+ "description": "Intégration des principaux moyens de paiement et gestion sécurisée des transactions."
+ },
+ "international-by-default": {
+ "title": "International par défaut",
+ "description": "Vente dans le monde entier avec gestion multi-devises et traductions automatiques."
+ },
+ "powerful-analytics": {
+ "title": "Analytics puissant",
+ "description": "Suivi détaillé de vos performances et insights pour optimiser vos ventes."
+ },
+ "simplified-logistics": {
+ "title": "Logistique simplifiée",
+ "description": "Gestion efficace des commandes et intégration avec les principaux transporteurs."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "Combien de temps faut-il pour créer une boutique Shopify ?",
+ "answer": "Le délai moyen pour créer une boutique Shopify varie de 4 à 8 semaines, selon la complexité du projet. Ce délai comprend la phase de design, le développement, l'intégration des produits et les tests."
+ },
+ "migration": {
+ "question": "Pouvez-vous migrer ma boutique existante vers Shopify ?",
+ "answer": "Oui, nous proposons un service complet de migration de votre boutique existante vers Shopify, incluant le transfert des produits, des clients et des commandes, tout en assurant une transition en douceur."
+ },
+ "customization-types": {
+ "question": "Quels types de personnalisation proposez-vous ?",
+ "answer": "Nous offrons une personnalisation complète de votre boutique Shopify : design sur mesure, fonctionnalités personnalisées, intégrations spécifiques, et optimisation pour mobile."
+ },
+ "post-launch-support": {
+ "question": "Proposez-vous un support après le lancement ?",
+ "answer": "Oui, nous proposons plusieurs formules de support et maintenance pour assurer le bon fonctionnement de votre boutique après son lancement, incluant les mises à jour, les optimisations et le support technique."
+ },
+ "security": {
+ "question": "Comment assurez-vous la sécurité de ma boutique ?",
+ "answer": "Nous mettons en place les meilleures pratiques de sécurité : SSL, conformité PCI DSS, sauvegardes régulières, et protection contre les fraudes. Shopify assure également une sécurité de niveau bancaire pour toutes les transactions."
+ }
+ },
+ "complementary": {
+ "seo": {
+ "title": "Référencement SEO",
+ "description": "Optimisation pour les moteurs de recherche pour augmenter votre visibilité."
+ },
+ "digital-marketing": {
+ "title": "Marketing digital",
+ "description": "Stratégies marketing adaptées pour attirer et convertir plus de clients."
+ },
+ "training": {
+ "title": "Formation",
+ "description": "Formation complète pour gérer votre boutique en toute autonomie."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration/squarespace.json b/apps/web/src/locales/fr/constants/services/integration/squarespace.json
new file mode 100644
index 000000000..126a424a7
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration/squarespace.json
@@ -0,0 +1,80 @@
+{
+ "name": "SquareSpace",
+ "description": "Intégration et personnalisation sur SquareSpace",
+ "hero": {
+ "title": "Sites web élégants avec Squarespace",
+ "description": "Créez une présence en ligne raffinée avec Squarespace. Notre expertise vous garantit un site web esthétique, fonctionnel et parfaitement adapté à votre image de marque."
+ },
+ "features": {
+ "minimalist-design": {
+ "title": "Design minimaliste",
+ "description": "Création de sites élégants et épurés qui mettent en valeur votre contenu et votre marque."
+ },
+ "smooth-experience": {
+ "title": "Expérience fluide",
+ "description": "Navigation intuitive et performances optimisées pour une expérience utilisateur sans faille."
+ },
+ "content-management": {
+ "title": "Gestion de contenu",
+ "description": "Interface d'administration simple et intuitive pour gérer votre contenu facilement."
+ },
+ "media-integration": {
+ "title": "Intégration média",
+ "description": "Mise en valeur optimale de vos images et médias avec des galeries dynamiques."
+ }
+ },
+ "benefits": {
+ "professional-templates": {
+ "title": "Templates professionnels",
+ "description": "Large choix de templates modernes et personnalisables pour tous les secteurs."
+ },
+ "integrated-ecommerce": {
+ "title": "E-commerce intégré",
+ "description": "Solutions de vente en ligne complètes et personnalisables."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Sites rapides et sécurisés hébergés sur une infrastructure robuste."
+ },
+ "integrated-marketing": {
+ "title": "Marketing intégré",
+ "description": "Outils marketing et analyses statistiques pour développer votre activité."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "Combien de temps faut-il pour créer un site Squarespace ?",
+ "answer": "Le délai moyen pour créer un site Squarespace varie de 2 à 6 semaines, selon la complexité du projet. Ce délai comprend la sélection et personnalisation du template, l'intégration du contenu et les tests."
+ },
+ "product-sales": {
+ "question": "Puis-je vendre des produits sur mon site Squarespace ?",
+ "answer": "Oui, Squarespace propose une solution e-commerce complète que nous pouvons configurer pour vous permettre de vendre vos produits en ligne, avec gestion des stocks, paiements sécurisés et options d'expédition."
+ },
+ "content-updates": {
+ "question": "Est-il facile de mettre à jour le contenu ?",
+ "answer": "Absolument ! L'interface de Squarespace est très intuitive. Nous vous formons à son utilisation pour que vous puissiez gérer votre contenu en toute autonomie."
+ },
+ "seo-optimization": {
+ "question": "Mon site sera-t-il optimisé pour le référencement ?",
+ "answer": "Oui, nous mettons en place les meilleures pratiques SEO de Squarespace et configurons tous les éléments nécessaires pour optimiser votre visibilité sur les moteurs de recherche."
+ },
+ "maintenance-service": {
+ "question": "Proposez-vous un service de maintenance ?",
+ "answer": "Oui, nous proposons différentes formules de maintenance incluant les mises à jour, le support technique et l'optimisation continue de votre site Squarespace."
+ }
+ },
+ "complementary": {
+ "advanced-customization": {
+ "title": "Personnalisation avancée",
+ "description": "Modifications CSS et Javascript pour personnaliser votre site au-delà des options standard."
+ },
+ "content-strategy": {
+ "title": "Stratégie de contenu",
+ "description": "Accompagnement dans la création et l'optimisation de votre contenu."
+ },
+ "user-training": {
+ "title": "Formation utilisateur",
+ "description": "Formation complète pour maîtriser la gestion de votre site Squarespace."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration/strapi.json b/apps/web/src/locales/fr/constants/services/integration/strapi.json
new file mode 100644
index 000000000..3366e69fb
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration/strapi.json
@@ -0,0 +1,80 @@
+{
+ "name": "Strapi",
+ "description": "Développement de CMS headless avec Strapi",
+ "hero": {
+ "title": "Développement CMS headless avec Strapi",
+ "description": "Développez des applications modernes avec Strapi. Notre expertise vous garantit une solution de gestion de contenu flexible, évolutive et parfaitement adaptée à vos besoins."
+ },
+ "features": {
+ "custom-api": {
+ "title": "API sur mesure",
+ "description": "Création d'APIs RESTful et GraphQL personnalisées pour tous vos besoins."
+ },
+ "flexible-administration": {
+ "title": "Administration flexible",
+ "description": "Interface d'administration personnalisable selon vos processus métier."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Architecture performante pour des temps de réponse rapides."
+ },
+ "advanced-security": {
+ "title": "Sécurité avancée",
+ "description": "Protection robuste de vos données et de vos APIs."
+ }
+ },
+ "benefits": {
+ "100-javascript": {
+ "title": "100% JavaScript",
+ "description": "Développement unifié en JavaScript/Node.js pour plus d'efficacité."
+ },
+ "flexible-models": {
+ "title": "Modèles flexibles",
+ "description": "Création de modèles de contenu personnalisés sans contraintes."
+ },
+ "role-management": {
+ "title": "Gestion des rôles",
+ "description": "Contrôle précis des accès et des permissions utilisateurs."
+ },
+ "advanced-workflows": {
+ "title": "Workflows avancés",
+ "description": "Automatisation des processus de publication et de validation."
+ }
+ },
+ "faq": {
+ "setup-timeline": {
+ "question": "Combien de temps faut-il pour mettre en place un projet Strapi ?",
+ "answer": "Le délai moyen pour mettre en place un projet Strapi varie de 4 à 12 semaines, selon la complexité. Ce délai comprend la conception des modèles de contenu, le développement des APIs, la personnalisation de l'administration et les tests."
+ },
+ "multilingual": {
+ "question": "Strapi peut-il gérer des contenus multilingues ?",
+ "answer": "Oui, Strapi gère nativement le contenu multilingue. Nous pouvons configurer et personnaliser la gestion des traductions selon vos besoins spécifiques."
+ },
+ "content-migration": {
+ "question": "Est-il possible de migrer notre contenu existant vers Strapi ?",
+ "answer": "Oui, nous proposons un service complet de migration de contenu vers Strapi, incluant l'analyse de vos données existantes, la création de modèles adaptés et l'import de vos contenus."
+ },
+ "deployment-hosting": {
+ "question": "Comment gérez-vous le déploiement et l'hébergement ?",
+ "answer": "Nous pouvons déployer Strapi sur différentes plateformes cloud (AWS, Google Cloud, DigitalOcean...) et mettre en place une infrastructure scalable avec des environnements de développement, staging et production."
+ },
+ "custom-plugins": {
+ "question": "Proposez-vous des développements de plugins personnalisés ?",
+ "answer": "Oui, nous développons des plugins Strapi sur mesure pour étendre les fonctionnalités selon vos besoins : intégrations spécifiques, workflows personnalisés, interfaces d'administration dédiées, etc."
+ }
+ },
+ "complementary": {
+ "frontend-development": {
+ "title": "Développement frontend",
+ "description": "Création d'applications frontend connectées à votre API Strapi."
+ },
+ "integrations": {
+ "title": "Intégrations",
+ "description": "Connection avec vos outils et services tiers existants."
+ },
+ "strapi-training": {
+ "title": "Formation Strapi",
+ "description": "Formation personnalisée pour maîtriser la gestion de votre CMS."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration/webflow.json b/apps/web/src/locales/fr/constants/services/integration/webflow.json
new file mode 100644
index 000000000..dd1777eec
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration/webflow.json
@@ -0,0 +1,80 @@
+{
+ "name": "Webflow",
+ "description": "Création de sites web modernes avec Webflow",
+ "hero": {
+ "title": "Développement Webflow professionnel",
+ "description": "Donnez vie à votre vision avec Webflow. Notre expertise vous garantit un site web moderne, interactif et parfaitement adapté à vos besoins, sans compromis sur la qualité."
+ },
+ "features": {
+ "advanced-visual-design": {
+ "title": "Design visuel avancé",
+ "description": "Création d'interfaces uniques et animations sophistiquées sans les limitations du codage traditionnel."
+ },
+ "optimal-performance": {
+ "title": "Performance optimale",
+ "description": "Sites rapides et réactifs optimisés pour tous les appareils et navigateurs."
+ },
+ "rich-interactions": {
+ "title": "Interactions riches",
+ "description": "Animations et interactions utilisateur fluides pour une expérience web moderne et engageante."
+ },
+ "integrated-cms": {
+ "title": "CMS intégré",
+ "description": "Système de gestion de contenu puissant et flexible pour une mise à jour facile."
+ }
+ },
+ "benefits": {
+ "visual-development": {
+ "title": "Développement visuel",
+ "description": "Création de sites complexes sans écrire de code, tout en gardant un contrôle total sur le design."
+ },
+ "native-seo": {
+ "title": "SEO natif",
+ "description": "Outils de référencement intégrés et structure optimisée pour les moteurs de recherche."
+ },
+ "responsive-by-default": {
+ "title": "Responsive par défaut",
+ "description": "Design parfaitement adapté à tous les écrans, des mobiles aux grands écrans."
+ },
+ "optimized-hosting": {
+ "title": "Hébergement optimisé",
+ "description": "Infrastructure cloud robuste avec CDN global pour des performances optimales."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "Combien de temps faut-il pour créer un site Webflow ?",
+ "answer": "Le délai moyen pour créer un site Webflow varie de 3 à 8 semaines, selon la complexité du projet. Ce délai comprend la conception, le développement des interactions, l'intégration du contenu et les tests."
+ },
+ "self-update": {
+ "question": "Puis-je facilement mettre à jour mon site moi-même ?",
+ "answer": "Absolument ! Webflow dispose d'un CMS intuitif que nous personnalisons selon vos besoins. Nous vous formons à son utilisation pour que vous puissiez gérer votre contenu en toute autonomie."
+ },
+ "ecommerce": {
+ "question": "Webflow est-il adapté aux sites e-commerce ?",
+ "answer": "Oui, Webflow propose une solution e-commerce robuste que nous pouvons personnaliser pour créer votre boutique en ligne avec des fonctionnalités avancées et un design sur mesure."
+ },
+ "animations-interactions": {
+ "question": "Comment gérez-vous les animations et interactions ?",
+ "answer": "Webflow permet de créer des animations et interactions sophistiquées sans code. Nous concevons des expériences interactives fluides et professionnelles tout en maintenant des performances optimales."
+ },
+ "seo-quality": {
+ "question": "Quelle est la qualité du référencement avec Webflow ?",
+ "answer": "Webflow génère un code propre et optimisé pour le SEO. Nous mettons en place les meilleures pratiques de référencement pour maximiser votre visibilité sur les moteurs de recherche."
+ }
+ },
+ "complementary": {
+ "custom-integrations": {
+ "title": "Intégrations personnalisées",
+ "description": "Connection avec vos outils et services tiers préférés."
+ },
+ "digital-strategy": {
+ "title": "Stratégie digitale",
+ "description": "Accompagnement dans votre stratégie de présence en ligne."
+ },
+ "webflow-training": {
+ "title": "Formation Webflow",
+ "description": "Formation sur mesure pour maîtriser la gestion de votre site."
+ }
+ }
+}
diff --git a/apps/web/src/locales/fr/constants/services/integration/wordpress.json b/apps/web/src/locales/fr/constants/services/integration/wordpress.json
new file mode 100644
index 000000000..f9eae6842
--- /dev/null
+++ b/apps/web/src/locales/fr/constants/services/integration/wordpress.json
@@ -0,0 +1,80 @@
+{
+ "name": "WordPress",
+ "description": "Développement de sites WordPress sur mesure",
+ "hero": {
+ "title": "Développement WordPress sur mesure",
+ "description": "Créez un site web professionnel qui vous ressemble avec WordPress. Notre expertise vous garantit un site performant, sécurisé et parfaitement adapté à vos besoins."
+ },
+ "features": {
+ "custom-themes": {
+ "title": "Thèmes sur mesure",
+ "description": "Création de thèmes personnalisés qui reflètent votre identité et répondent précisément à vos besoins."
+ },
+ "optimized-performance": {
+ "title": "Performance optimisée",
+ "description": "Optimisation poussée pour garantir des temps de chargement rapides et une expérience utilisateur fluide."
+ },
+ "enhanced-security": {
+ "title": "Sécurité renforcée",
+ "description": "Mise en place des meilleures pratiques de sécurité pour protéger votre site et vos données."
+ },
+ "simplified-administration": {
+ "title": "Administration simplifiée",
+ "description": "Interface d'administration personnalisée et intuitive pour une gestion facile de votre contenu."
+ }
+ },
+ "benefits": {
+ "intuitive-administration": {
+ "title": "Administration intuitive",
+ "description": "Interface de gestion simple et intuitive pour gérer votre contenu en toute autonomie."
+ },
+ "seo-optimized": {
+ "title": "SEO optimisé",
+ "description": "Structure optimisée pour le référencement naturel et outils SEO intégrés."
+ },
+ "powerful-extensions": {
+ "title": "Extensions puissantes",
+ "description": "Accès à des milliers de plugins pour étendre les fonctionnalités de votre site."
+ },
+ "maximum-performance": {
+ "title": "Performance maximale",
+ "description": "Optimisation avancée des performances pour une expérience utilisateur optimale."
+ }
+ },
+ "faq": {
+ "creation-timeline": {
+ "question": "Combien de temps faut-il pour créer un site WordPress ?",
+ "answer": "Le délai moyen pour créer un site WordPress varie de 4 à 12 semaines, selon la complexité du projet. Ce délai comprend la phase de design, le développement du thème sur mesure, l'intégration du contenu et les tests."
+ },
+ "migration": {
+ "question": "Pouvez-vous migrer mon site existant vers WordPress ?",
+ "answer": "Oui, nous proposons un service complet de migration vers WordPress, incluant le transfert du contenu, des images et des fonctionnalités, tout en préservant votre référencement."
+ },
+ "maintenance-updates": {
+ "question": "Comment gérez-vous la maintenance et les mises à jour ?",
+ "answer": "Nous proposons différentes formules de maintenance incluant les mises à jour de sécurité, les sauvegardes régulières, les mises à jour de WordPress et des plugins, ainsi que le monitoring des performances."
+ },
+ "mobile-optimization": {
+ "question": "Mon site sera-t-il optimisé pour les mobiles ?",
+ "answer": "Absolument. Tous nos développements WordPress sont responsive par défaut, garantissant une expérience optimale sur tous les appareils : ordinateurs, tablettes et smartphones."
+ },
+ "security-approach": {
+ "question": "Quelle est votre approche en matière de sécurité ?",
+ "answer": "Nous mettons en place une stratégie de sécurité complète : authentification forte, pare-feu applicatif, monitoring des tentatives d'intrusion, sauvegardes automatisées et mises à jour de sécurité régulières."
+ }
+ },
+ "complementary": {
+ "custom-development": {
+ "title": "Développement sur mesure",
+ "description": "Création de fonctionnalités spécifiques pour répondre à vos besoins particuliers."
+ },
+ "digital-marketing": {
+ "title": "Marketing digital",
+ "description": "Stratégies marketing adaptées pour augmenter votre visibilité en ligne."
+ },
+ "wordpress-training": {
+ "title": "Formation WordPress",
+ "description": "Formation personnalisée pour maîtriser la gestion de votre site."
+ }
+ }
+}
diff --git a/apps/web/src/proxy.ts b/apps/web/src/proxy.ts
index bf701fee8..63a30e35d 100644
--- a/apps/web/src/proxy.ts
+++ b/apps/web/src/proxy.ts
@@ -10,6 +10,8 @@ export function proxy(request: NextRequest) {
(locale) => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`,
);
+ const isSecure = request.url.startsWith("https://");
+
// If URL has the default locale prefix, redirect to remove it and set cookie
if (pathnameLocale === defaultLocale) {
const newPathname = pathname.slice(`/${defaultLocale}`.length) || "/";
@@ -17,8 +19,7 @@ export function proxy(request: NextRequest) {
response.cookies.set(LOCALE_COOKIE, defaultLocale, {
path: "/",
maxAge: 60 * 60 * 24 * 365, // 1 year
- httpOnly: true,
- secure: true,
+ secure: isSecure,
sameSite: "lax",
});
return response;
@@ -35,8 +36,7 @@ export function proxy(request: NextRequest) {
response.cookies.set(LOCALE_COOKIE, pathnameLocale, {
path: "/",
maxAge: 60 * 60 * 24 * 365, // 1 year
- httpOnly: true,
- secure: true,
+ secure: isSecure,
sameSite: "lax",
});
return response;
diff --git a/apps/web/src/screens/marketing/services/index.tsx b/apps/web/src/screens/marketing/services/index.tsx
index 08ee3db3d..40d4748e3 100644
--- a/apps/web/src/screens/marketing/services/index.tsx
+++ b/apps/web/src/screens/marketing/services/index.tsx
@@ -1,85 +1,99 @@
+"use client";
+
import React from 'react';
import { Button } from "@/components/ui/button";
import DotPattern from "@/components/ui/dot-pattern";
import { cn } from "@/lib/utils";
-import { ArrowRight, LucideIcon } from "lucide-react";
+import { ArrowRight } from "lucide-react";
import { Link } from "@onruntime/translations/next";
+import { useTranslation } from "@onruntime/translations/react";
import Routes from "@/constants/routes";
-import Services from "@/constants/services";
import ProjectTimeline from './timeline';
import { ConsultingSection, ExpertiseSection, TechnologiesSection, ValuePropositionSection } from '@/components/marketing/services/sections';
+import { ServiceCategoryData, SubService } from '@/types/service';
-const ServiceCard = ({
- name,
- description,
- icon: Icon,
- subServices,
- route
-}: {
- name: string;
- description: string;
- icon: LucideIcon;
- subServices: Array<{
- name: string;
- description: string;
- route: string;
- icon?: LucideIcon;
- }>;
- route: string;
-}) => (
-
toggleSection(item.title)}
From 9e79be702aff2473b6db954e2eb8a6716a9b5007 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 21:22:48 +0100
Subject: [PATCH 60/64] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20fix=20french=20local?=
=?UTF-8?q?ization=20inconsistencies=20in=20service=20descriptions?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../fr/constants/services/backend/bots.json | 2 +-
.../fr/constants/services/frontend/desktop.json | 16 ++++++++--------
.../services/integration/squarespace.json | 4 ++--
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/apps/web/src/locales/fr/constants/services/backend/bots.json b/apps/web/src/locales/fr/constants/services/backend/bots.json
index 7ac351245..334d68580 100644
--- a/apps/web/src/locales/fr/constants/services/backend/bots.json
+++ b/apps/web/src/locales/fr/constants/services/backend/bots.json
@@ -20,7 +20,7 @@
},
"integrations": {
"title": "Intégrations",
- "description": "Connection avec vos outils et services existants."
+ "description": "Connexion avec vos outils et services existants."
}
},
"benefits": {
diff --git a/apps/web/src/locales/fr/constants/services/frontend/desktop.json b/apps/web/src/locales/fr/constants/services/frontend/desktop.json
index c7de3ea14..e5ed059c1 100644
--- a/apps/web/src/locales/fr/constants/services/frontend/desktop.json
+++ b/apps/web/src/locales/fr/constants/services/frontend/desktop.json
@@ -1,14 +1,14 @@
{
"name": "Logiciels de bureau",
- "description": "Développement d'applications desktop multiplateforme",
+ "description": "Développement d'applications de bureau multiplateforme",
"hero": {
- "title": "Applications desktop multiplateformes",
- "description": "Développez des applications de bureau modernes et performantes pour Windows, macOS et Linux. Notre expertise vous garantit des applications professionnelles qui tirent parti de toute la puissance du desktop."
+ "title": "Applications de bureau multiplateformes",
+ "description": "Développez des applications de bureau modernes et performantes pour Windows, macOS et Linux. Notre expertise vous garantit des applications professionnelles qui tirent parti de toute la puissance du bureau."
},
"features": {
"electron-react": {
"title": "Electron & React",
- "description": "Technologies modernes pour des applications desktop performantes et évolutives."
+ "description": "Technologies modernes pour des applications de bureau performantes et évolutives."
},
"multiplatform": {
"title": "Multiplateforme",
@@ -26,7 +26,7 @@
"benefits": {
"windows-macos": {
"title": "Windows & macOS",
- "description": "Support natif des principales plateformes desktop."
+ "description": "Support natif des principales plateformes de bureau."
},
"system-access": {
"title": "Accès système",
@@ -43,11 +43,11 @@
},
"faq": {
"why-electron": {
- "question": "Pourquoi choisir Electron pour le développement desktop ?",
- "answer": "Electron permet de créer des applications desktop multiplateformes avec des technologies web modernes (React, TypeScript). Cela offre un développement rapide, une maintenance simplifiée et une excellente expérience utilisateur, tout en garantissant la compatibilité avec Windows, macOS et Linux."
+ "question": "Pourquoi choisir Electron pour le développement de bureau ?",
+ "answer": "Electron permet de créer des applications de bureau multiplateformes avec des technologies web modernes (React, TypeScript). Cela offre un développement rapide, une maintenance simplifiée et une excellente expérience utilisateur, tout en garantissant la compatibilité avec Windows, macOS et Linux."
},
"security": {
- "question": "Comment gérez-vous la sécurité des applications desktop ?",
+ "question": "Comment gérez-vous la sécurité des applications de bureau ?",
"answer": "Nous implémentons plusieurs niveaux de sécurité : chiffrement des données sensibles, protection contre les injections de code, mises à jour de sécurité automatiques, et bonnes pratiques de développement sécurisé. Nous suivons également les recommandations de sécurité spécifiques à chaque système d'exploitation."
},
"auto-update": {
diff --git a/apps/web/src/locales/fr/constants/services/integration/squarespace.json b/apps/web/src/locales/fr/constants/services/integration/squarespace.json
index 126a424a7..cfadf6ce1 100644
--- a/apps/web/src/locales/fr/constants/services/integration/squarespace.json
+++ b/apps/web/src/locales/fr/constants/services/integration/squarespace.json
@@ -1,6 +1,6 @@
{
- "name": "SquareSpace",
- "description": "Intégration et personnalisation sur SquareSpace",
+ "name": "Squarespace",
+ "description": "Intégration et personnalisation sur Squarespace",
"hero": {
"title": "Sites web élégants avec Squarespace",
"description": "Créez une présence en ligne raffinée avec Squarespace. Notre expertise vous garantit un site web esthétique, fonctionnel et parfaitement adapté à votre image de marque."
From d39684c76c01968f054604b61542c73ad8fa31c9 Mon Sep 17 00:00:00 2001
From: Antoine Kingue
Date: Tue, 30 Dec 2025 21:34:00 +0100
Subject: [PATCH 61/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20services?=
=?UTF-8?q?=20page=20to=20directly=20use=20imported=20services=20and=20sim?=
=?UTF-8?q?plify=20props?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/web/src/app/[locale]/services/page.tsx | 3 +--
apps/web/src/screens/marketing/services/index.tsx | 9 +++------
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/apps/web/src/app/[locale]/services/page.tsx b/apps/web/src/app/[locale]/services/page.tsx
index 4a8e48207..e3be9cc30 100644
--- a/apps/web/src/app/[locale]/services/page.tsx
+++ b/apps/web/src/app/[locale]/services/page.tsx
@@ -1,7 +1,6 @@
import { constructMetadata } from "@/lib/utils/metadata.server";
import { getTranslation } from "@/lib/translations.server";
import ServicesPage from "@/screens/marketing/services";
-import Services from "@/constants/services";
export async function generateMetadata() {
const { t } = await getTranslation("app/services/page");
@@ -13,5 +12,5 @@ export async function generateMetadata() {
}
export default async function Page() {
- return ;
+ return ;
}
diff --git a/apps/web/src/screens/marketing/services/index.tsx b/apps/web/src/screens/marketing/services/index.tsx
index 40d4748e3..b0cecf42f 100644
--- a/apps/web/src/screens/marketing/services/index.tsx
+++ b/apps/web/src/screens/marketing/services/index.tsx
@@ -11,6 +11,7 @@ import Routes from "@/constants/routes";
import ProjectTimeline from './timeline';
import { ConsultingSection, ExpertiseSection, TechnologiesSection, ValuePropositionSection } from '@/components/marketing/services/sections';
import { ServiceCategoryData, SubService } from '@/types/service';
+import Services from '@/constants/services';
const SubServiceCard: React.FC<{ categoryId: string; subService: SubService }> = ({
categoryId,
@@ -71,11 +72,7 @@ const ServiceCategoryCard: React.FC<{ service: ServiceCategoryData }> = ({ servi
);
};
-interface ServicesPageProps {
- services: ServiceCategoryData[];
-}
-
-const ServicesPage: React.FC = ({ services }) => {
+const ServicesPage: React.FC = () => {
const { t } = useTranslation("app/services/page");
return (
@@ -111,7 +108,7 @@ const ServicesPage: React.FC = ({ services }) => {