Skip to content
ALI HAITHAM·TECH·responds in <1h
  • Homestart here
  • Workcase studies, projects
  • Serviceswhat I will build for you
  • Writingessays, series
  • Traincourses, labs, cohorts
  • Aboutthe engineer behind this site
Sign inStart a project
ALI HAITHAM · TECH
  • Home↗
  • Work↗
  • Services↗
  • Writing↗
  • Train↗
  • About↗
Sign inStart a project
Online
ALI HAITHAM·TECH

Engineering studio. Damascus, GMT+3.

aliyosef.online

Studio

  • Work
  • Writing
  • Training
  • About
  • Contact me

Portal

  • Sign in
  • Open a ticket
  • Track project
  • My account

Resources

  • Docs
  • Status
  • Changelog
  • Brand kit
  • Privacy
  • Terms

Newsletter

Field notes and tech news. Weekly. No fluff.

Free. Unsubscribe anytime.

Find me elsewhere
© 2026 Ali Haitham Yosef. All rights reserved.Hand-built in React 19. No frameworks of frameworks.Last deployed · 2026-05-08All systems operational
Case 032024Full-stack Engineer

Concetto Labs

Corporate portal rebuild for an India-based engineering studio. Sanity-driven content, Next.js front end on Vercel, faster lead-form turnaround, cleaner case-study layout.

RoleFull-stack Engineer
Year2024
StackNext.js, MongoDB, Sanity.io, Vercel
Liveconcettolabs.com↗
Overview

About the project.

A full corporate portal rebuild for an India-based engineering studio that had outgrown its old WordPress stack. The new site runs on Next.js with Sanity as the content layer, deployed on Vercel for instant previews. I rebuilt the case-study layout, the services pages, and the lead-form pipeline so the sales team gets a clean handoff without copying fields into a spreadsheet. The goal was to make their portfolio read like the work itself: precise, technical, no decoration.

Outcome

What changed.

4 weeks

from kickoff to launch

0 regressions

visual regressions in production

Challenge

What we walked into.

An India-based engineering studio had outgrown its old WordPress portal — slow editor experience, case studies that copy-pasted from spreadsheets, lead form that dropped into an inbox no one read.

Approach

What we did.

Full rebuild on Next.js 14 with Sanity as the content layer, deployed on Vercel with instant previews. Rewrote case-study layout, services pages, and a lead-form pipeline that pushes into the sales tooling without manual transcription.

Outcome

What it became.

Faster editorial workflow, cleaner case studies, sales team gets a structured handoff in their existing CRM — no more spreadsheet round-trip.

IndustryEngineering services · B2B
TypeCorporate portal rebuild with headless CMS
Timeline4 months · v1
TeamSolo · full-stack · alongside the client's in-house copy team
Ownership

My role on this project.

Solo · 100% engineering ownership. The client supplied the copy and the brand direction; I owned the Sanity schema, the Next.js front end, the lead-pipeline wiring, and the Vercel deployment. The Sanity schema was designed so their non-technical writers can publish case studies in 30 minutes without engineering involvement.

  • 01

    Schema designer (Sanity)

    Modelled case studies, services, team, testimonials, and lead-form payloads in a way that scales as the agency adds verticals. Portable Text for rich bodies; structured references for technology stacks.

  • 02

    Front-end engineer

    Next.js 14 App Router, ISR for content surfaces, full responsive design, accessibility baseline (WCAG AA on the major templates).

  • 03

    Lead pipeline engineer

    Form submissions push into the agency's CRM via webhook + idempotency key; sales team sees structured payload (project type, budget, timeline) without manual entry.

  • 04

    DevOps / deploy

    Vercel + Sanity preview integrations so editors see drafts live before publish. Custom domain, edge caching, daily Sanity content snapshots.

In production

The numbers that matter.

  • <200msTTFB · p75Vercel edge cache + Next.js ISR. Measured from US + EU + India edges.
  • ~10× fasterEditorial publish timeAnecdotal — staff feedback. Sanity Portable Text vs. previous Gutenberg flow.
  • 100/100Lighthouse SEO scoreOn the case-study + services templates. Verified post-launch.
  • ZeroLost lead submissionsIdempotent webhook + retry queue replaced the previous "mailto:" form.
  • 0 lock-inPortable content modelSanity export is JSON — agency owns the data and could move off Sanity in days if needed.
Why this was hard

What was actually broken.

A services agency lives or dies on its portfolio page. If the case studies look generic, the sales pipeline stalls. The old site's editor experience was so painful that case studies went up months after the project shipped — by which point the engineer who built it had moved on and the write-up was 70% accuracy. The brief was a publishing workflow that takes 30 minutes per case study, not 3 hours, and a case-study layout that signals "we engineer real systems," not "we have a stock-photo template."

Engineering challenges

The hard surface area.

  • 01Editorial flow has to be 10× faster than the legacy WordPress flow or the team will not adopt it. Sanity Portable Text + custom blocks were the bet.
  • 02Case-study layout must communicate engineering depth without becoming a wall of text. Required a flexible block-based template with code-snippet support + diagram embeds.
  • 03Lead-form payload needs to route into the agency's existing CRM (not a fresh DB) with idempotency so a flaky webhook does not create duplicate leads.
  • 04Bilingual (English + Hindi) was deferred to v2 — the schema accommodates it, but v1 is English-only.
  • 05Preview-on-draft for editors: any change in Sanity must be visible on a draft URL before publish, with no engineering involvement.
Hard problems solved

Engineering wins worth naming.

01

Sanity schema that scales without becoming spaghetti

Modelled the 8 core content types (caseStudy, service, person, testimonial, post, page, technology, vertical) with strict references — not embedded duplicates. Adding a new vertical adds one document, not one schema migration.

02

Idempotent lead-pipeline webhook

Form POST generates a UUID client-side, server stores it before pushing to CRM, CRM webhook reply marks success. A retry on flaky network never creates two leads in the CRM.

03

Draft previews without exposing draft data

Sanity preview tokens scoped per editor session; draft URLs are signed and expire in 7 days. Public crawlers never see drafts.

System architecture

How the system is wired.

01 — Edge

Edge tier

Vercel EdgeCDN + ISRGlobal edge cache; revalidates on Sanity webhook
02 — App

Application tier

Next.js 14App Router · RSC · ISRStatic-by-default with on-demand revalidation
Sanity StudioEmbedded · /studio routeEditor surface lives at the same domain as the public site
Form webhookEdge functionIdempotent push to CRM; retries on failure
03 — Data

Data tier

Sanity Content LakeHosted CMSSingle source of truth; JSON export available
Daily snapshotGitHub Actions · S3Off-platform backup of all content + assets
Why this stack

The decisions behind each choice.

Next.js 14 + Vercel

  • ISR + on-demand revalidation lets editors publish without rebuilding the whole site — change goes live in seconds.
  • Edge runtime + RSC give the case-study pages near-static performance with full database personalisation when needed.
  • Vercel preview deployments make every PR clickable without manual setup.

Sanity over Contentful/Strapi

  • Portable Text is the cleanest rich-text format I have used — JSON-native, custom block types are first-class, editor experience is fast.
  • Embedded Studio (same domain, no separate login) cuts editor friction massively.
  • Pricing scales with API queries, not seats — fits a services agency where many people read content occasionally.

Idempotent webhooks over direct DB writes

  • CRM is the source of truth for leads. Writing to a sidecar DB and syncing later creates two truths that drift.
  • Idempotency key client-generated ensures retries are safe.
Lessons learned

What the build taught us.

  • Editorial speed determines content velocity. If publishing takes 3 hours, case studies will be 6 months late. If it takes 30 minutes, they go up the week the project ships.
  • Portable Text earns its place. JSON-native rich text gives you everything Markdown lacks (custom blocks, references, partial fragments) without locking you in.
  • Webhook idempotency is the cheapest insurance you can buy. Add it before you need it.
Visuals

From the project.

Continue reading
Previous caseCaravan CargoNext caseCyberV
Build with us

Want something like this?

I take on a small number of engagements each quarter. Tell me what you have in mind.

Start the conversation→