Squint
A consultancy site its own team can rebuild, block by block, without calling a developer.
Visit squintconsulting.com
- Client
- Squint Consulting
- Role
- Front-end development & CMS integration
- Timeline
- 2024 — 2026
- Stack
- Astro
- React
- Bookshop
- CloudCannon
- Sass
- Content Collections
- 13CMS-editable components
- 8client case cards
- 260commits
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
A closer look

Case cards, each an entry in a content collection 
Page colour and hero copy are editable per page 
Statement hero on the mission page 
Services accordion block
