Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
filetype: 'casestudy'
created: 2026-03-03
title: Modernizing Lincolnshire County Council / From Dedicated CKAN Instance to Managed PortalJS Cloud Service
description: 'Discover how Lincolnshire County Council transformed their data publishing approach, migrating from a dedicated CKAN instance to PortalJS Cloud. Reduced operational costs, simplified administration, and delivered a modern user experience without compromising their established catalogue.'
image: /images/casestudies/linconshire0.jpg
images: ['/images/casestudies/lincolnshire1.png', '/images/casestudies/lincolnshire2.png', '/images/casestudies/lincolnshire3.png', '/images/casestudies/lincolnshire4.png']
Comment on lines +6 to +7
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix likely broken media asset paths (linconshire / lincon).

These filenames look misspelled relative to “Lincolnshire” and may 404 in production.

Suggested fix
-image: /images/casestudies/linconshire0.jpg
+image: /images/casestudies/lincolnshire0.jpg
...
-  '/images/casestudies/lincon.svg',
+  '/images/casestudies/lincoln.svg',

Also applies to: 45-45

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@site/content/case-studies/modernizing-lincolnshire-county-council39s-open-data-portal.md`
around lines 6 - 7, The frontmatter keys image and images contain misspelled
filenames (e.g., "linconshire0.jpg" and "lincon" variants) that will 404; update
the values so they consistently use the correct "lincolnshire" spelling (e.g.,
rename "linconshire0.jpg" to "lincolnshire0.jpg" and ensure all entries in image
and images arrays match the actual asset filenames used in the repo:
"lincolnshire1.png", "lincolnshire2.png", etc.), and verify the referenced
assets exist in the images/casestudies directory.

authors: ['popovayoana']
keystats: [
'Seamless/n catalogue migration',
'Zero/n infrastructure overhead',
'100%/n Budget-friendly solution',
Comment on lines +10 to +12
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Normalize keystat line-break token to avoid literal /n rendering.

/n is typically a typo and may render as plain text in UI.

Suggested fix
-  'Seamless/n catalogue migration',
-  'Zero/n infrastructure overhead',
-  '100%/n Budget-friendly solution',
+  'Seamless\ncatalogue migration',
+  'Zero\ninfrastructure overhead',
+  '100%\nBudget-friendly solution',
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
'Seamless/n catalogue migration',
'Zero/n infrastructure overhead',
'100%/n Budget-friendly solution',
'Seamless\ncatalogue migration',
'Zero\ninfrastructure overhead',
'100%\nBudget-friendly solution',
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@site/content/case-studies/modernizing-lincolnshire-county-council39s-open-data-portal.md`
around lines 10 - 12, The three keystat strings ('Seamless/n catalogue
migration', 'Zero/n infrastructure overhead', '100%/n Budget-friendly solution')
contain the literal token "/n" which renders incorrectly; replace each "/n" with
a proper line-break representation (either an actual line break, a Markdown hard
break, or an HTML <br/> as appropriate for this content) so the phrases render
on two lines rather than showing "/n" literally.

]
problem: "
Lincolnshire County Council had built a solid open data programme on CKAN, serving their community with 60+ datasets across essential public services. As a smaller authority, however, they found themselves managing infrastructure complexity that was better suited to larger organizations with dedicated technical teams. Their challenges centered around operational fit rather than technology limitations:


- **Infrastructure Management Overhead**: Running a dedicated instance required server administration and technical maintenance that consumed staff time.

- **Admin Interface Complexity**: CKAN's powerful admin dashboard was designed for technical users, creating friction for council staff who needed to focus on data rather than platform management.


- **Limited Self-Service Capability**: Routine updates and content management required technical intervention, slowing down day-to-day operations.
"
solution: "
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard..

- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.


- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council''s visual identity and accessibility requirements.
Comment on lines +26 to +31
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Clean up copy typos in solution text.

There are two user-visible text issues: dashboard.. and Council''s.

Suggested fix
-PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard..
+PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard.
...
-- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council''s visual identity and accessibility requirements.
+- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council's visual identity and accessibility requirements.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard..
- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.
- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council''s visual identity and accessibility requirements.
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard.
- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.
- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council's visual identity and accessibility requirements.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@site/content/case-studies/modernizing-lincolnshire-county-council39s-open-data-portal.md`
around lines 26 - 31, Fix two copy typos in the case study content: replace the
double period after "admin dashboard.." with a single period, and replace the
doubled single quotes in "Council''s" with a proper apostrophe ("Council's") so
the user-visible text reads correctly in the paragraph that describes PortalJS
Cloud delivering a managed service and the modern branded interface.

Comment on lines +26 to +31
Copy link

Copilot AI Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There’s a double period at the end of the sentence (dashboard..) and Council''s contains a doubled apostrophe which will render literally. Please fix to a single period and Council's (or rework the quoting style so escaping isn’t needed).

Suggested change
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard..
- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.
- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council''s visual identity and accessibility requirements.
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard.
- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.
- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council's visual identity and accessibility requirements.

Copilot uses AI. Check for mistakes.


- **Staff Empowerment**: Admin workflows simplified so council staff can manage content, users, and configurations without technical support."
Comment on lines +14 to +34
Copy link

Copilot AI Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The YAML frontmatter for problem/solution is likely invalid as written: problem: " starts a double-quoted scalar, but the subsequent lines aren’t indented, so the frontmatter parser may fail. Use a single-quoted multi-line string (like other case studies) or a block scalar (|) with proper indentation.

Suggested change
problem: "
Lincolnshire County Council had built a solid open data programme on CKAN, serving their community with 60+ datasets across essential public services. As a smaller authority, however, they found themselves managing infrastructure complexity that was better suited to larger organizations with dedicated technical teams. Their challenges centered around operational fit rather than technology limitations:
- **Infrastructure Management Overhead**: Running a dedicated instance required server administration and technical maintenance that consumed staff time.
- **Admin Interface Complexity**: CKAN's powerful admin dashboard was designed for technical users, creating friction for council staff who needed to focus on data rather than platform management.
- **Limited Self-Service Capability**: Routine updates and content management required technical intervention, slowing down day-to-day operations.
"
solution: "
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard..
- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.
- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council''s visual identity and accessibility requirements.
- **Staff Empowerment**: Admin workflows simplified so council staff can manage content, users, and configurations without technical support."
problem: |
Lincolnshire County Council had built a solid open data programme on CKAN, serving their community with 60+ datasets across essential public services. As a smaller authority, however, they found themselves managing infrastructure complexity that was better suited to larger organizations with dedicated technical teams. Their challenges centered around operational fit rather than technology limitations:
- **Infrastructure Management Overhead**: Running a dedicated instance required server administration and technical maintenance that consumed staff time.
- **Admin Interface Complexity**: CKAN's powerful admin dashboard was designed for technical users, creating friction for council staff who needed to focus on data rather than platform management.
- **Limited Self-Service Capability**: Routine updates and content management required technical intervention, slowing down day-to-day operations.
solution: |
PortalJS Cloud delivered exactly what Lincolnshire needed: a managed service that eliminated infrastructure costs while providing a modern, customizable frontend. The migration preserved their entire CKAN catalogue while giving council staff direct control over day-to-day operations through an intuitive admin dashboard..
- **Complete Data Migration**: Every dataset, resource, organization, and metadata element transferred seamlessly from CKAN to PortalJS Cloud.
- **Modern, Branded Interface**: Fully customised frontend reflecting Lincolnshire County Council''s visual identity and accessibility requirements.
- **Staff Empowerment**: Admin workflows simplified so council staff can manage content, users, and configurations without technical support.

Copilot uses AI. Check for mistakes.
results: "Lincolnshire's open data portal is now both more cost-effective and easier to operate. The modern interface serves their community of residents, researchers, and developers through clean data discovery tools, while the simplified admin experience lets council staff focus on data quality rather than platform maintenance."
features: [
{ title: "Cost-Effective Managed Service", text: "Lincolnshire moved from managing their own infrastructure to a fully managed service model with PortalJS Cloud. This eliminated the need for server administration and technical maintenance, letting council staff focus on their data rather than the platform underneath it.", icon: "rocket" },
{ title: "Complete Catalogue Preservation", text: "The migration transferred all 60 published datasets, 10 topic categories, and 6 organizational structures without data loss. Download links, metadata relationships, and search functionality remained fully intact.", icon: "database" },
{ title: "Intuitive Self-Service Administration", text: "Council staff now manage datasets, users, and portal configuration through PortalJS Cloud's purpose-built dashboard—no need to navigate CKAN's complex admin interface or route requests through developers.", icon: "browser" },
{ title: "Modern User Experience", text: "Built on Next.js and Tailwind CSS, the new portal delivers faster performance, responsive design, and accessibility compliance that meets contemporary web standards.", icon: "verified" },
{ title: "Simplified Customization", text: "Frontend updates, branding changes, and feature additions can be implemented directly by the council team without specialist development resources.", icon: "paint-roller" },
]
quote: [
'"PortalJS Cloud allowed us to maintain our data publishing commitments while working within our budget constraints. The migration was seamless and the ongoing operational savings have been significant."',
Copy link

Copilot AI Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The quote text is wrapped in additional quote characters ('"..."'), unlike other case studies. This will render with literal leading/trailing quotes in the UI; consider storing the text without the extra quotes and let the UI handle quotation styling.

Suggested change
'"PortalJS Cloud allowed us to maintain our data publishing commitments while working within our budget constraints. The migration was seamless and the ongoing operational savings have been significant."',
'PortalJS Cloud allowed us to maintain our data publishing commitments while working within our budget constraints. The migration was seamless and the ongoing operational savings have been significant.',

Copilot uses AI. Check for mistakes.
'/images/casestudies/lincon.svg',
'Lincolnshire County Council Representative',
]
portal: [
'Lincolnshire Open Data Portal',
'As part of its digital transformation strategy, Lincolnshire County Council migrated to PortalJS Cloud with consulting and migration services by Datopian.',
'https://data.lincolnshire.gov.uk',
]
table: default
longReadLink: 'https://www.datopian.com/showcase/case-studies/lincolnshire-county-council-portaljs-cloud-migration'
longReadTitle: 'How Lincolnshire County Council Modernised Its Open Data Portal with PortalJS Cloud'
longReadSummary: 'Read the complete breakdown of architecture, migration approach, and outcomes — from dedicated CKAN instance to fully managed PortalJS Cloud.'
---
106 changes: 70 additions & 36 deletions site/layouts/casestudy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ export default function CaseStudyLayout({ children, ...frontMatter }) {
table,
highlight,
longRead = true,
longReadLink,
longReadTitle,
longReadSummary,
fullCaseStudy = false,
faqs
} = frontMatter
Expand Down Expand Up @@ -539,46 +542,77 @@ export default function CaseStudyLayout({ children, ...frontMatter }) {
<article>
<Header />
<Cta />
{longRead && !fullCaseStudy && <main className="flex flex-col mt-16 w-full mx-auto max-w-8xl px-4 sm:px-8 xl:px-12">
<Disclosure>
{({ open }) => (
<>
<Disclosure.Button className="text-start text-base font-medium">
{open ? (
<div>
<p className="text-sm font-bold text-blue-400">LONG READ</p>
<div className="flex items-center gap-2">
<p className="text-2xl">Hide</p>
<FaIcons.FaAngleDoubleUp className="text-blue-400 mt-1 " />
{longRead && !fullCaseStudy && (longReadLink ? (
<main className="flex flex-col mt-16 w-full mx-auto max-w-8xl px-4 sm:px-8 xl:px-12">
<div className="px-8 py-12 sm:px-12 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-8">
<div>
<p className="text-xs font-semibold tracking-widest uppercase text-blue-400 mb-2.5">
Full Case Study
</p>
<h3 className="text-xl sm:text-[22px] font-bold text-slate-900 dark:text-white leading-snug max-w-sm">
{longReadTitle || 'Read the full case study'}
</h3>
{longReadSummary && (
<p className="mt-2.5 text-sm text-slate-500 dark:text-slate-400 max-w-sm leading-relaxed">
{longReadSummary}
</p>
)}
</div>
<a
href={longReadLink}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-2 bg-slate-900 dark:bg-white text-white dark:text-[#111] text-sm font-semibold px-6 py-3.5 rounded-lg hover:bg-slate-700 dark:hover:bg-slate-100 transition-colors shrink-0"
>
Read the full story
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="w-4 h-4">
<path d="M3 8h10M9 4l4 4-4 4"/>
</svg>
</a>
</div>
</main>
) : (
<main className="flex flex-col mt-16 w-full mx-auto max-w-8xl px-4 sm:px-8 xl:px-12">
<Disclosure>
{({ open }) => (
<>
<Disclosure.Button className="text-start text-base font-medium">
{open ? (
<div>
<p className="text-sm font-bold text-blue-400">LONG READ</p>
<div className="flex items-center gap-2">
<p className="text-2xl">Hide</p>
<FaIcons.FaAngleDoubleUp className="text-blue-400 mt-1 " />
</div>
</div>
</div>
) : (
<div>
<p className="text-sm font-bold text-blue-400">LONG READ</p>
<div className="flex items-center gap-2 transition blink">
<p className="text-start text-5xl sm:text-7xl max-w-lg sm:mb-16 tracking-tight">
Click to read the detailed case study{' '}
<FaIcons.FaAngleDoubleDown className=" inline text-blue-400 -ml-3 mt-1 sm:h-16 sm:w-16 " />
</p>
) : (
<div>
<p className="text-sm font-bold text-blue-400">LONG READ</p>
<div className="flex items-center gap-2 transition blink">
<p className="text-start text-5xl sm:text-7xl max-w-lg sm:mb-16 tracking-tight">
Click to read the detailed case study{' '}
<FaIcons.FaAngleDoubleDown className=" inline text-blue-400 -ml-3 mt-1 sm:h-16 sm:w-16 " />
</p>
</div>
</div>
)}
</Disclosure.Button>
<Disclosure.Panel>
<div className="text-center text-3xl font-semibold mt-8 mb-6 max-w-l">
A Detailed Case Study for a Deep Dive
</div>
)}
</Disclosure.Button>
<Disclosure.Panel>
<div className="text-center text-3xl font-semibold mt-8 mb-6 max-w-l">
A Detailed Case Study for a Deep Dive
</div>
<div className="flex justify-center">
{' '}
<div className="max-w-4xl docs mt-6 prose prose-headings:font-headings dark:prose-invert prose-a:break-word ">
{children}
<div className="flex justify-center">
{' '}
<div className="max-w-4xl docs mt-6 prose prose-headings:font-headings dark:prose-invert prose-a:break-word ">
{children}
</div>
</div>
</div>
</Disclosure.Panel>
</>
)}
</Disclosure>
</main>}
</Disclosure.Panel>
</>
)}
</Disclosure>
</main>
))}
<Stats />
<FAQ faqItems={faqs || questions} />
</article>
Expand Down
Loading