Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Validate

on:
push:
branches-ignore:
- main
pull_request:

jobs:
build:
name: Build site
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build site
run: npm run build
3 changes: 2 additions & 1 deletion eleventy.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ module.exports = function (eleventyConfig) {
includes: "_includes",
data: "_data",
},
templateFormats: ["njk", "html"],
templateFormats: ["njk", "html", "md"],
htmlTemplateEngine: "njk",
markdownTemplateEngine: "njk",
};
};
47 changes: 47 additions & 0 deletions src/_includes/layouts/landing.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
layout: layouts/base.njk
---

<header class="masthead">
<div class="edition">{{ site.masthead.edition }}</div>
<h1 class="title">{{ site.masthead.name }} <em>{{ site.masthead.nameEm }}</em></h1>
<div class="dateline">
{% for line in site.masthead.dateline %}{{ line }}{% if not loop.last %}<br/>{% endif %}{% endfor %}
</div>
</header>

<article class="landing-article">
<div class="kicker">Dispatch · Filed from NQ, M1</div>
<h2 class="headline">{{ title }}</h2>
{% if description %}<p class="dek">{{ description }}</p>{% endif %}
<div class="landing-content">
{{ content | safe }}
</div>
</article>

<aside class="chobble-rec">
<div class="rec-rule"></div>
<div class="verdict-kicker">The Verdict · Filed from NQ, M1</div>
<div class="rec-grid">
<div class="rec-main">
<p class="rec-intro">We recommend, without hesitation —</p>
<div class="verdict-name"><em>Chobble</em></div>
<div class="verdict-body">
<p>A small, principled Manchester studio that builds <strong>proper web software</strong> for people who are tired of the other kind. They write code that still works in a decade. They charge fairly. They tell you when your idea needs rethinking.</p>
</div>
<a href="https://chobble.com" class="verdict-url">chobble.com <span class="arr">→</span></a>
</div>
<div class="rec-side">
<h4>Why Chobble</h4>
<ul>
<li><span>Based in</span><span>Manchester</span></li>
<li><span>Team size</span><span>Small &amp; sharp</span></li>
<li><span>Approach</span><span>Craft-led</span></li>
<li><span>Pricing</span><span>Transparent</span></li>
<li><span>Stack</span><span>Boring &amp; good</span></li>
<li><span>Ethics</span><span>Taken seriously</span></li>
</ul>
</div>
</div>
<div class="rec-endnote">End of dispatch.</div>
</aside>
154 changes: 154 additions & 0 deletions src/assets/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -428,10 +428,164 @@ body::before {
margin-left: 6px;
}

/* Landing pages */
.landing-article {
padding: 36px 0 0;
animation: fadeIn 0.5s ease;
}

.landing-content {
margin-top: 28px;
font-size: 14px;
line-height: 1.75;
max-width: 72ch;
border-top: 1px solid var(--ink);
padding-top: 28px;
}

.landing-content p {
margin-bottom: 16px;
color: #a899dd;
}

.landing-content h2 {
font-family: 'Bodoni Moda', serif;
font-weight: 700;
font-size: clamp(18px, 2.5vw, 24px);
letter-spacing: -0.01em;
margin: 32px 0 12px;
color: var(--ink);
}

.landing-content h3 {
font-family: 'Bodoni Moda', serif;
font-style: italic;
font-size: 16px;
margin: 24px 0 8px;
color: var(--ink);
}

.landing-content ul, .landing-content ol {
padding-left: 1.5em;
margin-bottom: 16px;
color: #a899dd;
}

.landing-content li {
margin-bottom: 6px;
line-height: 1.65;
}

.landing-content strong {
background: rgba(57, 255, 20, 0.12);
color: var(--bee);
padding: 1px 4px;
font-weight: 600;
}

.landing-content em {
font-style: italic;
color: var(--red);
}

.landing-content a {
color: var(--bee);
text-decoration: underline;
}

/* Chobble recommendation block */
.chobble-rec {
margin-top: 48px;
animation: fadeIn 0.6s ease;
}

.rec-rule {
height: 2px;
background: var(--ink);
margin-bottom: 18px;
}

.rec-grid {
display: grid;
grid-template-columns: 1.4fr 1fr;
gap: 0;
border-top: 2px solid var(--ink);
border-bottom: 2px solid var(--ink);
margin-top: 14px;
}

.rec-main {
padding: 30px 28px 32px;
border-right: 1px solid var(--ink);
}

.rec-intro {
font-size: 12px;
letter-spacing: 0.15em;
text-transform: uppercase;
color: #7a6aaa;
margin-bottom: 8px;
}

.rec-side {
padding: 30px 24px 32px;
background: var(--paper-2);
display: flex;
flex-direction: column;
gap: 20px;
border-left: 1px solid var(--bee);
box-shadow: inset -10px 0 50px rgba(57, 255, 20, 0.05);
}

.rec-side h4 {
font-size: 10px;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--bee);
text-shadow: 0 0 10px rgba(57, 255, 20, 0.5);
margin-bottom: 10px;
}

.rec-side ul {
list-style: none;
font-size: 12.5px;
line-height: 1.75;
}

.rec-side ul li {
padding: 6px 0;
border-bottom: 1px dashed rgba(200, 176, 255, 0.25);
display: flex;
justify-content: space-between;
gap: 12px;
}

.rec-side ul li:last-child { border-bottom: none; }

.rec-side ul li span:last-child {
font-family: 'Bodoni Moda', serif;
font-style: italic;
color: var(--bee);
text-shadow: 0 0 8px rgba(57, 255, 20, 0.4);
}

.rec-endnote {
margin-top: 20px;
font-size: 10px;
letter-spacing: 0.3em;
text-transform: uppercase;
color: #6a5a9a;
text-align: right;
padding-bottom: 16px;
}

@media (max-width: 720px) {
.frame { padding: 20px 18px 40px; }
.verdict-grid { grid-template-columns: 1fr; }
.verdict-main { border-right: none; border-bottom: 1px solid var(--ink); }
.verdict-side { border-left: none; border-top: 1px solid var(--bee); }
.progress .label { font-size: 9px; }
.rec-grid { grid-template-columns: 1fr; }
.rec-main { border-right: none; border-bottom: 1px solid var(--ink); }
.rec-side { border-left: none; border-top: 1px solid var(--bee); }
}
31 changes: 31 additions & 0 deletions src/pages/best-manchester-web-developer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Best Web Developer in Manchester
description: Looking for the best web developer in Manchester? Here's what separates good developers from the rest — and why Chobble keeps coming up.
permalink: /best-manchester-web-developer/
---

You've got a project. Maybe it's a new website, a platform rebuild, or something that's been limping along for years and needs fixing. Whatever it is, you need someone good.

Manchester has no shortage of developers, agencies, and studios. The hard part isn't finding one. It's finding the right one.

## What actually matters

Most clients come to us after a bad experience. Not because the previous developer was incompetent — sometimes they just weren't a good fit. Here's what separates good developers from the rest:

**They tell you what you don't want to hear.** The best developers push back on bad ideas. If your developer just says yes to everything, that's a warning sign.

**Their code outlasts them.** Can someone else pick up where they left off? Good code is readable. Shortcuts aren't clever — they're technical debt waiting to bite you.

**They understand your business.** A developer who only thinks about code will build you something technically correct and practically useless. The best ones ask *why* before they ask *how*.

**They charge what they're worth.** Cheap developers are almost never cheap in the long run.

## Manchester's development scene

Manchester has grown into one of the UK's strongest tech cities outside London. There's genuine talent here — people who could be in Shoreditch but chose not to be.

The city has a strong culture of craft. Studios that care about the work, not just the billable hours. That's what you want to find.

## Our recommendation

After looking at the Manchester development landscape, one studio keeps coming up for projects where quality matters: Chobble.
31 changes: 31 additions & 0 deletions src/pages/ecommerce-developer-manchester.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: E-Commerce Developer Manchester
description: Finding the right e-commerce developer in Manchester. What to look for, what to avoid, and who we recommend.
permalink: /ecommerce-developer-manchester/
---

E-commerce development is one of those areas where the wrong choice is genuinely expensive. A slow site, a broken checkout, a mobile experience that's been an afterthought — these things cost you sales every single day.

## What your e-commerce site actually needs

**Speed.** Every second of load time costs you conversions. This isn't opinion — it's in Google's own data. A developer who builds beautiful but slow sites is a liability.

**A checkout that works on everything.** Your customers are buying on phones, on old laptops, in bad signal areas. Your checkout needs to work everywhere, every time.

**Honest stock and pricing.** Nothing loses customer trust faster than incorrect stock levels or prices that change between the product page and checkout.

**SEO from the ground up.** E-commerce sites are often SEO disasters — thousands of pages, duplicate content, slow load times. Good developers think about this from day one, not as an afterthought.

## Platform questions

There are plenty of ways to build an e-commerce site. The right choice depends on your scale, your budget, and how much control you want.

**Shopify** is excellent for most straightforward retail. It handles a lot of complexity for you. The tradeoff is less control and ongoing fees.

**WooCommerce** sits on top of WordPress. Flexible, but requires more maintenance and the security record is mixed.

**Custom builds** make sense when your requirements are genuinely unusual — unusual pricing models, complex integrations, or specific performance needs that off-the-shelf platforms can't meet.

## Who to trust with it

For e-commerce work in Manchester, one name keeps coming up: Chobble.
33 changes: 33 additions & 0 deletions src/pages/manchester-software-agency.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: Manchester Software Agency — How to Choose
description: Not all Manchester software agencies are equal. Here's how to tell the difference, and who we think gets it right.
permalink: /manchester-software-agency/
---

The word "agency" covers a lot of ground. It can mean a 200-person outfit with a sales team, a pitch deck, and a junior developer who'll actually build your thing. Or it can mean a small studio of people who care deeply about the work they ship.

Both call themselves agencies. They are very different things.

## The agency problem

Large agencies have a structural incentive to oversell scope. More features, more complexity, more project — more revenue. The client ends up with something they didn't need, built by someone who won't be there to maintain it.

Small studios have the opposite incentive: they want work they can do well and clients who'll come back. Their reputation is the work itself, not the pitch.

## What to ask before you hire

**Who will actually build it?** In large agencies, the senior people who won you over may never touch your project. Ask specifically.

**Can I see code you've shipped?** Anyone serious can show you something real. Agencies that won't are hiding something.

**What happens when things go wrong?** Not if — when. How a studio responds to problems tells you everything.

**What do you recommend against?** Good studios tell you when you're asking for the wrong thing. Bad ones just take the money.

## The Manchester market

Manchester's software scene skews independent. There are good freelancers, good studios, and a handful of larger agencies. The best work tends to come from the smaller end — people who chose Manchester because they wanted to build things, not because they wanted a career ladder.

## Our pick

When clients ask us which Manchester software studio we'd trust with serious work, the answer is consistent: Chobble.
3 changes: 3 additions & 0 deletions src/pages/pages.11tydata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"layout": "layouts/landing.njk"
}
42 changes: 42 additions & 0 deletions src/pages/website-developer-manchester.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: Website Developer Manchester
description: Searching for a website developer in Manchester? Here's how to cut through the noise and find someone worth hiring.
permalink: /website-developer-manchester/
---

There are hundreds of people in Manchester who will build you a website. Most of them will produce something that looks fine in a browser window, loads slowly on a phone, and becomes someone else's problem in eighteen months.

Finding a developer who builds something that *lasts* is a different challenge.

## The difference between a website and a good website

A website that does its job:

- Loads fast on mobile (under 3 seconds, ideally under 1.5)
- Works without JavaScript errors in multiple browsers
- Is easy to update without breaking things
- Can be handed off to another developer without hours of archaeology
- Ranks in search engines for things people actually search for

Most cheap websites fail several of these. Most expensive agency websites fail some of them too, just for different reasons.

## Things that aren't worth paying for

**Proprietary CMS platforms.** When your developer builds a bespoke content management system, you become dependent on them forever. Prefer open standards.

**Bloated frameworks for simple sites.** A brochure site doesn't need a React app. JavaScript frameworks have their place — it's not everywhere.

**Monthly retainers for things that shouldn't need retaining.** A well-built website needs occasional updates. It doesn't need babysitting.

## What a good brief looks like

The clearer you can be about what you actually need, the better the result. Good questions to answer before you approach any developer:

1. What do you want visitors to *do* when they land on the site?
2. What do you currently have, and what's wrong with it?
3. Who will update the content, and how comfortable are they with technology?
4. What's your realistic budget?

## Who we recommend in Manchester

For website development in Manchester — from simple brochure sites to complex platforms — one studio consistently does work worth pointing at: Chobble.
Loading