diff --git a/package.json b/package.json index 2d49ab0da..b76620577 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dependencies": { "@hookform/resolvers": "^4.0.0", "@mdx-js/loader": "^3.1.0", + "@radix-ui/react-accordion": "^1.2.3", "@mdx-js/react": "^3.1.0", "@next/mdx": "^15.1.7", "@radix-ui/react-navigation-menu": "^1.2.3", diff --git a/public/static/images/partners/aws.svg b/public/static/images/partners/aws.svg new file mode 100644 index 000000000..f6c9b36ec --- /dev/null +++ b/public/static/images/partners/aws.svg @@ -0,0 +1,120 @@ + +image/svg+xml \ No newline at end of file diff --git a/public/static/images/partners/google-cloud.svg b/public/static/images/partners/google-cloud.svg new file mode 100644 index 000000000..ae6d94748 --- /dev/null +++ b/public/static/images/partners/google-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/static/images/partners/shopify.svg b/public/static/images/partners/shopify.svg new file mode 100644 index 000000000..b81e58f49 --- /dev/null +++ b/public/static/images/partners/shopify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/static/images/services/back-end/api-restful/api-hero.webp b/public/static/images/services/back-end/api-restful/api-hero.webp new file mode 100644 index 000000000..08607afd2 Binary files /dev/null and b/public/static/images/services/back-end/api-restful/api-hero.webp differ diff --git a/public/static/images/services/back-end/api-restful/api-robuste.webp b/public/static/images/services/back-end/api-restful/api-robuste.webp new file mode 100644 index 000000000..028afd7a7 Binary files /dev/null and b/public/static/images/services/back-end/api-restful/api-robuste.webp differ diff --git a/public/static/images/services/back-end/api-restful/excellence-api.webp b/public/static/images/services/back-end/api-restful/excellence-api.webp new file mode 100644 index 000000000..dbb682021 Binary files /dev/null and b/public/static/images/services/back-end/api-restful/excellence-api.webp differ diff --git a/public/static/images/services/back-end/api-restful/service-complementaire.webp b/public/static/images/services/back-end/api-restful/service-complementaire.webp new file mode 100644 index 000000000..b7c87aae0 Binary files /dev/null and b/public/static/images/services/back-end/api-restful/service-complementaire.webp differ diff --git a/public/static/images/services/back-end/back-expert.webp b/public/static/images/services/back-end/back-expert.webp new file mode 100644 index 000000000..d28d35fac Binary files /dev/null and b/public/static/images/services/back-end/back-expert.webp differ diff --git "a/public/static/images/services/back-end/bases-de-donn\303\251es/database-hero.webp" "b/public/static/images/services/back-end/bases-de-donn\303\251es/database-hero.webp" new file mode 100644 index 000000000..e7517d26e Binary files /dev/null and "b/public/static/images/services/back-end/bases-de-donn\303\251es/database-hero.webp" differ diff --git "a/public/static/images/services/back-end/bases-de-donn\303\251es/excellence-database.webp" "b/public/static/images/services/back-end/bases-de-donn\303\251es/excellence-database.webp" new file mode 100644 index 000000000..7079ae969 Binary files /dev/null and "b/public/static/images/services/back-end/bases-de-donn\303\251es/excellence-database.webp" differ diff --git "a/public/static/images/services/back-end/bases-de-donn\303\251es/service-complementaire.webp" "b/public/static/images/services/back-end/bases-de-donn\303\251es/service-complementaire.webp" new file mode 100644 index 000000000..4e44fa37e Binary files /dev/null and "b/public/static/images/services/back-end/bases-de-donn\303\251es/service-complementaire.webp" differ diff --git "a/public/static/images/services/back-end/bases-de-donn\303\251es/solution-moderne.webp" "b/public/static/images/services/back-end/bases-de-donn\303\251es/solution-moderne.webp" new file mode 100644 index 000000000..359ca6cbd Binary files /dev/null and "b/public/static/images/services/back-end/bases-de-donn\303\251es/solution-moderne.webp" differ diff --git a/public/static/images/services/back-end/bots/bot-intelligent.webp b/public/static/images/services/back-end/bots/bot-intelligent.webp new file mode 100644 index 000000000..af031cb66 Binary files /dev/null and b/public/static/images/services/back-end/bots/bot-intelligent.webp differ diff --git a/public/static/images/services/back-end/bots/bots-hero.webp b/public/static/images/services/back-end/bots/bots-hero.webp new file mode 100644 index 000000000..7ee6e444e Binary files /dev/null and b/public/static/images/services/back-end/bots/bots-hero.webp differ diff --git a/public/static/images/services/back-end/bots/excellence-developpement.webp b/public/static/images/services/back-end/bots/excellence-developpement.webp new file mode 100644 index 000000000..dfa76df70 Binary files /dev/null and b/public/static/images/services/back-end/bots/excellence-developpement.webp differ diff --git a/public/static/images/services/back-end/bots/service-complementaire.webp b/public/static/images/services/back-end/bots/service-complementaire.webp new file mode 100644 index 000000000..35be17eb1 Binary files /dev/null and b/public/static/images/services/back-end/bots/service-complementaire.webp differ diff --git a/public/static/images/services/back-end/dev-back-hero.webp b/public/static/images/services/back-end/dev-back-hero.webp new file mode 100644 index 000000000..1da473e3c Binary files /dev/null and b/public/static/images/services/back-end/dev-back-hero.webp differ diff --git a/public/static/images/services/back-end/microservices/architecture-hero.webp b/public/static/images/services/back-end/microservices/architecture-hero.webp new file mode 100644 index 000000000..df3054fa2 Binary files /dev/null and b/public/static/images/services/back-end/microservices/architecture-hero.webp differ diff --git a/public/static/images/services/back-end/microservices/excellence-microservice.webp b/public/static/images/services/back-end/microservices/excellence-microservice.webp new file mode 100644 index 000000000..7af05eef7 Binary files /dev/null and b/public/static/images/services/back-end/microservices/excellence-microservice.webp differ diff --git a/public/static/images/services/back-end/microservices/moderne-flexible.webp b/public/static/images/services/back-end/microservices/moderne-flexible.webp new file mode 100644 index 000000000..74d5098d2 Binary files /dev/null and b/public/static/images/services/back-end/microservices/moderne-flexible.webp differ diff --git a/public/static/images/services/back-end/microservices/service-complementaire.webp b/public/static/images/services/back-end/microservices/service-complementaire.webp new file mode 100644 index 000000000..c9709d0dc Binary files /dev/null and b/public/static/images/services/back-end/microservices/service-complementaire.webp differ diff --git a/public/static/images/services/back-end/solutions-cloud/cloud-hero.webp b/public/static/images/services/back-end/solutions-cloud/cloud-hero.webp new file mode 100644 index 000000000..619ee5aac Binary files /dev/null and b/public/static/images/services/back-end/solutions-cloud/cloud-hero.webp differ diff --git a/public/static/images/services/back-end/solutions-cloud/infrastructure-modern.webp b/public/static/images/services/back-end/solutions-cloud/infrastructure-modern.webp new file mode 100644 index 000000000..bb917a30c Binary files /dev/null and b/public/static/images/services/back-end/solutions-cloud/infrastructure-modern.webp differ diff --git a/public/static/images/services/back-end/solutions-cloud/multi-cloud.webp b/public/static/images/services/back-end/solutions-cloud/multi-cloud.webp new file mode 100644 index 000000000..244f6ea8b Binary files /dev/null and b/public/static/images/services/back-end/solutions-cloud/multi-cloud.webp differ diff --git a/public/static/images/services/back-end/solutions-cloud/service-complementaire.webp b/public/static/images/services/back-end/solutions-cloud/service-complementaire.webp new file mode 100644 index 000000000..082421179 Binary files /dev/null and b/public/static/images/services/back-end/solutions-cloud/service-complementaire.webp differ diff --git a/public/static/images/services/design/audit-ui/analyse-ui-ux.webp b/public/static/images/services/design/audit-ui/analyse-ui-ux.webp new file mode 100644 index 000000000..e73b653f8 Binary files /dev/null and b/public/static/images/services/design/audit-ui/analyse-ui-ux.webp differ diff --git a/public/static/images/services/design/audit-ui/audit-hero.webp b/public/static/images/services/design/audit-ui/audit-hero.webp new file mode 100644 index 000000000..5367ce7f4 Binary files /dev/null and b/public/static/images/services/design/audit-ui/audit-hero.webp differ diff --git a/public/static/images/services/design/audit-ui/optimisation-donnees.webp b/public/static/images/services/design/audit-ui/optimisation-donnees.webp new file mode 100644 index 000000000..4b9ce1a7e Binary files /dev/null and b/public/static/images/services/design/audit-ui/optimisation-donnees.webp differ diff --git a/public/static/images/services/design/audit-ui/service-complementaire.webp b/public/static/images/services/design/audit-ui/service-complementaire.webp new file mode 100644 index 000000000..0523e51df Binary files /dev/null and b/public/static/images/services/design/audit-ui/service-complementaire.webp differ diff --git a/public/static/images/services/design/charte-graphique/charte-graphique-hero.webp b/public/static/images/services/design/charte-graphique/charte-graphique-hero.webp new file mode 100644 index 000000000..47b7c7045 Binary files /dev/null and b/public/static/images/services/design/charte-graphique/charte-graphique-hero.webp differ diff --git a/public/static/images/services/design/charte-graphique/excellence-branding.webp b/public/static/images/services/design/charte-graphique/excellence-branding.webp new file mode 100644 index 000000000..9699243e3 Binary files /dev/null and b/public/static/images/services/design/charte-graphique/excellence-branding.webp differ diff --git a/public/static/images/services/design/charte-graphique/identite-distinctive.webp b/public/static/images/services/design/charte-graphique/identite-distinctive.webp new file mode 100644 index 000000000..7f1da469d Binary files /dev/null and b/public/static/images/services/design/charte-graphique/identite-distinctive.webp differ diff --git a/public/static/images/services/design/charte-graphique/service-complementaire.webp b/public/static/images/services/design/charte-graphique/service-complementaire.webp new file mode 100644 index 000000000..8b37bb190 Binary files /dev/null and b/public/static/images/services/design/charte-graphique/service-complementaire.webp differ diff --git a/public/static/images/services/design/hero-design.webp b/public/static/images/services/design/hero-design.webp new file mode 100644 index 000000000..8b60f1676 Binary files /dev/null and b/public/static/images/services/design/hero-design.webp differ diff --git a/public/static/images/services/design/maquettage-ui/design-ui-professionnel.webp b/public/static/images/services/design/maquettage-ui/design-ui-professionnel.webp new file mode 100644 index 000000000..29890d233 Binary files /dev/null and b/public/static/images/services/design/maquettage-ui/design-ui-professionnel.webp differ diff --git a/public/static/images/services/design/maquettage-ui/excellence-design-ui.webp b/public/static/images/services/design/maquettage-ui/excellence-design-ui.webp new file mode 100644 index 000000000..0438efbca Binary files /dev/null and b/public/static/images/services/design/maquettage-ui/excellence-design-ui.webp differ diff --git a/public/static/images/services/design/maquettage-ui/hero-ui.webp b/public/static/images/services/design/maquettage-ui/hero-ui.webp new file mode 100644 index 000000000..8ed01e519 Binary files /dev/null and b/public/static/images/services/design/maquettage-ui/hero-ui.webp differ diff --git a/public/static/images/services/design/moodboard/direction-artistique.webp b/public/static/images/services/design/moodboard/direction-artistique.webp new file mode 100644 index 000000000..92d3c6c12 Binary files /dev/null and b/public/static/images/services/design/moodboard/direction-artistique.webp differ diff --git a/public/static/images/services/design/moodboard/hero-moodboard.jpg b/public/static/images/services/design/moodboard/hero-moodboard.jpg new file mode 100644 index 000000000..72e96da8a Binary files /dev/null and b/public/static/images/services/design/moodboard/hero-moodboard.jpg differ diff --git a/public/static/images/services/design/moodboard/services-supplementaires.webp b/public/static/images/services/design/moodboard/services-supplementaires.webp new file mode 100644 index 000000000..828fc797d Binary files /dev/null and b/public/static/images/services/design/moodboard/services-supplementaires.webp differ diff --git a/public/static/images/services/design/moodboard/vision-claire.webp b/public/static/images/services/design/moodboard/vision-claire.webp new file mode 100644 index 000000000..cff2d4d1a Binary files /dev/null and b/public/static/images/services/design/moodboard/vision-claire.webp differ diff --git a/public/static/images/services/design/showcase-design.webp b/public/static/images/services/design/showcase-design.webp new file mode 100644 index 000000000..84da80a39 Binary files /dev/null and b/public/static/images/services/design/showcase-design.webp differ diff --git a/public/static/images/services/design/wireframes/design-structure.webp b/public/static/images/services/design/wireframes/design-structure.webp new file mode 100644 index 000000000..1b0965b10 Binary files /dev/null and b/public/static/images/services/design/wireframes/design-structure.webp differ diff --git a/public/static/images/services/design/wireframes/excellence-conception-ux.webp b/public/static/images/services/design/wireframes/excellence-conception-ux.webp new file mode 100644 index 000000000..b7a505c0c Binary files /dev/null and b/public/static/images/services/design/wireframes/excellence-conception-ux.webp differ diff --git a/public/static/images/services/design/wireframes/hero-wireframes.webp b/public/static/images/services/design/wireframes/hero-wireframes.webp new file mode 100644 index 000000000..bff71ee6b Binary files /dev/null and b/public/static/images/services/design/wireframes/hero-wireframes.webp differ diff --git a/public/static/images/services/frontend/desktop/frontend-app.webp b/public/static/images/services/frontend/desktop/frontend-app.webp new file mode 100644 index 000000000..2d2d04f7b Binary files /dev/null and b/public/static/images/services/frontend/desktop/frontend-app.webp differ diff --git a/public/static/images/services/frontend/desktop/frontend-complementaire.webp b/public/static/images/services/frontend/desktop/frontend-complementaire.webp new file mode 100644 index 000000000..7d0744b12 Binary files /dev/null and b/public/static/images/services/frontend/desktop/frontend-complementaire.webp differ diff --git a/public/static/images/services/frontend/desktop/frontend-developpement.webp b/public/static/images/services/frontend/desktop/frontend-developpement.webp new file mode 100644 index 000000000..88cb3bfb4 Binary files /dev/null and b/public/static/images/services/frontend/desktop/frontend-developpement.webp differ diff --git a/public/static/images/services/frontend/desktop/frontend-systeme.webp b/public/static/images/services/frontend/desktop/frontend-systeme.webp new file mode 100644 index 000000000..fc9ee308e Binary files /dev/null and b/public/static/images/services/frontend/desktop/frontend-systeme.webp differ diff --git a/public/static/images/services/frontend/frontend-avantages.webp b/public/static/images/services/frontend/frontend-avantages.webp new file mode 100644 index 000000000..e69e531a3 Binary files /dev/null and b/public/static/images/services/frontend/frontend-avantages.webp differ diff --git a/public/static/images/services/frontend/frontend-developpement.webp b/public/static/images/services/frontend/frontend-developpement.webp new file mode 100644 index 000000000..bce4cff3d Binary files /dev/null and b/public/static/images/services/frontend/frontend-developpement.webp differ diff --git a/public/static/images/services/frontend/frontend-expertise.webp b/public/static/images/services/frontend/frontend-expertise.webp new file mode 100644 index 000000000..2e782294d Binary files /dev/null and b/public/static/images/services/frontend/frontend-expertise.webp differ diff --git a/public/static/images/services/frontend/mobile/frontend-complementaire.webp b/public/static/images/services/frontend/mobile/frontend-complementaire.webp new file mode 100644 index 000000000..690b141eb Binary files /dev/null and b/public/static/images/services/frontend/mobile/frontend-complementaire.webp differ diff --git a/public/static/images/services/frontend/mobile/frontend-multiplatforme.webp b/public/static/images/services/frontend/mobile/frontend-multiplatforme.webp new file mode 100644 index 000000000..152d2cd17 Binary files /dev/null and b/public/static/images/services/frontend/mobile/frontend-multiplatforme.webp differ diff --git a/public/static/images/services/frontend/mobile/frontend-react.webp b/public/static/images/services/frontend/mobile/frontend-react.webp new file mode 100644 index 000000000..73bdcfcc7 Binary files /dev/null and b/public/static/images/services/frontend/mobile/frontend-react.webp differ diff --git a/public/static/images/services/frontend/mobile/frontend-ux.webp b/public/static/images/services/frontend/mobile/frontend-ux.webp new file mode 100644 index 000000000..203c9fd8e Binary files /dev/null and b/public/static/images/services/frontend/mobile/frontend-ux.webp differ diff --git a/public/static/images/services/frontend/pwa/frontend-mobile.webp b/public/static/images/services/frontend/pwa/frontend-mobile.webp new file mode 100644 index 000000000..577f9899d Binary files /dev/null and b/public/static/images/services/frontend/pwa/frontend-mobile.webp differ diff --git a/public/static/images/services/frontend/pwa/frontend-nowifi.webp b/public/static/images/services/frontend/pwa/frontend-nowifi.webp new file mode 100644 index 000000000..4e4fefc6f Binary files /dev/null and b/public/static/images/services/frontend/pwa/frontend-nowifi.webp differ diff --git a/public/static/images/services/frontend/pwa/frontend-pwa.webp b/public/static/images/services/frontend/pwa/frontend-pwa.webp new file mode 100644 index 000000000..1c464456b Binary files /dev/null and b/public/static/images/services/frontend/pwa/frontend-pwa.webp differ diff --git a/public/static/images/services/frontend/pwa/frontend-seo.webp b/public/static/images/services/frontend/pwa/frontend-seo.webp new file mode 100644 index 000000000..8d7a783da Binary files /dev/null and b/public/static/images/services/frontend/pwa/frontend-seo.webp differ diff --git a/public/static/images/services/frontend/web/frontend-design.webp b/public/static/images/services/frontend/web/frontend-design.webp new file mode 100644 index 000000000..1b64d9640 Binary files /dev/null and b/public/static/images/services/frontend/web/frontend-design.webp differ diff --git a/public/static/images/services/frontend/web/frontend-techniques.webp b/public/static/images/services/frontend/web/frontend-techniques.webp new file mode 100644 index 000000000..94937ebf5 Binary files /dev/null and b/public/static/images/services/frontend/web/frontend-techniques.webp differ diff --git a/public/static/images/services/frontend/web/frontend-technologie.webp b/public/static/images/services/frontend/web/frontend-technologie.webp new file mode 100644 index 000000000..3196d2cbb Binary files /dev/null and b/public/static/images/services/frontend/web/frontend-technologie.webp differ diff --git a/public/static/images/services/frontend/web/frontend-web.webp b/public/static/images/services/frontend/web/frontend-web.webp new file mode 100644 index 000000000..663eca629 Binary files /dev/null and b/public/static/images/services/frontend/web/frontend-web.webp differ diff --git a/public/static/images/services/integration/integration-ecommerce.webp b/public/static/images/services/integration/integration-ecommerce.webp new file mode 100644 index 000000000..a0d9cebda Binary files /dev/null and b/public/static/images/services/integration/integration-ecommerce.webp differ diff --git a/public/static/images/services/integration/integration-team.webp b/public/static/images/services/integration/integration-team.webp new file mode 100644 index 000000000..67ad8b9bc Binary files /dev/null and b/public/static/images/services/integration/integration-team.webp differ diff --git a/public/static/images/services/integration/prestashop-buy.webp b/public/static/images/services/integration/prestashop-buy.webp new file mode 100644 index 000000000..3f34cb669 Binary files /dev/null and b/public/static/images/services/integration/prestashop-buy.webp differ diff --git a/public/static/images/services/integration/prestashop-complementaire.webp b/public/static/images/services/integration/prestashop-complementaire.webp new file mode 100644 index 000000000..773d84e64 Binary files /dev/null and b/public/static/images/services/integration/prestashop-complementaire.webp differ diff --git a/public/static/images/services/integration/prestashop-control.webp b/public/static/images/services/integration/prestashop-control.webp new file mode 100644 index 000000000..11fb0aabb Binary files /dev/null and b/public/static/images/services/integration/prestashop-control.webp differ diff --git a/public/static/images/services/integration/prestashop-shop.webp b/public/static/images/services/integration/prestashop-shop.webp new file mode 100644 index 000000000..f06df0af4 Binary files /dev/null and b/public/static/images/services/integration/prestashop-shop.webp differ diff --git a/public/static/images/services/integration/shopify-buy.webp b/public/static/images/services/integration/shopify-buy.webp new file mode 100644 index 000000000..2a8ac464a Binary files /dev/null and b/public/static/images/services/integration/shopify-buy.webp differ diff --git a/public/static/images/services/integration/shopify-complementaire.webp b/public/static/images/services/integration/shopify-complementaire.webp new file mode 100644 index 000000000..bdff8700e Binary files /dev/null and b/public/static/images/services/integration/shopify-complementaire.webp differ diff --git a/public/static/images/services/integration/shopify-mobile.webp b/public/static/images/services/integration/shopify-mobile.webp new file mode 100644 index 000000000..bbc246f31 Binary files /dev/null and b/public/static/images/services/integration/shopify-mobile.webp differ diff --git a/public/static/images/services/integration/squarespace-complementaire.webp b/public/static/images/services/integration/squarespace-complementaire.webp new file mode 100644 index 000000000..58f4df8f7 Binary files /dev/null and b/public/static/images/services/integration/squarespace-complementaire.webp differ diff --git a/public/static/images/services/integration/squarespace-design.webp b/public/static/images/services/integration/squarespace-design.webp new file mode 100644 index 000000000..a060c692c Binary files /dev/null and b/public/static/images/services/integration/squarespace-design.webp differ diff --git a/public/static/images/services/integration/squarespace-marketing.webp b/public/static/images/services/integration/squarespace-marketing.webp new file mode 100644 index 000000000..561fc09a7 Binary files /dev/null and b/public/static/images/services/integration/squarespace-marketing.webp differ diff --git a/public/static/images/services/integration/squarespace.webp b/public/static/images/services/integration/squarespace.webp new file mode 100644 index 000000000..29c622915 Binary files /dev/null and b/public/static/images/services/integration/squarespace.webp differ diff --git a/public/static/images/services/integration/strapi-cms.webp b/public/static/images/services/integration/strapi-cms.webp new file mode 100644 index 000000000..6e2b7b1b3 Binary files /dev/null and b/public/static/images/services/integration/strapi-cms.webp differ diff --git a/public/static/images/services/integration/strapi-complementaire.webp b/public/static/images/services/integration/strapi-complementaire.webp new file mode 100644 index 000000000..82ef694c5 Binary files /dev/null and b/public/static/images/services/integration/strapi-complementaire.webp differ diff --git a/public/static/images/services/integration/strapi-security.webp b/public/static/images/services/integration/strapi-security.webp new file mode 100644 index 000000000..fb8a90de2 Binary files /dev/null and b/public/static/images/services/integration/strapi-security.webp differ diff --git a/public/static/images/services/integration/strapi.webp b/public/static/images/services/integration/strapi.webp new file mode 100644 index 000000000..cabf3fd76 Binary files /dev/null and b/public/static/images/services/integration/strapi.webp differ diff --git a/public/static/images/services/integration/webflow-complementaire.webp b/public/static/images/services/integration/webflow-complementaire.webp new file mode 100644 index 000000000..dcd3e0309 Binary files /dev/null and b/public/static/images/services/integration/webflow-complementaire.webp differ diff --git a/public/static/images/services/integration/webflow-nocode.webp b/public/static/images/services/integration/webflow-nocode.webp new file mode 100644 index 000000000..7775be624 Binary files /dev/null and b/public/static/images/services/integration/webflow-nocode.webp differ diff --git a/public/static/images/services/integration/webflow-responsive.webp b/public/static/images/services/integration/webflow-responsive.webp new file mode 100644 index 000000000..5e69a46c4 Binary files /dev/null and b/public/static/images/services/integration/webflow-responsive.webp differ diff --git a/public/static/images/services/integration/webflow.webp b/public/static/images/services/integration/webflow.webp new file mode 100644 index 000000000..eeaafed51 Binary files /dev/null and b/public/static/images/services/integration/webflow.webp differ diff --git a/public/static/images/services/integration/wordpress-complementaire.webp b/public/static/images/services/integration/wordpress-complementaire.webp new file mode 100644 index 000000000..7d5d4fc7e Binary files /dev/null and b/public/static/images/services/integration/wordpress-complementaire.webp differ diff --git a/public/static/images/services/integration/wordpress-seo.webp b/public/static/images/services/integration/wordpress-seo.webp new file mode 100644 index 000000000..bc052f0f6 Binary files /dev/null and b/public/static/images/services/integration/wordpress-seo.webp differ diff --git a/public/static/images/services/integration/wordpress-solution.webp b/public/static/images/services/integration/wordpress-solution.webp new file mode 100644 index 000000000..0da6c82a3 Binary files /dev/null and b/public/static/images/services/integration/wordpress-solution.webp differ diff --git a/public/static/images/services/integration/wordpress.webp b/public/static/images/services/integration/wordpress.webp new file mode 100644 index 000000000..62640f17b Binary files /dev/null and b/public/static/images/services/integration/wordpress.webp differ diff --git a/public/static/images/services/shopify-hero.jpg b/public/static/images/services/shopify-hero.jpg new file mode 100644 index 000000000..dafb62251 Binary files /dev/null and b/public/static/images/services/shopify-hero.jpg differ diff --git a/src/app/services/backend/api/page.tsx b/src/app/services/backend/api/page.tsx new file mode 100644 index 000000000..97cb006ad --- /dev/null +++ b/src/app/services/backend/api/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Rocket, + Code, + Shield, + Zap, + Database, + LineChart, + Cloud, + GitBranch, + FileJson, + Layers, + BarChart, +} from 'lucide-react'; + +export const metadata = { + title: "Développement d'APIs | onRuntime Studio", + description: "Créez des APIs robustes, sécurisées et performantes. Notre expertise en développement backend vous garantit des APIs fiables et évolutives pour vos applications.", +}; + +const APIServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des APIs modernes */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default APIServicePage; \ No newline at end of file diff --git a/src/app/services/backend/bots/page.tsx b/src/app/services/backend/bots/page.tsx new file mode 100644 index 000000000..8400c34c4 --- /dev/null +++ b/src/app/services/backend/bots/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Zap, + MessageSquare, + Settings, + Command, + Bell, + Users, + Shield, + LineChart, + Heart, + BarChart, + Clock +} from 'lucide-react'; + +export const metadata = { + title: "Développement de Bots Discord & Slack | onRuntime Studio", + description: "Créez des bots intelligents et des automatisations pour Discord, Slack et autres plateformes. Notre expertise vous garantit des bots performants et fiables.", +}; + +const BotsServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des bots modernes */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default BotsServicePage; \ No newline at end of file diff --git a/src/app/services/backend/cloud/page.tsx b/src/app/services/backend/cloud/page.tsx new file mode 100644 index 000000000..bde8f71be --- /dev/null +++ b/src/app/services/backend/cloud/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Cloud, + Shield, + Zap, + Scale, + LineChart, + Server, + Database, + Lock, + GitBranch, + Globe, + Timer, +} from 'lucide-react'; + +export const metadata = { + title: "Solutions Cloud | onRuntime Studio", + description: "Déployez et gérez vos applications dans le cloud avec expertise. Notre savoir-faire en cloud computing vous garantit une infrastructure flexible, sécurisée et performante.", +}; + +const CloudServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages du cloud */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default CloudServicePage; \ No newline at end of file diff --git a/src/app/services/backend/database/page.tsx b/src/app/services/backend/database/page.tsx new file mode 100644 index 000000000..c04fa2641 --- /dev/null +++ b/src/app/services/backend/database/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Database, + Shield, + Zap, + History, + Share2, + Search, + LineChart, + Cloud, + GitBranch, + BarChart, + Timer +} from 'lucide-react'; + +export const metadata = { + title: "Architecture et Optimisation de Bases de Données | onRuntime Studio", + description: "Concevez et optimisez vos bases de données pour des performances maximales. Notre expertise en bases de données vous garantit une architecture robuste et évolutive.", +}; + +const DatabaseServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des bases de données modernes */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default DatabaseServicePage; \ No newline at end of file diff --git a/src/app/services/backend/microservices/page.tsx b/src/app/services/backend/microservices/page.tsx new file mode 100644 index 000000000..d9196b72b --- /dev/null +++ b/src/app/services/backend/microservices/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Boxes, + GitBranch, + Zap, + Shield, + Cloud, + LineChart, + Scale, + CircuitBoard, + Gauge, + Timer, + Workflow +} from 'lucide-react'; + +export const metadata = { + title: "Architecture Microservices | onRuntime Studio", + description: "Développez des applications scalables et résilientes avec une architecture microservices. Notre expertise vous garantit une infrastructure moderne et performante.", +}; + +const MicroservicesServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des microservices */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default MicroservicesServicePage; \ No newline at end of file diff --git a/src/app/services/backend/page.tsx b/src/app/services/backend/page.tsx new file mode 100644 index 000000000..1a31b491c --- /dev/null +++ b/src/app/services/backend/page.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import Services from '@/constants/services'; +import ServiceOverviewPage from '@/components/marketing/services/service-overview'; +import { ServiceCategory } from '@/types/service'; +import type { Metadata } from "next"; +import { Database, Server, Shield, Scale } from 'lucide-react'; + +export const metadata: Metadata = { + title: "Développement Backend | onRuntime Studio", + description: "Création d'APIs et de systèmes backend robustes, sécurisés et évolutifs. Notre expertise garantit des solutions techniques performantes pour vos applications.", +}; + +const BackendServicePage = () => { + const backendService = Services.find(service => service.id === ServiceCategory.BACKEND); + + if (!backendService) { + return null; + } + + const benefits = [ + { + 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 + } + ]; + + const processList = [ + { + 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"] + } + ]; + + return ( + + ); +}; + +export default BackendServicePage; \ No newline at end of file diff --git a/src/app/services/design/audit/page.tsx b/src/app/services/design/audit/page.tsx new file mode 100644 index 000000000..0cdb7d5da --- /dev/null +++ b/src/app/services/design/audit/page.tsx @@ -0,0 +1,181 @@ +import React from 'react'; +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 { + Search, + LineChart, + Users, + Eye, + BarChart, + Target, + MousePointer, + Zap, + MessageSquare, +} from 'lucide-react'; + +export const metadata = { + title: "Audit UX/UI | onRuntime Studio", + description: "Optimisez vos interfaces avec un audit UX/UI professionnel. Notre expertise vous garantit une analyse approfondie et des recommandations concrètes pour améliorer l'expérience utilisateur.", +}; + +const AuditServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages de l'audit */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default AuditServicePage; \ No newline at end of file diff --git a/src/app/services/design/branding/page.tsx b/src/app/services/design/branding/page.tsx new file mode 100644 index 000000000..7a7612f34 --- /dev/null +++ b/src/app/services/design/branding/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Palette, + Heart, + Book, + PenTool, + Layout, + Target, + Users, + Globe, + FileImage, + Megaphone, + Share2, +} from 'lucide-react'; + +export const metadata = { + title: "Branding & Identité Visuelle | onRuntime Studio", + description: "Créez une identité de marque mémorable et cohérente. Notre expertise en branding vous garantit une identité visuelle qui reflète vos valeurs et capte votre audience.", +}; + +const BrandingServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages du branding */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default BrandingServicePage; \ No newline at end of file diff --git a/src/app/services/design/moodboard/page.tsx b/src/app/services/design/moodboard/page.tsx new file mode 100644 index 000000000..f1889ead6 --- /dev/null +++ b/src/app/services/design/moodboard/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Palette, + Image, + Lightbulb, + Target, + PenTool, + Compass, + Brush, + Share2, + Eye, + FileImage, + Layers +} from 'lucide-react'; + +export const metadata = { + title: "Création de Moodboards | onRuntime Studio", + description: "Définissez l'identité visuelle de votre projet avec des moodboards professionnels. Notre expertise en design vous garantit une direction artistique claire et cohérente.", +}; + +const MoodboardServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des moodboards */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default MoodboardServicePage; \ No newline at end of file diff --git a/src/app/services/design/page.tsx b/src/app/services/design/page.tsx new file mode 100644 index 000000000..9a6b47198 --- /dev/null +++ b/src/app/services/design/page.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import Services from '@/constants/services'; +import ServiceOverviewPage from '@/components/marketing/services/service-overview'; +import { ServiceCategory } from '@/types/service'; +import type { Metadata } from "next"; +import { Lightbulb, Target, Users, Zap } from 'lucide-react'; + +export const metadata: Metadata = { + title: "Design UI/UX | onRuntime Studio", + description: "Création d'interfaces modernes et d'expériences utilisateur optimales. Notre expertise en design vous garantit des interfaces élégantes et fonctionnelles.", +}; + +const DesignServicePage = () => { + const designService = Services.find(service => service.id === ServiceCategory.DESIGN); + + if (!designService) { + return null; + } + + const benefits = [ + { + 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 + } + ]; + + const processList = [ + { + 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"] + } + ]; + + return ( + + ); +}; + +export default DesignServicePage; \ No newline at end of file diff --git a/src/app/services/design/ui/page.tsx b/src/app/services/design/ui/page.tsx new file mode 100644 index 000000000..3fefc68bf --- /dev/null +++ b/src/app/services/design/ui/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Palette, + Layers, + Paintbrush, + Smartphone, + Zap, + Eye, + SlidersHorizontal, + MousePointer, + Component, + LayoutGrid, + Code +} from 'lucide-react'; + +export const metadata = { + title: "Design UI/Maquettes | onRuntime Studio", + description: "Créez des interfaces utilisateur modernes et attrayantes. Notre expertise en design UI vous garantit des maquettes professionnelles et une expérience utilisateur exceptionnelle.", +}; + +const UIDesignServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages du design UI */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default UIDesignServicePage; \ No newline at end of file diff --git a/src/app/services/design/wireframes/page.tsx b/src/app/services/design/wireframes/page.tsx new file mode 100644 index 000000000..0fdbbeb9c --- /dev/null +++ b/src/app/services/design/wireframes/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + LayoutTemplate, + Users, + Blocks, + MousePointer, + Smartphone, + Monitor, + Share2, + FileCheck, + LayoutGrid, + FileText, + ListChecks +} from 'lucide-react'; + +export const metadata = { + title: "Création de Wireframes | onRuntime Studio", + description: "Concevez l'architecture de vos interfaces avec des wireframes professionnels. Notre expertise UX vous garantit une structure claire et une navigation optimale.", +}; + +const WireframesServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des wireframes */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default WireframesServicePage; \ No newline at end of file diff --git a/src/app/services/frontend/desktop/page.tsx b/src/app/services/frontend/desktop/page.tsx new file mode 100644 index 000000000..1730a24e8 --- /dev/null +++ b/src/app/services/frontend/desktop/page.tsx @@ -0,0 +1,184 @@ +import React from 'react'; +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 { + Rocket, + Monitor, + Laptop, + Apple, + Database, + Upload, + Download, + Cpu, + Code, + LineChart, + Cloud +} from 'lucide-react'; + +export const metadata = { + title: "Développement Applications Desktop | onRuntime Studio", + description: "Créez des applications de bureau performantes et multiplateformes avec Electron. Notre expertise en développement desktop vous garantit des applications robustes et intuitives.", +}; + +const DesktopServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des applications desktop */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default DesktopServicePage; \ No newline at end of file diff --git a/src/app/services/frontend/mobile/page.tsx b/src/app/services/frontend/mobile/page.tsx new file mode 100644 index 000000000..c864e3aed --- /dev/null +++ b/src/app/services/frontend/mobile/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Rocket, + Smartphone, + Tablet, + AppWindow, + Layout, + Share2, + MessageSquare, + PenTool, + Gauge, + Code, + Store +} from 'lucide-react'; + +export const metadata = { + title: "Développement Mobile Frontend | onRuntime Studio", + description: "Créez des applications mobiles performantes avec React Native. Notre expertise en développement mobile vous garantit des applications natives de qualité pour iOS et Android.", +}; + +const MobileFrontendServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages du développement mobile */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default MobileFrontendServicePage; \ No newline at end of file diff --git a/src/app/services/frontend/page.tsx b/src/app/services/frontend/page.tsx new file mode 100644 index 000000000..1229e3355 --- /dev/null +++ b/src/app/services/frontend/page.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import Services from '@/constants/services'; +import ServiceOverviewPage from '@/components/marketing/services/service-overview'; +import { ServiceCategory } from '@/types/service'; +import type { Metadata } from "next"; +import { Cpu, Gauge, GitBranch, Shield } from 'lucide-react'; + +export const metadata: Metadata = { + title: "Développement Frontend | onRuntime Studio", + description: "Création d'applications web modernes, performantes et évolutives. Notre expertise en développement frontend garantit des solutions techniques robustes et innovantes.", +}; + +const FrontendServicePage = () => { + const frontendService = Services.find(service => service.id === ServiceCategory.FRONTEND); + + if (!frontendService) { + return null; + } + + const benefits = [ + { + title: "Architecture évolutive", + description: "Applications construites sur des architectures modernes et scalables, prêtes pour l'évolution de votre projet.", + icon: Cpu + }, + { + 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 + } + ]; + + const processList = [ + { + 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"] + } + ]; + + return ( + + ); +}; + +export default FrontendServicePage; \ No newline at end of file diff --git a/src/app/services/frontend/pwa/page.tsx b/src/app/services/frontend/pwa/page.tsx new file mode 100644 index 000000000..66f07deed --- /dev/null +++ b/src/app/services/frontend/pwa/page.tsx @@ -0,0 +1,184 @@ +import React from 'react'; +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 { + Rocket, + Wifi, + Smartphone, + Cloud, + Zap, + Bell, + Download, + ArrowDownToLine, + Globe, + LineChart, + Shield +} from 'lucide-react'; + +export const metadata = { + title: "Développement Progressive Web App (PWA) | onRuntime Studio", + description: "Créez des applications web progressives performantes qui offrent une expérience proche du natif. Notre expertise en PWA vous garantit des applications accessibles et engageantes.", +}; + +const PWAServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages des PWA */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default PWAServicePage; \ No newline at end of file diff --git a/src/app/services/frontend/web/page.tsx b/src/app/services/frontend/web/page.tsx new file mode 100644 index 000000000..b1e259782 --- /dev/null +++ b/src/app/services/frontend/web/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Rocket, + Code, + Monitor, + Smartphone, + Zap, + Layout, + Share2, + PenTool, + Search, + Globe, + Paintbrush +} from 'lucide-react'; + +export const metadata = { + title: "Développement Web Frontend | onRuntime Studio", + description: "Créez des applications web modernes et performantes. Notre expertise en développement frontend vous garantit une expérience utilisateur exceptionnelle et des performances optimales.", +}; + +const WebFrontendServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages du développement frontend moderne */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default WebFrontendServicePage; \ No newline at end of file diff --git a/src/app/services/integration/page.tsx b/src/app/services/integration/page.tsx new file mode 100644 index 000000000..1be9b9a10 --- /dev/null +++ b/src/app/services/integration/page.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import Services from '@/constants/services'; +import ServiceOverviewPage from '@/components/marketing/services/service-overview'; +import { ServiceCategory } from '@/types/service'; +import type { Metadata } from "next"; +import { Code, Zap, Layout, Sparkles } from 'lucide-react'; + +export const metadata: Metadata = { + title: "Intégration | onRuntime Studio", + description: "Transformation de vos maquettes en sites web performants et responsive. Notre expertise en intégration garantit une expérience utilisateur optimale sur tous les appareils.", +}; + +const IntegrationServicePage = () => { + const integrationService = Services.find(service => service.id === ServiceCategory.INTEGRATION); + + if (!integrationService) { + return null; + } + + const benefits = [ + { + 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: Layout + }, + { + title: "Animations fluides", + description: "Intégration d'animations soignées pour enrichir l'expérience utilisateur tout en maintenant les performances.", + icon: Sparkles + } + ]; + + const processList = [ + { + 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"] + } + ]; + + return ( + + ); +}; + +export default IntegrationServicePage; \ No newline at end of file diff --git a/src/app/services/integration/prestashop/page.tsx b/src/app/services/integration/prestashop/page.tsx new file mode 100644 index 000000000..6fe6370ba --- /dev/null +++ b/src/app/services/integration/prestashop/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Rocket, + Palette, + Shield, + Globe, + LayoutDashboard, + ShoppingBag, + Code, + Share2, + MessageSquare, + Truck, + BarChart +} from 'lucide-react'; + +export const metadata = { + title: "Développement PrestaShop | onRuntime Studio", + description: "Créez votre boutique en ligne performante avec PrestaShop. Notre expertise vous garantit une solution e-commerce robuste et personnalisée pour développer votre activité.", +}; + +const PrestaShopServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages PrestaShop */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default PrestaShopServicePage; \ No newline at end of file diff --git a/src/app/services/integration/shopify/page.tsx b/src/app/services/integration/shopify/page.tsx new file mode 100644 index 000000000..577e8c318 --- /dev/null +++ b/src/app/services/integration/shopify/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Rocket, + Palette, + Settings, + Shield, + Globe, + CreditCard, + BarChart, + Truck, + Search, + Share2, + MessageSquare +} from 'lucide-react'; + +export const metadata = { + title: "Développement Shopify | onRuntime Studio", + description: "Créez votre boutique en ligne performante avec notre expertise Shopify. De la personnalisation à l'optimisation, nous vous accompagnons dans votre succès e-commerce.", +}; + +const ShopifyServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages Shopify */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default ShopifyServicePage; \ No newline at end of file diff --git a/src/app/services/integration/squarespace/page.tsx b/src/app/services/integration/squarespace/page.tsx new file mode 100644 index 000000000..23ceaab90 --- /dev/null +++ b/src/app/services/integration/squarespace/page.tsx @@ -0,0 +1,182 @@ +import React from 'react'; +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 { + Rocket, + Palette, + LayoutDashboard, + Image as ImageIcon, + Code, + Share2, + MessageSquare, + Zap, + ShoppingBag, + Shapes +} from 'lucide-react'; + +export const metadata = { + title: "Développement Squarespace | onRuntime Studio", + description: "Créez un site web élégant et fonctionnel avec Squarespace. Notre expertise vous permet de tirer le meilleur parti de cette plateforme intuitive et design.", +}; + +const SquarespaceServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages Squarespace */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default SquarespaceServicePage; \ No newline at end of file diff --git a/src/app/services/integration/strapi/page.tsx b/src/app/services/integration/strapi/page.tsx new file mode 100644 index 000000000..164a39351 --- /dev/null +++ b/src/app/services/integration/strapi/page.tsx @@ -0,0 +1,183 @@ +import React from 'react'; +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 { + Rocket, + Code, + Shield, + LayoutDashboard, + Database, + Share2, + MessageSquare, + Users, + Workflow, + Box, + Network +} from 'lucide-react'; + +export const metadata = { + title: "Développement Strapi | onRuntime Studio", + description: "Créez des applications performantes avec Strapi, le CMS headless leader. Notre expertise vous garantit une solution évolutive et personnalisée pour gérer votre contenu.", +}; + +const StrapiServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages Strapi */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default StrapiServicePage; \ No newline at end of file diff --git a/src/app/services/integration/webflow/page.tsx b/src/app/services/integration/webflow/page.tsx new file mode 100644 index 000000000..3e1023717 --- /dev/null +++ b/src/app/services/integration/webflow/page.tsx @@ -0,0 +1,184 @@ +import React from 'react'; +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 { + Rocket, + Palette, + Settings, + LayoutDashboard, + Search, + Code, + Share2, + MessageSquare, + Zap, + MousePointer, + Laptop +} from 'lucide-react'; + +export const metadata = { + title: "Développement Webflow | onRuntime Studio", + description: "Créez un site web moderne et dynamique avec Webflow. De la conception visuelle à l'interaction utilisateur, nous donnons vie à votre vision avec une approche no-code professionnelle.", +}; + +const WebflowServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages Webflow */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default WebflowServicePage; \ No newline at end of file diff --git a/src/app/services/integration/wordpress/page.tsx b/src/app/services/integration/wordpress/page.tsx new file mode 100644 index 000000000..3941d4bc3 --- /dev/null +++ b/src/app/services/integration/wordpress/page.tsx @@ -0,0 +1,184 @@ +import React from 'react'; +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 { + Rocket, + Palette, + Settings, + Shield, + LayoutDashboard, + Search, + Blocks, + Code, + Share2, + MessageSquare, + Zap +} from 'lucide-react'; + +export const metadata = { + title: "Développement WordPress | onRuntime Studio", + description: "Créez un site web professionnel avec WordPress. De la conception sur mesure à l'optimisation des performances, nous vous accompagnons dans la réalisation de votre projet web.", +}; + +const WordPressServicePage = () => { + return ( + + {/* Caractéristiques principales */} + + + {/* Avantages WordPress */} + + + {/* Témoignages */} + + + {/* FAQ */} + + + {/* Services complémentaires */} + + + ); +}; + +export default WordPressServicePage; \ No newline at end of file diff --git a/src/app/services/page.tsx b/src/app/services/page.tsx new file mode 100644 index 000000000..bd5f86590 --- /dev/null +++ b/src/app/services/page.tsx @@ -0,0 +1,9 @@ +import ServicesPage from "@/screens/marketing/services"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Nos Services | onRuntime Studio", + description: "Découvrez nos services de design UI/UX, développement web et mobile, et solutions sur mesure pour vos projets digitaux.", +}; + +export default ServicesPage; diff --git a/src/components/layout/footer/footer.tsx b/src/components/layout/footer/footer.tsx index c6ecf330c..2c90a2f94 100644 --- a/src/components/layout/footer/footer.tsx +++ b/src/components/layout/footer/footer.tsx @@ -4,8 +4,8 @@ import Link from "next/link"; import React from "react"; const navigation = { - ["Navigation"]: [ - { name: "Nos services", href: Routes.unknown }, + Navigation: [ + { name: "Nos services", href: Routes.services }, { name: "Nos projets", href: Routes.unknown }, { name: "Le Studio", href: Routes.unknown }, { name: "Carrières", href: Routes.unknown }, diff --git a/src/components/marketing/navbar/navigation/services/index.tsx b/src/components/marketing/navbar/navigation/services/index.tsx index 928c64add..fd3646192 100644 --- a/src/components/marketing/navbar/navigation/services/index.tsx +++ b/src/components/marketing/navbar/navigation/services/index.tsx @@ -4,74 +4,104 @@ import { NavigationMenuLink, NavigationMenuTrigger, } from "@/components/ui/navigation-menu"; +import Services from "@/constants/services"; import Routes from "@/constants/routes"; import { cn } from "@/lib/utils"; -import { OnRuntimeLogo } from "@/logos/components"; -import Link from "next/link"; import React from "react"; +import { ArrowRight, LucideIcon } from "lucide-react"; +import { OnRuntimeLogo } from "@/logos/components"; const NavigationServices: React.FC = () => ( Nos services - + ); -const ListItem = React.forwardRef< - React.ElementRef<"a">, - React.ComponentPropsWithoutRef<"a"> ->(({ className, title, children, ...props }, ref) => { +interface ListItemProps { + title: string; + icon: LucideIcon; + href: string; + className?: string; + children?: React.ReactNode; +} + +const ListItem = ({ className, title, children, icon: Icon, href }: ListItemProps) => { return (
  • - -
    {title}
    -

    - {children} -

    +
    +
    + +
    + {title} +
    + + {children}
  • ); -}); -ListItem.displayName = "ListItem"; +}; -export default NavigationServices; +export default NavigationServices; \ No newline at end of file diff --git a/src/components/marketing/services/faq-section.tsx b/src/components/marketing/services/faq-section.tsx new file mode 100644 index 000000000..e3308dacb --- /dev/null +++ b/src/components/marketing/services/faq-section.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { cn } from "@/lib/utils"; + +interface FAQItem { + question: string; + answer: string; +} + +interface FAQSectionProps { + title: string; + description: string; + items: FAQItem[]; + className?: string; +} + +const FAQSection: React.FC = ({ + title, + description, + items, + className +}) => { + return ( +
    +
    +

    {title}

    +

    {description}

    +
    + +
    + + {items.map((item, index) => ( + + + {item.question} + + + {item.answer} + + + ))} + +
    +
    + ); +}; + +export default FAQSection; diff --git a/src/components/marketing/services/feature-section.tsx b/src/components/marketing/services/feature-section.tsx new file mode 100644 index 000000000..a8e7b6bab --- /dev/null +++ b/src/components/marketing/services/feature-section.tsx @@ -0,0 +1,68 @@ +import React from 'react'; +import { cn } from "@/lib/utils"; +import Image from 'next/image'; +import { LucideIcon } from 'lucide-react'; + +interface FeatureSectionProps { + title: string; + description: string; + features: { + title: string; + description: string; + icon?: LucideIcon; + }[]; + image?: string; + reversed?: boolean; + className?: string; +} + +const FeatureSection: React.FC = ({ + title, + description, + features, + image, + reversed = false, + className +}) => { + return ( +
    + {/* Contenu */} +
    +
    +

    {title}

    +

    {description}

    +
    + +
    + {features.map((feature, index) => ( +
    + {feature.icon && ( +
    + +
    + )} +
    +

    {feature.title}

    +

    {feature.description}

    +
    +
    + ))} +
    +
    + + {/* Image */} + {image && ( +
    + {title} +
    + )} +
    + ); +}; + +export default FeatureSection; \ No newline at end of file diff --git a/src/components/marketing/services/process-timeline.tsx b/src/components/marketing/services/process-timeline.tsx new file mode 100644 index 000000000..0c623ab44 --- /dev/null +++ b/src/components/marketing/services/process-timeline.tsx @@ -0,0 +1,131 @@ +"use client"; + +import React, { useEffect, useRef, useState } from 'react'; +import { Badge } from "@/components/ui/badge"; +import { cn } from "@/lib/utils"; + +interface ProcessStep { + title: string; + description: string; + services?: string[]; +} + +interface ProcessTimelineProps { + steps: ProcessStep[]; +} + +const ProcessTimeline: React.FC = ({ steps }) => { + const [path, setPath] = useState(""); + const timelineRef = useRef(null); + const pointRefs = useRef>([]); + + useEffect(() => { + const calculatePath = () => { + if (!timelineRef.current) return; + + const validPointRefs = pointRefs.current.filter((ref): ref is HTMLDivElement => ref !== null); + if (validPointRefs.length === 0) return; + + const points = validPointRefs.map(ref => { + const rect = ref.getBoundingClientRect(); + const timelineRect = timelineRef.current!.getBoundingClientRect(); + return { + x: rect.left - timelineRect.left + rect.width / 2, + y: rect.top - timelineRect.top + rect.height / 2 + }; + }); + + let svgPath = `M ${points[0].x} ${points[0].y}`; + + for (let i = 0; i < points.length - 1; i++) { + const current = points[i]; + const next = points[i + 1]; + const midY = (current.y + next.y) / 2; + + svgPath += ` C ${current.x} ${midY}, ${next.x} ${midY}, ${next.x} ${next.y}`; + } + + setPath(svgPath); + }; + + calculatePath(); + window.addEventListener('resize', calculatePath); + return () => window.removeEventListener('resize', calculatePath); + }, []); + + return ( +
    + + + + + + + + + + + +
    + {steps.map((step, i) => ( +
    +
    { + pointRefs.current[i] = el; + }} + className={cn( + "relative flex-none w-8 h-8 mt-2", + i % 2 === 0 ? "ml-0" : "-ml-4", + "md:ml-0" + )} + > +
    +
    +
    + +
    +
    +

    + {step.title} +

    + {step.services && ( +
    + {step.services.map((service, j) => ( + {service} + ))} +
    + )} +
    +

    + {step.description} +

    +
    +
    + ))} +
    +
    + ); +}; + +export default ProcessTimeline; \ No newline at end of file diff --git a/src/components/marketing/services/sections/index.tsx b/src/components/marketing/services/sections/index.tsx new file mode 100644 index 000000000..50507a927 --- /dev/null +++ b/src/components/marketing/services/sections/index.tsx @@ -0,0 +1,242 @@ +import React from "react"; +import { Button } from "@/components/ui/button"; +import { VelocityScroll } from "@/components/ui/scroll-based-velocity"; +import Link from "next/link"; +import { ArrowRight, GitPullRequestArrow, Timer, Users } from "lucide-react"; +import Image from "next/image"; + +export const ValuePropositionSection = () => ( +
    +
    +
    + +
    +

    Approche flexible

    +

    + Notre méthodologie s'adapte à vos besoins spécifiques, garantissant + une collaboration fluide et efficace. +

    +
    + +
    +
    + +
    +

    + Time-to-Market optimisé +

    +

    + Des solutions rapides et efficaces pour lancer votre projet dans les + meilleurs délais. +

    +
    + +
    +
    + +
    +

    Équipe dédiée

    +

    + Des experts passionnés qui s'investissent pleinement dans la + réussite de votre projet. +

    +
    +
    +); + +const technologies = [ + // Core Web Technologies + "React", + "Next.js", + "Nuxt", + "TypeScript", + "Vue.js", + "TailwindCSS", + "Sass", + + // Backend + "Node.js", + "Python", + "Django", + "PHP", + "Laravel", + "NestJS", + "Express", + "Flask", + + // CMS & E-commerce + "WordPress", + "Shopify", + "Webflow", + "SquareSpace", + "PrestaShop", + "Strapi", + "WooCommerce", + + // Infrastructure & Data + "AWS", + "Google Cloud", + "Azure", + "Docker", + "Kubernetes", + "GraphQL", + "MongoDB", + "PostgreSQL", + "Redis", + "MySQL", + "Firebase", + "Supabase", + "Prisma", + "Vercel", + "Netlify", +]; + +const TechnologyList = () => ( + <> + {technologies.map((tech, index) => ( + + {tech} + · + + ))} + +); + +export const TechnologiesSection = () => ( +
    +
    + {/* Gradient overlay left */} +
    + + {/* Gradient overlay right */} +
    + +
    + {" "} + {/* Added gap-12 for spacing between rows */} + + + + + + + + + + +
    +
    +
    +); + +export const ConsultingSection = () => ( +
    +
    +

    + Besoin de conseils ? +

    +

    + Nous proposons également des services de consulting pour vous aider à + faire les bons choix technologiques et stratégiques. +

    + + + +
    + +
    +
    +); + +const techPartners = [ + { + name: "Google Cloud Platform", + logo: "/static/images/partners/google-cloud.svg", + description: "Infrastructure cloud robuste et évolutive" + }, + { + name: "Amazon Web Services", + logo: "/static/images/partners/aws.svg", + description: "Solutions cloud complètes et flexibles" + }, + { + name: "Shopify", + logo: "/static/images/partners/shopify.svg", + description: "Solutions e-commerce personnalisées" + } +] + +export const ExpertiseSection = () => ( +
    +
    +

    + Une expertise reconnue +

    +

    + Avec plus de 10 ans d'expérience cumulée, notre équipe maîtrise les + dernières technologies et les meilleures pratiques du développement web + et mobile. +

    +
    +
    +
    10+
    +
    + Années d'expérience +
    +
    +
    +
    7+
    +
    Projets réalisés
    +
    +
    +
    100%
    +
    Satisfaction client
    +
    +
    +
    24/7
    +
    Support disponible
    +
    +
    +
    + +
    +

    + Nos technologies partenaires +

    + +
    + {techPartners.map((partner) => ( +
    +
    + {partner.name} +
    +
    +

    {partner.name} Partner

    +

    {partner.description}

    +
    +
    + ))} +
    +
    +
    +); diff --git a/src/components/marketing/services/service-layout.tsx b/src/components/marketing/services/service-layout.tsx new file mode 100644 index 000000000..6fa3068a1 --- /dev/null +++ b/src/components/marketing/services/service-layout.tsx @@ -0,0 +1,132 @@ +import React from 'react'; +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 Routes from "@/constants/routes"; +import Image from 'next/image'; + +interface ServiceLayoutProps { + // SEO et métadonnées + title: string; + description: string; + + // Contenu de l'en-tête + heroTitle: string; + heroDescription: string; + heroImage?: string; + + // Sections de contenu + children: React.ReactNode; + + // Autres props + className?: string; +} + +const ServiceLayout: React.FC = ({ + title, + description, + heroTitle, + heroDescription, + heroImage, + children, + className +}) => { + // TODO: To replace by next-seo + const structuredData = { + "@context": "https://schema.org", + "@type": "Service", + "name": title, + "description": description, + "provider": { + "@type": "Organization", + "name": "onRuntime Studio", + "image": "https://onruntime.com/logo.png", + "address": { + "@type": "PostalAddress", + "addressLocality": "Rouen & Paris", + "addressCountry": "FR" + } + } + }; + + return ( + <> + {/* Métadonnées SEO */} +