feat: complete agency site build (Phases 1-7)
Full Next.js 16 + Payload CMS 3.x agency site with: - Homepage: Hero, TrustBar, Services, Configurator wizard, Process, Selected Works, Philosophy, CTA Banner - Sub-pages: /services (3 pillars + AI Layer), /work/[slug] (case studies), /about (philosophy + story) - Configurator: 3-step wizard with AI brief generation API - i18n: Full EN/FR bilingual with next-intl - Design system: Cormorant Garamond + Inter, celestial blue palette, glassmorphism nav, Framer Motion animations - Payload CMS collections: Projects, Services, Submissions, Media Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
4
src/i18n/config.ts
Normal file
4
src/i18n/config.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export const locales = ['en', 'fr'] as const
|
||||
export const defaultLocale = 'en' as const
|
||||
|
||||
export type Locale = (typeof locales)[number]
|
||||
146
src/i18n/messages/en.json
Normal file
146
src/i18n/messages/en.json
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"nav": {
|
||||
"services": "Services",
|
||||
"configure": "Configure",
|
||||
"process": "Process",
|
||||
"work": "Work",
|
||||
"about": "About",
|
||||
"startProject": "Start a Project",
|
||||
"bookCall": "Book a Call"
|
||||
},
|
||||
"hero": {
|
||||
"eyebrow": "Bespoke Digital Studio",
|
||||
"title": "Your website, your infrastructure, your AI — built {exclusively} for you.",
|
||||
"subtitle": "We design and develop complete digital ecosystems for ambitious businesses on the Côte d'Azur and beyond. No templates, no compromises.",
|
||||
"cta": "Configure Your Project",
|
||||
"ctaSecondary": "See Our Work",
|
||||
"trust": "Trusted by businesses across the Riviera"
|
||||
},
|
||||
"trustBar": {
|
||||
"customBuilt": {
|
||||
"title": "Custom-Built",
|
||||
"description": "Tailored architecture from the first line of code."
|
||||
},
|
||||
"privateInfra": {
|
||||
"title": "Private Infrastructure",
|
||||
"description": "Secure, dedicated cloud environments for your data."
|
||||
},
|
||||
"aiPowered": {
|
||||
"title": "AI-Powered",
|
||||
"description": "Intelligent automation that scales your productivity."
|
||||
},
|
||||
"rivieraBased": {
|
||||
"title": "Riviera-Based",
|
||||
"description": "Local expertise for global ambitions."
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"eyebrow": "Our Capabilities",
|
||||
"title": "Three Pillars of Digital Excellence",
|
||||
"web": {
|
||||
"title": "Design & Development",
|
||||
"features": ["Bespoke UI/UX Design", "Modern Web Applications", "E-commerce & Platforms", "Performance Optimization"]
|
||||
},
|
||||
"systems": {
|
||||
"title": "Custom Systems",
|
||||
"features": ["CRM & Management Platforms", "Bespoke Business Software", "API & Integration Architecture", "Internal Tooling"]
|
||||
},
|
||||
"infrastructure": {
|
||||
"title": "Digital Infrastructure",
|
||||
"features": ["Dedicated Cloud Hosting", "Data Sovereignty Solutions", "Security Hardening", "DevOps & Maintenance"]
|
||||
},
|
||||
"aiNarrative": "We build your digital ecosystem — then make it intelligent."
|
||||
},
|
||||
"configurator": {
|
||||
"eyebrow": "Interactive Studio",
|
||||
"title": "Let's define your project scope.",
|
||||
"description": "Configure your requirements and we'll generate a personalized project brief.",
|
||||
"step1": {
|
||||
"title": "What are we building together?",
|
||||
"subtitle": "Select the services that match your vision."
|
||||
},
|
||||
"step2": {
|
||||
"title": "Tell us about your project",
|
||||
"subtitle": "This helps us prepare the right approach before our first call."
|
||||
},
|
||||
"step3": {
|
||||
"title": "Almost there",
|
||||
"subtitle": "We'll generate a personalized project brief and send it to your inbox."
|
||||
},
|
||||
"complete": {
|
||||
"title": "Your project brief is ready",
|
||||
"subtitle": "Check your inbox — we've sent a detailed brief to {email}",
|
||||
"bookTitle": "Book a Consultation",
|
||||
"bookSubtitle": "30 minutes to discuss your brief with our team"
|
||||
},
|
||||
"aiToggle": "Enhance with AI",
|
||||
"aiDescription": "We layer intelligent automation into every system we build.",
|
||||
"generateBrief": "Generate My Brief",
|
||||
"nextStep": "Next Step",
|
||||
"back": "Back"
|
||||
},
|
||||
"process": {
|
||||
"eyebrow": "Our Method",
|
||||
"title": "Architecture of a Project",
|
||||
"steps": {
|
||||
"discovery": {
|
||||
"title": "Discovery",
|
||||
"description": "Understanding your business, users, and technical landscape."
|
||||
},
|
||||
"strategy": {
|
||||
"title": "Strategy & Architecture",
|
||||
"description": "Defining the blueprint — from data model to deployment plan."
|
||||
},
|
||||
"build": {
|
||||
"title": "Design & Build",
|
||||
"description": "Crafting every pixel and every line of code."
|
||||
},
|
||||
"launch": {
|
||||
"title": "Launch & Evolve",
|
||||
"description": "Deployment, monitoring, and continuous improvement."
|
||||
}
|
||||
}
|
||||
},
|
||||
"work": {
|
||||
"eyebrow": "Selected Works",
|
||||
"title": "Digital Landmarks",
|
||||
"readCaseStudy": "Read Case Study",
|
||||
"comingSoon": "Coming Soon"
|
||||
},
|
||||
"philosophy": {
|
||||
"eyebrow": "The LetsBe. Way",
|
||||
"title": "Digital Sovereignty is not a luxury.",
|
||||
"subtitle": "We believe that every modern business is, at its core, a software company. We help you own your tools, your data, and your future.",
|
||||
"ownership": {
|
||||
"title": "Ownership & Privacy",
|
||||
"description": "We move you away from standard SaaS dependencies into private cloud environments where you own 100% of your data."
|
||||
},
|
||||
"craftsmanship": {
|
||||
"title": "Craftsmanship",
|
||||
"description": "We don't use page builders or bloated themes. We write clean, semantic code that is lightning-fast and search-engine optimized."
|
||||
},
|
||||
"oneTeam": {
|
||||
"title": "One Team, Everything",
|
||||
"description": "From the initial Figma frame to the Kubernetes deployment, we manage the entire lifecycle under one roof."
|
||||
},
|
||||
"quote": "Our mission is to bring the precision of architecture to the fluidity of the web."
|
||||
},
|
||||
"cta": {
|
||||
"eyebrow": "Let's Talk",
|
||||
"title": "Ready to build something exceptional?",
|
||||
"subtitle": "From the first consultation to launch day, we're with you every step of the way.",
|
||||
"cta": "Configure Your Project",
|
||||
"configure": "Configure Your Project",
|
||||
"email": "hello@letsbe.biz",
|
||||
"reassurance": "No commitment required — just a conversation about what's possible."
|
||||
},
|
||||
"footer": {
|
||||
"tagline": "Designing and engineering the digital backbone of tomorrow's leaders.",
|
||||
"location": "Côte d'Azur, France",
|
||||
"services": "Services",
|
||||
"studio": "Studio",
|
||||
"connect": "Connect",
|
||||
"privacy": "Privacy Policy",
|
||||
"terms": "Terms of Service"
|
||||
}
|
||||
}
|
||||
146
src/i18n/messages/fr.json
Normal file
146
src/i18n/messages/fr.json
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"nav": {
|
||||
"services": "Services",
|
||||
"configure": "Configurer",
|
||||
"process": "Méthode",
|
||||
"work": "Réalisations",
|
||||
"about": "À propos",
|
||||
"startProject": "Démarrer un Projet",
|
||||
"bookCall": "Réserver un Appel"
|
||||
},
|
||||
"hero": {
|
||||
"eyebrow": "Studio Digital Sur Mesure",
|
||||
"title": "Votre site, votre infrastructure, votre IA — conçus {exclusively} pour vous.",
|
||||
"subtitle": "Nous concevons et développons des écosystèmes digitaux complets pour les entreprises ambitieuses sur la Côte d'Azur et au-delà. Pas de templates, pas de compromis.",
|
||||
"cta": "Configurez Votre Projet",
|
||||
"ctaSecondary": "Voir Nos Réalisations",
|
||||
"trust": "La confiance des entreprises de la Riviera"
|
||||
},
|
||||
"trustBar": {
|
||||
"customBuilt": {
|
||||
"title": "Sur Mesure",
|
||||
"description": "Architecture personnalisée dès la première ligne de code."
|
||||
},
|
||||
"privateInfra": {
|
||||
"title": "Infrastructure Privée",
|
||||
"description": "Environnements cloud dédiés et sécurisés pour vos données."
|
||||
},
|
||||
"aiPowered": {
|
||||
"title": "Propulsé par l'IA",
|
||||
"description": "Automatisation intelligente qui démultiplie votre productivité."
|
||||
},
|
||||
"rivieraBased": {
|
||||
"title": "Basé sur la Riviera",
|
||||
"description": "Expertise locale pour des ambitions globales."
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"eyebrow": "Nos Compétences",
|
||||
"title": "Trois Piliers d'Excellence Digitale",
|
||||
"web": {
|
||||
"title": "Design & Développement",
|
||||
"features": ["Design UI/UX Sur Mesure", "Applications Web Modernes", "E-commerce & Plateformes", "Optimisation des Performances"]
|
||||
},
|
||||
"systems": {
|
||||
"title": "Systèmes Personnalisés",
|
||||
"features": ["CRM & Plateformes de Gestion", "Logiciels Métier Sur Mesure", "Architecture API & Intégration", "Outillage Interne"]
|
||||
},
|
||||
"infrastructure": {
|
||||
"title": "Infrastructure Digitale",
|
||||
"features": ["Hébergement Cloud Dédié", "Solutions de Souveraineté des Données", "Renforcement de la Sécurité", "DevOps & Maintenance"]
|
||||
},
|
||||
"aiNarrative": "Nous construisons votre écosystème digital — puis nous le rendons intelligent."
|
||||
},
|
||||
"configurator": {
|
||||
"eyebrow": "Studio Interactif",
|
||||
"title": "Définissons le périmètre de votre projet.",
|
||||
"description": "Configurez vos besoins et nous générerons un brief personnalisé.",
|
||||
"step1": {
|
||||
"title": "Que construisons-nous ensemble ?",
|
||||
"subtitle": "Sélectionnez les services qui correspondent à votre vision."
|
||||
},
|
||||
"step2": {
|
||||
"title": "Parlez-nous de votre projet",
|
||||
"subtitle": "Cela nous aide à préparer la bonne approche avant notre premier échange."
|
||||
},
|
||||
"step3": {
|
||||
"title": "Presque terminé",
|
||||
"subtitle": "Nous générerons un brief personnalisé et l'enverrons dans votre boîte mail."
|
||||
},
|
||||
"complete": {
|
||||
"title": "Votre brief est prêt",
|
||||
"subtitle": "Vérifiez votre boîte mail — nous avons envoyé un brief détaillé à {email}",
|
||||
"bookTitle": "Réservez une Consultation",
|
||||
"bookSubtitle": "30 minutes pour discuter de votre brief avec notre équipe"
|
||||
},
|
||||
"aiToggle": "Enrichir avec l'IA",
|
||||
"aiDescription": "Nous intégrons l'automatisation intelligente dans chaque système que nous construisons.",
|
||||
"generateBrief": "Générer Mon Brief",
|
||||
"nextStep": "Étape Suivante",
|
||||
"back": "Retour"
|
||||
},
|
||||
"process": {
|
||||
"eyebrow": "Notre Méthode",
|
||||
"title": "Architecture d'un Projet",
|
||||
"steps": {
|
||||
"discovery": {
|
||||
"title": "Découverte",
|
||||
"description": "Comprendre votre entreprise, vos utilisateurs et votre paysage technique."
|
||||
},
|
||||
"strategy": {
|
||||
"title": "Stratégie & Architecture",
|
||||
"description": "Définir le plan — du modèle de données au plan de déploiement."
|
||||
},
|
||||
"build": {
|
||||
"title": "Design & Construction",
|
||||
"description": "Façonner chaque pixel et chaque ligne de code."
|
||||
},
|
||||
"launch": {
|
||||
"title": "Lancement & Évolution",
|
||||
"description": "Déploiement, monitoring et amélioration continue."
|
||||
}
|
||||
}
|
||||
},
|
||||
"work": {
|
||||
"eyebrow": "Réalisations Sélectionnées",
|
||||
"title": "Réalisations Digitales",
|
||||
"readCaseStudy": "Lire l'Étude de Cas",
|
||||
"comingSoon": "Bientôt Disponible"
|
||||
},
|
||||
"philosophy": {
|
||||
"eyebrow": "La Philosophie LetsBe.",
|
||||
"title": "La souveraineté digitale n'est pas un luxe.",
|
||||
"subtitle": "Nous croyons que chaque entreprise moderne est, en son cœur, une entreprise logicielle. Nous vous aidons à posséder vos outils, vos données et votre avenir.",
|
||||
"ownership": {
|
||||
"title": "Propriété & Confidentialité",
|
||||
"description": "Nous vous éloignons des dépendances SaaS standard vers des environnements cloud privés où vous possédez 100% de vos données."
|
||||
},
|
||||
"craftsmanship": {
|
||||
"title": "Artisanat",
|
||||
"description": "Nous n'utilisons pas de constructeurs de pages ou de thèmes surchargés. Nous écrivons du code propre et sémantique, ultra-rapide et optimisé pour le référencement."
|
||||
},
|
||||
"oneTeam": {
|
||||
"title": "Une Équipe, Tout",
|
||||
"description": "Du premier frame Figma au déploiement Kubernetes, nous gérons l'intégralité du cycle de vie sous un même toit."
|
||||
},
|
||||
"quote": "Notre mission est d'apporter la précision de l'architecture à la fluidité du web."
|
||||
},
|
||||
"cta": {
|
||||
"eyebrow": "Parlons-en",
|
||||
"title": "Prêt à construire quelque chose d'exceptionnel ?",
|
||||
"subtitle": "De la première consultation au jour du lancement, nous vous accompagnons à chaque étape.",
|
||||
"cta": "Configurez Votre Projet",
|
||||
"configure": "Configurez Votre Projet",
|
||||
"email": "hello@letsbe.biz",
|
||||
"reassurance": "Sans engagement — juste une conversation sur ce qui est possible."
|
||||
},
|
||||
"footer": {
|
||||
"tagline": "Concevoir et construire la colonne vertébrale digitale des leaders de demain.",
|
||||
"location": "Côte d'Azur, France",
|
||||
"services": "Services",
|
||||
"studio": "Studio",
|
||||
"connect": "Contact",
|
||||
"privacy": "Politique de Confidentialité",
|
||||
"terms": "Conditions d'Utilisation"
|
||||
}
|
||||
}
|
||||
5
src/i18n/navigation.ts
Normal file
5
src/i18n/navigation.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { createNavigation } from 'next-intl/navigation'
|
||||
import { routing } from './routing'
|
||||
|
||||
export const { Link, redirect, usePathname, useRouter, getPathname } =
|
||||
createNavigation(routing)
|
||||
15
src/i18n/request.ts
Normal file
15
src/i18n/request.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { getRequestConfig } from 'next-intl/server'
|
||||
import { routing } from './routing'
|
||||
|
||||
export default getRequestConfig(async ({ requestLocale }) => {
|
||||
let locale = await requestLocale
|
||||
|
||||
if (!locale || !routing.locales.includes(locale as any)) {
|
||||
locale = routing.defaultLocale
|
||||
}
|
||||
|
||||
return {
|
||||
locale,
|
||||
messages: (await import(`./messages/${locale}.json`)).default,
|
||||
}
|
||||
})
|
||||
8
src/i18n/routing.ts
Normal file
8
src/i18n/routing.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { defineRouting } from 'next-intl/routing'
|
||||
import { locales, defaultLocale } from './config'
|
||||
|
||||
export const routing = defineRouting({
|
||||
locales,
|
||||
defaultLocale,
|
||||
localePrefix: 'as-needed',
|
||||
})
|
||||
Reference in New Issue
Block a user