All projects
live2024 — 2026

Squint

A consultancy site its own team can rebuild, block by block, without calling a developer.

Visit squintconsulting.com
Squint homepage with the headline "We See Hidden Value, And Act On It" on a warm off-white background
Squint on a phone
Loading preview…
Squint on a phone
Client
Squint Consulting
Role
Front-end development & CMS integration
Timeline
2024 — 2026
Stack
  • Astro
  • React
  • Bookshop
  • CloudCannon
  • Sass
  • Content Collections

The brief

Squint is a strategic consultancy that finds “value hiding in plain sight”. They needed a site that looks as considered as their work and that a small team can keep changing themselves: new cases, new quotes, a different page structure for a pitch.

Approach: pages as data

Rather than building pages, I built a set of blocks and let pages be lists of them. A page’s Markdown file contains an ordered content_blocks array; a single catch-all route renders whatever is in it.

Each block is a Bookshop component: an Astro template plus a small schema describing its fields. That schema does double duty. It tells CloudCannon which inputs to show an editor, and it lets the same component render live inside the visual editor, so changes appear in place as they are typed.

The library covers the whole site: home and heading heroes, case cards, client quotes, a logo carousel, figures, a services accordion, split image sections, team grid, press and contact.

Details that matter

  • Guard rails for editors. Collections are validated with typed schemas, so a card without an image or a quote without an author fails at build time instead of quietly shipping.
  • Motion without the weight. Reveals are driven by a small in-view tagger and CSS, and the logo animation is a plain SVG.
  • Performance. Static output and self-hosted fonts keep the pages light despite being image-led.

Outcome

The site is live at squintconsulting.com. The team can publish cases and restructure pages from the CMS, so development time goes into new components rather than content changes.

Try it

Rearrange the page

A small model of how the site works. Each section is a block an editor can move, hide or bring back. Try reordering the page.

content_blocks

Gallery