[ Case Study · Astro · SEO ]

2RCLOUD

A Senior Salesforce Tech Lead's digital consultancy — built on Astro for near-perfect performance, engineered to rank for enterprise delivery queries globally and convert CTOs into hires at €250 / day.

Client
2RCLOUD (Rachid Touri)
Engagement
Brand + web build
Disciplines
Astro · SEO · Personal Brand
Year
2025
Live
2rcloud.com
2RCLOUD Salesforce consultancy website — light mode2RCLOUD Salesforce consultancy website — dark mode
01 · The brief

A senior consultant who needed a site that works harder than a LinkedIn profile.

Rachid Touri delivers Service Cloud, Apex, LWC, and Copado release governance to European enterprises — Stellantis, Volkswagen Group, CEVA, Renault, Alain Afflelou. The brief was blunt: build a standalone brand site that ranks for enterprise Salesforce delivery queries, shows the rate (€250/day) before anyone has to ask, and turns a cold visit into a hire request without a single back-and-forth email.

02 · Astro build system

Zero-JS output. Crawlable on the first byte.

We chose Astro because its output is plain HTML — no client-side framework, no hydration budget, nothing between the server and the browser. What that means in practice:

  • Island architecture — every .astro component compiles to static markup. No JavaScript reaches the browser unless explicitly opted in with a client:* directive. The entire 2RCLOUD site ships with zero runtime JS.
  • Build-time rendering — structured data, hreflang tags, canonical URLs, and Open Graph meta are all injected at astro build, not at request time. Google's crawler sees the finished HTML on the very first fetch — no waiting for hydration.
  • Asset pipeline — Astro's built-in Vite pipeline minifies CSS, fingerprints assets, and inlines critical styles. The result: a single <link rel="stylesheet">, no render-blocking scripts, no layout shift from late-loading fonts.
  • Static output to any host — dist/ is a folder of HTML files. No Node server, no serverless functions, no cold starts. CDN-edge delivery out of the box.
03 · SEO engineering

Structured data and bilingual routing that AI search reads first.

SEO for a consultant isn't about blog volume. It's about being the right answer when a CTO searches "Salesforce Tech Lead remote France." We built the technical infrastructure for that:

  • Person schema — @type: Person JSON-LD block with jobTitle, knowsAbout (Service Cloud, Apex, LWC, Copado), areaServed (France, Europe, Gulf, North America), and email. Google's AI Overviews pull this directly into knowledge panels.
  • FAQPage schema — the FAQ section maps to an @type: FAQPage block with each Q&A as an acceptedAnswer. Bing Copilot and Google's featured snippets source from this, not the body copy.
  • hreflang EN/FR — self-referential and cross-referential hreflang annotations on every page pair. Each locale has its own canonical. The XML sitemap uses <xhtml:link> alternates so Googlebot indexes both language trees independently — doubling the keyword surface area in European search.
  • Semantic heading hierarchy — a single <h1> per page, with h2–h4 forming a strict topic tree. No heading used for styling. Screen readers and crawlers see the same outline.
  • XML sitemap + robots.txt — auto-generated at build, submitted to Google Search Console and Bing Webmaster Tools on launch.
By the numbers
~100

Lighthouse score across all four audits

0 JS

Runtime JavaScript shipped to the browser

EN/FR

Bilingual with hreflang + sitemap alternates

2

JSON-LD schema types: Person + FAQPage

04 · Performance engineering

Sub-second load. Near-zero CLS. No excuses.

A site for a technical consultant has to be technically fast — because the first signal of quality a CTO reads is the load time. We engineered every layer:

  • Images: AVIF + WebP with explicit width and height attributes on every <img>. The browser pre-allocates the layout slot before the image downloads — Cumulative Layout Shift stays near zero.
  • LCP image preloaded — the hero profile photo has a <link rel="preload" as="image"> in <head>. It starts downloading before the stylesheet finishes parsing.
  • No render-blocking resources — zero @import in CSS, zero synchronous <script> in <body>. The First Contentful Paint fires the moment the HTML parses.
  • CSS custom properties for theming — the dark/light switch is a single data-theme attribute on <html>. No JavaScript class toggling on individual elements, no re-render, no repaint cascade. One attribute change, every token updates via the cascade.
  • Theme persistence — localStorage read in an inline <script> at the top of <head>, before any stylesheet parses. Zero flash of wrong theme, even on first load.
05 · Design system

Two modes. One token set. No duplication.

The visual identity runs on a CSS custom property token system — colours, spacing, type scales, and border radii all defined once as :root variables and overridden per theme in a [data-theme="light"] block. No Sass, no Tailwind, no framework — just the cascade doing what it was built for.

  • Green accent #00e87b — the sole brand colour. Applied at 10% opacity for subtle fills, 100% for primary CTAs. Legible on both dark (#0d1117) and light (#f9fafb) backgrounds at WCAG AA contrast.
  • Typography — system font stack on body copy (zero font-download latency), a single display typeface loaded via font-display: swap with a matching metric-compatible fallback to prevent layout shift.
  • Mobile-first responsive layout — sidebar collapses to a top card on small viewports. No JavaScript breakpoint listeners — pure CSS @container and @media queries.
  • Scroll-driven animations — subtle fade-in on section entry via IntersectionObserver. Falls back gracefully when prefers-reduced-motion: reduce is set — the content is visible immediately, no animation.
06 · Everything shipped

One build. Every layer engineered.

No WordPress, no page-builder, no template. Every decision made deliberately.

Build04
  • Astro static output
  • Vite asset pipeline
  • Zero runtime JS
  • CDN-ready dist/
SEO07
  • Person JSON-LD
  • FAQPage JSON-LD
  • hreflang EN/FR
  • Canonical per locale
  • XML sitemap w/ alternates
  • robots.txt
  • Semantic HTML outline
Performance05
  • AVIF / WebP images
  • LCP preload hint
  • Near-zero CLS
  • No render-blocking
  • Lighthouse ~100
Design system04
  • CSS custom properties
  • Dark / light theme
  • Zero-flash persistence
  • Metric-matched fallback font
Conversion04
  • Rate above the fold
  • Named enterprise proof
  • WhatsApp direct hire
  • Certification display

24 engineered capabilities. All owned, all in production.

07 · Why this beats the alternatives

A Salesforce Tech Lead who loads in under a second wins before the interview starts.

The technical quality of the site is the first proof of the consultant's technical standards. Here's what we beat:

vs. WordPress + Elementor
A typical WordPress portfolio ships ~400 kB of JS on page load, blocks FCP behind plugin stylesheets, and scores 55–65 on Lighthouse Performance. 2RCLOUD ships zero runtime JS and scores near 100 — that delta is visible to every CTO who opens DevTools.
vs. LinkedIn-only presence
LinkedIn has no structured data support, no schema markup, and no independently indexable pages. 2RCLOUD's Person + FAQPage JSON-LD means Rachid appears in Google AI Overviews for "Salesforce Tech Lead remote" — a channel LinkedIn cannot replicate.
vs. Notion / Framer portfolio
No-code tools share domains, have zero hreflang support, and can't emit custom JSON-LD. 2RCLOUD owns its domain, its structured data, its bilingual routing, and its Lighthouse score. No vendor lock-in, no subdomain, no shared-server performance ceiling.

2RCLOUD — FAQ

2RCLOUD is the standalone brand site of Rachid Touri, a Senior Salesforce Tech Lead delivering Service Cloud, Apex, LWC and Copado release governance to European enterprises. RAIN built it to rank for enterprise Salesforce delivery queries and turn visits into hire requests.

Astro's output is plain HTML with no client-side framework or hydration. Every component compiles to static markup, so the site ships with zero runtime JavaScript and crawlers see the finished HTML on the first fetch.

Two JSON-LD types: a Person block with jobTitle, knowsAbout, areaServed and email, and a FAQPage block mapping each question to an acceptedAnswer.

Every page pair carries self-referential and cross-referential hreflang annotations, each locale has its own canonical, and the XML sitemap lists xhtml:link alternates so both language trees are indexed independently.

Want a product like this?

Custom projects from $10,000, monthly plans from $7,500. Kickoff within 3–5 business days.