<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Articles | WebPro Company OÜ</title>
    <link>https://webpro.company/blog/</link>
    <atom:link href="https://webpro.company/blog/rss.xml" rel="self" type="application/rss+xml" />
    <description>WebPro articles about Drupal development, AI-assisted workflows, testing and website maintenance.</description>
    <language>en-US</language>
    <lastBuildDate>Mon, 08 Jun 2026 06:00:00 GMT</lastBuildDate>
    <item>
      <title>Component-based Drupal — how it is built in practice</title>
      <link>https://webpro.company/blog/component-based-drupal</link>
      <guid isPermaLink="true">https://webpro.company/blog/component-based-drupal</guid>
      <pubDate>Mon, 08 Jun 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Component-based development is not just a frontend trend — in Drupal it is a concrete architectural choice that affects both editorial workflow and long-term maintenance costs.</description>
    </item>
    <item>
      <title>Contact form without reCAPTCHA — catching bots without Google</title>
      <link>https://webpro.company/blog/contact-form-without-recaptcha</link>
      <guid isPermaLink="true">https://webpro.company/blog/contact-form-without-recaptcha</guid>
      <pubDate>Mon, 08 Jun 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>GDPR</category>
      <description>reCAPTCHA works, but it loads scripts from Google, tracks users and requires GDPR consent. Here is an alternative you can manage yourself.</description>
    </item>
    <item>
      <title>UX rules and system consistency</title>
      <link>https://webpro.company/blog/ux-rules-and-system-consistency</link>
      <guid isPermaLink="true">https://webpro.company/blog/ux-rules-and-system-consistency</guid>
      <pubDate>Mon, 08 Jun 2026 06:00:00 GMT</pubDate>
      <category>UX</category>
      <description>Why consistency is not an aesthetic preference but a functional requirement — and how to achieve it in practice.</description>
    </item>
    <item>
      <title>Headless Drupal — when it actually makes sense</title>
      <link>https://webpro.company/blog/headless-drupal-when-it-makes-sense</link>
      <guid isPermaLink="true">https://webpro.company/blog/headless-drupal-when-it-makes-sense</guid>
      <pubDate>Sun, 07 Jun 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Headless Drupal is a powerful architectural choice — but not for every project. Here is when it genuinely helps and when it simply adds complexity.</description>
    </item>
    <item>
      <title>Hiring a Drupal agency outside your country — what actually matters</title>
      <link>https://webpro.company/blog/drupal-agency-outside-your-country</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-agency-outside-your-country</guid>
      <pubDate>Sat, 06 Jun 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <description>The agency&apos;s country matters less than whether they work in your timezone, respond when it counts and understand what is at stake.</description>
    </item>
    <item>
      <title>How to assess Drupal development quality</title>
      <link>https://webpro.company/blog/drupal-quality-indicators</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-quality-indicators</guid>
      <pubDate>Sat, 06 Jun 2026 06:00:00 GMT</pubDate>
      <category>Audit</category>
      <category>Drupal</category>
      <description>Drupal project quality is not visible in the design. It is visible in the code structure, tests and how changes are deployed.</description>
    </item>
    <item>
      <title>How much does a Drupal website cost?</title>
      <link>https://webpro.company/blog/drupal-website-cost</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-website-cost</guid>
      <pubDate>Fri, 05 Jun 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Drupal website cost is not mainly about design. The largest share of cost typically comes from functionality, integrations and ongoing maintenance.</description>
    </item>
    <item>
      <title>AI builds your site and deploys it. But who&apos;s responsible?</title>
      <link>https://webpro.company/blog/ai-builds-and-deploys-sites</link>
      <guid isPermaLink="true">https://webpro.company/blog/ai-builds-and-deploys-sites</guid>
      <pubDate>Thu, 04 Jun 2026 06:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Development</category>
      <description>An AI tool builds your site and puts it live. But when it breaks at 11pm, data leaks, or a client calls in a panic — who do you turn to?</description>
    </item>
    <item>
      <title>Drupal CMS vs Drupal — what is the difference?</title>
      <link>https://webpro.company/blog/drupal-cms-vs-drupal-core</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-cms-vs-drupal-core</guid>
      <pubDate>Wed, 03 Jun 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>Drupal CMS is not a new product — it is the same Drupal, pre-configured so that getting started is faster and simpler.</description>
    </item>
    <item>
      <title>Drupal hosting requirements — what to expect from a server</title>
      <link>https://webpro.company/blog/drupal-hosting-requirements</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-hosting-requirements</guid>
      <pubDate>Tue, 02 Jun 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Drupal</category>
      <description>Drupal does not run well on every hosting environment. It is worth checking a few important parameters before signing a contract.</description>
    </item>
    <item>
      <title>Drupal multisite — one platform, multiple websites</title>
      <link>https://webpro.company/blog/drupal-multisite</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-multisite</guid>
      <pubDate>Mon, 01 Jun 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Drupal multisite suits organisations managing multiple sites who want shared modules, updates and maintenance processes.</description>
    </item>
    <item>
      <title>Modern website checklist — security, performance, GDPR and AI readiness</title>
      <link>https://webpro.company/blog/modern-web-requirements</link>
      <guid isPermaLink="true">https://webpro.company/blog/modern-web-requirements</guid>
      <pubDate>Sat, 30 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>A website must do more than work. It must be secure, fast, privacy-compliant, accessible and readable by machines. Some of these are recommendations — others are legal requirements.</description>
    </item>
    <item>
      <title>Who builds a modern website — the skills and roles involved</title>
      <link>https://webpro.company/blog/modern-website-team</link>
      <guid isPermaLink="true">https://webpro.company/blog/modern-website-team</guid>
      <pubDate>Sat, 30 May 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <description>A modern website requires far more than one developer. Every requirement — security, performance, accessibility, GDPR, content — needs its own set of skills.</description>
    </item>
    <item>
      <title>How WebPro built its website — custom build, AI-assisted, honest review</title>
      <link>https://webpro.company/blog/how-webpro-website-was-built</link>
      <guid isPermaLink="true">https://webpro.company/blog/how-webpro-website-was-built</guid>
      <pubDate>Thu, 28 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Custom development</category>
      <category>AI</category>
      <description>The WebPro website is a fully custom build, written with AI assistance. No Drupal, no ready-made framework. An honest account of the decisions, difficulties and outcome.</description>
    </item>
    <item>
      <title>Visual regression testing for websites</title>
      <link>https://webpro.company/blog/visual-regression-testing-for-websites</link>
      <guid isPermaLink="true">https://webpro.company/blog/visual-regression-testing-for-websites</guid>
      <pubDate>Wed, 27 May 2026 06:00:00 GMT</pubDate>
      <category>Testing</category>
      <description>Not every defect is functional. Sometimes an update breaks layout while the form still technically works.</description>
    </item>
    <item>
      <title>AI content generation for websites — where it helps and where it harms</title>
      <link>https://webpro.company/blog/ai-content-generation-for-websites</link>
      <guid isPermaLink="true">https://webpro.company/blog/ai-content-generation-for-websites</guid>
      <pubDate>Tue, 26 May 2026 06:00:00 GMT</pubDate>
      <category>AI</category>
      <description>AI generates content quickly, but speed does not mean quality. Repetitive phrases, inaccurate information and a missing voice are risks that need to be managed deliberately.</description>
    </item>
    <item>
      <title>Drupal scanner: a public pre-check before maintenance or upgrades</title>
      <link>https://webpro.company/blog/drupal-scanner-public-precheck</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-scanner-public-precheck</guid>
      <pubDate>Sun, 24 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Audit</category>
      <category>Security</category>
      <description>The Drupal platform assessment gives an initial public-data-based view of whether a website may need maintenance, upgrades or a deeper audit.</description>
    </item>
    <item>
      <title>EU cancel button: new requirement for online shops</title>
      <link>https://webpro.company/blog/eu-cancel-button-requirement-online-shops</link>
      <guid isPermaLink="true">https://webpro.company/blog/eu-cancel-button-requirement-online-shops</guid>
      <pubDate>Sat, 23 May 2026 06:00:00 GMT</pubDate>
      <category>E-commerce</category>
      <description>From 19 June 2026, many online shops must provide a clear electronic way to withdraw from a contract.</description>
    </item>
    <item>
      <title>Playwright tests for forms, menus and carts</title>
      <link>https://webpro.company/blog/playwright-tests-for-forms-menus-and-cart</link>
      <guid isPermaLink="true">https://webpro.company/blog/playwright-tests-for-forms-menus-and-cart</guid>
      <pubDate>Wed, 20 May 2026 06:00:00 GMT</pubDate>
      <category>Testing</category>
      <category>E-commerce</category>
      <description>The most useful UI tests cover the journeys the client immediately notices when they break.</description>
    </item>
    <item>
      <title>Schema.org structured data — a practical guide for Drupal</title>
      <link>https://webpro.company/blog/structured-data-schema-org</link>
      <guid isPermaLink="true">https://webpro.company/blog/structured-data-schema-org</guid>
      <pubDate>Tue, 19 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>Schema.org markup tells search engines whether a page describes a service, an article, an organisation or a product. Google uses it for rich results, AI agents for understanding content.</description>
    </item>
    <item>
      <title>AI as a developer-guided assistant</title>
      <link>https://webpro.company/blog/ai-as-developer-assistant</link>
      <guid isPermaLink="true">https://webpro.company/blog/ai-as-developer-assistant</guid>
      <pubDate>Sat, 16 May 2026 06:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Development</category>
      <description>How AI helps build better workflows, tests and checklists when a developer stays in control.</description>
    </item>
    <item>
      <title>AI in code review: benefits, limits and responsibility</title>
      <link>https://webpro.company/blog/ai-in-code-review</link>
      <guid isPermaLink="true">https://webpro.company/blog/ai-in-code-review</guid>
      <pubDate>Wed, 13 May 2026 06:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Development</category>
      <description>AI can find useful signals, but code review must not become blindly accepted suggestions.</description>
    </item>
    <item>
      <title>Why we automate Drupal work as much as possible</title>
      <link>https://webpro.company/blog/git-composer-and-automated-drupal-workflow</link>
      <guid isPermaLink="true">https://webpro.company/blog/git-composer-and-automated-drupal-workflow</guid>
      <pubDate>Tue, 12 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Development</category>
      <category>Testing</category>
      <description>Automated workflows reduce manual work, make changes traceable and help avoid breaking the public website during development.</description>
    </item>
    <item>
      <title>Automated tests do not need to start big</title>
      <link>https://webpro.company/blog/automated-tests-for-drupal</link>
      <guid isPermaLink="true">https://webpro.company/blog/automated-tests-for-drupal</guid>
      <pubDate>Sat, 09 May 2026 06:00:00 GMT</pubDate>
      <category>Testing</category>
      <category>Drupal</category>
      <description>Which Playwright and PHP tests usually bring the fastest value in a Drupal project.</description>
    </item>
    <item>
      <title>Drupal go-live checklist</title>
      <link>https://webpro.company/blog/drupal-go-live-checklist</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-go-live-checklist</guid>
      <pubDate>Fri, 08 May 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Going live is technical work, not only a button press. A good checklist reduces downtime and hidden errors.</description>
    </item>
    <item>
      <title>Core Web Vitals in Drupal — common problems and how to fix them</title>
      <link>https://webpro.company/blog/core-web-vitals-in-drupal</link>
      <guid isPermaLink="true">https://webpro.company/blog/core-web-vitals-in-drupal</guid>
      <pubDate>Wed, 06 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Performance</category>
      <description>LCP, CLS and INP are Google&apos;s metrics that affect search ranking. Drupal sites have specific causes and specific solutions for each.</description>
    </item>
    <item>
      <title>How AI helps plan a Drupal migration</title>
      <link>https://webpro.company/blog/ai-in-drupal-migration-planning</link>
      <guid isPermaLink="true">https://webpro.company/blog/ai-in-drupal-migration-planning</guid>
      <pubDate>Tue, 05 May 2026 06:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Migration</category>
      <category>Drupal</category>
      <description>AI can speed up analysis, but migration responsibility stays with the technical team.</description>
    </item>
    <item>
      <title>Drupal 11 migration: plan before code</title>
      <link>https://webpro.company/blog/drupal-11-migration</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-11-migration</guid>
      <pubDate>Sat, 02 May 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Migration</category>
      <description>Why the first migration task is mapping risks and dependencies, not writing code.</description>
    </item>
    <item>
      <title>Multilingual Drupal website — how it works</title>
      <link>https://webpro.company/blog/multilingual-drupal-website</link>
      <guid isPermaLink="true">https://webpro.company/blog/multilingual-drupal-website</guid>
      <pubDate>Wed, 29 Apr 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>Drupal supports multilingualism systematically — content, interface, configuration and URLs can all be language-specific. It requires planning, but the results are correct.</description>
    </item>
    <item>
      <title>Website budget: work that is often missing</title>
      <link>https://webpro.company/blog/hidden-work-in-a-website-budget</link>
      <guid isPermaLink="true">https://webpro.company/blog/hidden-work-in-a-website-budget</guid>
      <pubDate>Tue, 28 Apr 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <description>A cheap website quote often leaves out work the client still has to pay for later.</description>
    </item>
    <item>
      <title>Website accessibility: why WCAG is not only a public-sector topic</title>
      <link>https://webpro.company/blog/website-accessibility-wcag-and-business-risk</link>
      <guid isPermaLink="true">https://webpro.company/blog/website-accessibility-wcag-and-business-risk</guid>
      <pubDate>Sat, 25 Apr 2026 06:00:00 GMT</pubDate>
      <category>WCAG</category>
      <description>Accessibility affects sales, service, reputation and compliance. A broken form or checkout can exclude part of the audience.</description>
    </item>
    <item>
      <title>Maintenance contract or one-off fix for a Drupal site</title>
      <link>https://webpro.company/blog/maintenance-contract-or-one-off-fix</link>
      <guid isPermaLink="true">https://webpro.company/blog/maintenance-contract-or-one-off-fix</guid>
      <pubDate>Tue, 21 Apr 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Drupal</category>
      <description>A one-off fix solves a bug. Maintenance reduces the chance of future bugs and security risk.</description>
    </item>
    <item>
      <title>GDPR on websites: why it also affects ordinary contact forms</title>
      <link>https://webpro.company/blog/gdpr-on-websites-practical-responsibility</link>
      <guid isPermaLink="true">https://webpro.company/blog/gdpr-on-websites-practical-responsibility</guid>
      <pubDate>Sat, 18 Apr 2026 06:00:00 GMT</pubDate>
      <category>GDPR</category>
      <description>GDPR is not only a legal document. Website forms, logs, cookies, accounts and online orders all involve personal data.</description>
    </item>
    <item>
      <title>What to ask a web developer before signing</title>
      <link>https://webpro.company/blog/what-to-ask-a-web-developer-before-signing</link>
      <guid isPermaLink="true">https://webpro.company/blog/what-to-ask-a-web-developer-before-signing</guid>
      <pubDate>Tue, 14 Apr 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <description>A good contract describes not only the result, but also responsibility, testing and handover.</description>
    </item>
    <item>
      <title>What a good web project brief contains</title>
      <link>https://webpro.company/blog/web-project-brief</link>
      <guid isPermaLink="true">https://webpro.company/blog/web-project-brief</guid>
      <pubDate>Sat, 11 Apr 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <description>A poor brief leads to wrong pricing, surprises mid-project and disputes at the end. A good brief does not need to be long — it needs to be precise.</description>
    </item>
    <item>
      <title>Why an old website can be a business risk</title>
      <link>https://webpro.company/blog/why-an-old-website-can-be-a-business-risk</link>
      <guid isPermaLink="true">https://webpro.company/blog/why-an-old-website-can-be-a-business-risk</guid>
      <pubDate>Tue, 07 Apr 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Security</category>
      <description>If a website works only as long as nobody changes it, it is already a business risk.</description>
    </item>
    <item>
      <title>Technical debt in web projects — how it builds and what it costs</title>
      <link>https://webpro.company/blog/technical-debt-in-web-projects</link>
      <guid isPermaLink="true">https://webpro.company/blog/technical-debt-in-web-projects</guid>
      <pubDate>Sat, 04 Apr 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Maintenance</category>
      <description>Technical debt does not come from carelessness — it comes from decisions that were reasonable at the time. The problem is that it is not measured or managed.</description>
    </item>
    <item>
      <title>Technical website audit before acquisition or provider change</title>
      <link>https://webpro.company/blog/technical-website-audit-before-acquisition-or-provider-change</link>
      <guid isPermaLink="true">https://webpro.company/blog/technical-website-audit-before-acquisition-or-provider-change</guid>
      <pubDate>Tue, 31 Mar 2026 06:00:00 GMT</pubDate>
      <category>Audit</category>
      <description>Changing providers is easier when the state of code, access and hosting is known first.</description>
    </item>
    <item>
      <title>Drupal security updates — why they cannot be postponed</title>
      <link>https://webpro.company/blog/how-drupal-security-updates-work</link>
      <guid isPermaLink="true">https://webpro.company/blog/how-drupal-security-updates-work</guid>
      <pubDate>Sat, 28 Mar 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Security</category>
      <category>Drupal</category>
      <description>Drupal publishes security updates through a structured process. Applying them requires Composer, testing and staged deployment — not just clicking update.</description>
    </item>
    <item>
      <title>Drupal roles, permissions and editorial workflow</title>
      <link>https://webpro.company/blog/drupal-roles-permissions-and-editorial-workflow</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-roles-permissions-and-editorial-workflow</guid>
      <pubDate>Tue, 24 Mar 2026 06:00:00 GMT</pubDate>
      <category>Security</category>
      <category>Drupal</category>
      <description>Permissions are not only about access. They affect content quality and security.</description>
    </item>
    <item>
      <title>Drupal vs WordPress — when to use which</title>
      <link>https://webpro.company/blog/drupal-vs-wordpress</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-vs-wordpress</guid>
      <pubDate>Sat, 21 Mar 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>Drupal and WordPress suit different projects. The question is not which is better, but which fits your specific requirements.</description>
    </item>
    <item>
      <title>When Drupal needs refactoring, not only an update</title>
      <link>https://webpro.company/blog/when-drupal-needs-refactoring</link>
      <guid isPermaLink="true">https://webpro.company/blog/when-drupal-needs-refactoring</guid>
      <pubDate>Tue, 17 Mar 2026 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>If the old solution blocks every change, a version upgrade alone may not solve the problem.</description>
    </item>
    <item>
      <title>What happens when a Drupal site is not updated</title>
      <link>https://webpro.company/blog/what-happens-when-drupal-is-not-updated</link>
      <guid isPermaLink="true">https://webpro.company/blog/what-happens-when-drupal-is-not-updated</guid>
      <pubDate>Sat, 14 Mar 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Security</category>
      <category>Drupal</category>
      <description>An outdated Drupal site does not break overnight, but the risk grows every month. Security vulnerabilities, end-of-life PHP, broken modules and rising remediation costs.</description>
    </item>
    <item>
      <title>Drupal cache, images and Core Web Vitals</title>
      <link>https://webpro.company/blog/drupal-cache-images-and-core-web-vitals</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-cache-images-and-core-web-vitals</guid>
      <pubDate>Tue, 10 Mar 2026 06:00:00 GMT</pubDate>
      <category>Performance</category>
      <category>Drupal</category>
      <description>Performance work starts with measurement, not random module installation.</description>
    </item>
    <item>
      <title>Drupal migration, upgrade or maintenance — how to choose</title>
      <link>https://webpro.company/blog/drupal-migration-upgrade-or-maintenance</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-migration-upgrade-or-maintenance</guid>
      <pubDate>Sat, 07 Mar 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Migration</category>
      <category>Maintenance</category>
      <description>Drupal maintenance, upgrade and migration are three different services for three different situations. The choice depends on where your site is today.</description>
    </item>
    <item>
      <title>Custom module audit before Drupal migration</title>
      <link>https://webpro.company/blog/custom-module-audit-before-drupal-migration</link>
      <guid isPermaLink="true">https://webpro.company/blog/custom-module-audit-before-drupal-migration</guid>
      <pubDate>Tue, 03 Mar 2026 06:00:00 GMT</pubDate>
      <category>Audit</category>
      <category>Migration</category>
      <category>Drupal</category>
      <description>Migration complexity often sits in custom code, not in Drupal core.</description>
    </item>
    <item>
      <title>Composer in a Drupal project: why it matters</title>
      <link>https://webpro.company/blog/composer-in-a-drupal-project</link>
      <guid isPermaLink="true">https://webpro.company/blog/composer-in-a-drupal-project</guid>
      <pubDate>Tue, 24 Feb 2026 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>Composer is not a convenience add-on. It is how Drupal dependencies stay repeatable and controlled.</description>
    </item>
    <item>
      <title>How to check if a Drupal module is risky</title>
      <link>https://webpro.company/blog/how-to-check-if-a-drupal-module-is-abandoned-or-risky</link>
      <guid isPermaLink="true">https://webpro.company/blog/how-to-check-if-a-drupal-module-is-abandoned-or-risky</guid>
      <pubDate>Tue, 17 Feb 2026 06:00:00 GMT</pubDate>
      <category>Security</category>
      <category>Drupal</category>
      <category>Audit</category>
      <description>One old module can keep the whole site stuck on an old version.</description>
    </item>
    <item>
      <title>European Accessibility Act and online shops</title>
      <link>https://webpro.company/blog/european-accessibility-act-online-shops</link>
      <guid isPermaLink="true">https://webpro.company/blog/european-accessibility-act-online-shops</guid>
      <pubDate>Tue, 10 Feb 2026 06:00:00 GMT</pubDate>
      <category>E-commerce</category>
      <category>WCAG</category>
      <description>An online shop must work when the customer uses a keyboard, screen reader or clear error messages.</description>
    </item>
    <item>
      <title>PHP version and Drupal hosting</title>
      <link>https://webpro.company/blog/php-version-and-drupal-hosting</link>
      <guid isPermaLink="true">https://webpro.company/blog/php-version-and-drupal-hosting</guid>
      <pubDate>Fri, 06 Feb 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Drupal</category>
      <category>Security</category>
      <description>Drupal maintenance is not only module updates. The server PHP version must also be supported and upgradeable.</description>
    </item>
    <item>
      <title>WCAG 2.2: what changed and what to check</title>
      <link>https://webpro.company/blog/wcag-22-practical-guide</link>
      <guid isPermaLink="true">https://webpro.company/blog/wcag-22-practical-guide</guid>
      <pubDate>Tue, 03 Feb 2026 06:00:00 GMT</pubDate>
      <category>WCAG</category>
      <description>WCAG 2.2 is not only about contrast. Many issues appear in forms, menus and keyboard navigation.</description>
    </item>
    <item>
      <title>Drupal audit checklist before development</title>
      <link>https://webpro.company/blog/drupal-audit-checklist-before-development</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-audit-checklist-before-development</guid>
      <pubDate>Tue, 27 Jan 2026 06:00:00 GMT</pubDate>
      <category>Audit</category>
      <category>Drupal</category>
      <description>An audit shows where the risks are before development starts and what work is actually needed.</description>
    </item>
    <item>
      <title>How to choose a Drupal maintenance partner</title>
      <link>https://webpro.company/blog/how-to-choose-a-drupal-maintenance-partner</link>
      <guid isPermaLink="true">https://webpro.company/blog/how-to-choose-a-drupal-maintenance-partner</guid>
      <pubDate>Tue, 20 Jan 2026 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Drupal</category>
      <description>A good maintenance partner does not only react to bugs. They reduce the chance of bugs reaching production.</description>
    </item>
    <item>
      <title>How much does a Drupal upgrade cost</title>
      <link>https://webpro.company/blog/drupal-upgrade-cost</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-upgrade-cost</guid>
      <pubDate>Tue, 13 Jan 2026 06:00:00 GMT</pubDate>
      <category>Migration</category>
      <category>Drupal</category>
      <description>Drupal upgrade cost is not defined by the version number alone, but by what the system actually contains.</description>
    </item>
    <item>
      <title>Drupal 10 end of life and Drupal 11 readiness</title>
      <link>https://webpro.company/blog/drupal-10-end-of-life-and-drupal-11-readiness</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-10-end-of-life-and-drupal-11-readiness</guid>
      <pubDate>Fri, 09 Jan 2026 06:00:00 GMT</pubDate>
      <category>Migration</category>
      <category>Drupal</category>
      <description>Drupal 10 end of life is not a reason to panic, but it is a reason to check readiness before the final month.</description>
    </item>
    <item>
      <title>Drupal 7 in 2026: what to do with an old site</title>
      <link>https://webpro.company/blog/drupal-7-in-2026-what-to-do</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-7-in-2026-what-to-do</guid>
      <pubDate>Tue, 06 Jan 2026 06:00:00 GMT</pubDate>
      <category>Migration</category>
      <category>Drupal</category>
      <category>Security</category>
      <description>A Drupal 7 site may still run, but technical and security risk grows every month.</description>
    </item>
    <item>
      <title>Drupal performance optimization — practical steps</title>
      <link>https://webpro.company/blog/drupal-performance-optimization</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-performance-optimization</guid>
      <pubDate>Sat, 15 Nov 2025 06:00:00 GMT</pubDate>
      <category>Performance</category>
      <category>Drupal</category>
      <description>A slow Drupal site is not Drupal&apos;s fault — most performance issues come from misconfigured caching, unoptimized queries or a poorly set up server.</description>
    </item>
    <item>
      <title>Drupal Commerce vs WooCommerce — which fits your online store?</title>
      <link>https://webpro.company/blog/drupal-commerce-vs-woocommerce</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-commerce-vs-woocommerce</guid>
      <pubDate>Wed, 22 Oct 2025 06:00:00 GMT</pubDate>
      <category>E-commerce</category>
      <category>Drupal</category>
      <description>WooCommerce suits a simple product-based store that needs to launch quickly. Drupal Commerce suits complex business logic or a site that does more than just sell.</description>
    </item>
    <item>
      <title>Drupal Search API — search that actually works</title>
      <link>https://webpro.company/blog/drupal-search-api</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-search-api</guid>
      <pubDate>Thu, 18 Sep 2025 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Drupal Core search works for a small site. When content volume is high and search needs to be fast and accurate, Search API + Solr is the standard solution.</description>
    </item>
    <item>
      <title>Drupal Paragraphs module — flexible content builder</title>
      <link>https://webpro.company/blog/paragraphs-module-drupal</link>
      <guid isPermaLink="true">https://webpro.company/blog/paragraphs-module-drupal</guid>
      <pubDate>Thu, 14 Aug 2025 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Paragraphs is one of the most widely used Drupal modules. It gives editors a flexible content builder without needing a developer for every change.</description>
    </item>
    <item>
      <title>Why Drupal suits the public sector</title>
      <link>https://webpro.company/blog/drupal-for-public-sector</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-for-public-sector</guid>
      <pubDate>Thu, 10 Jul 2025 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>WCAG</category>
      <category>GDPR</category>
      <description>Public sector websites must be secure, accessible and maintainable for years. Drupal meets these requirements better than most alternative CMS platforms.</description>
    </item>
    <item>
      <title>Website speed and conversion — the measurable connection</title>
      <link>https://webpro.company/blog/website-speed-conversion</link>
      <guid isPermaLink="true">https://webpro.company/blog/website-speed-conversion</guid>
      <pubDate>Thu, 05 Jun 2025 06:00:00 GMT</pubDate>
      <category>Performance</category>
      <category>UX</category>
      <description>Every second of load time reduces conversions by roughly 7%. This is not a hypothesis — it is a measured result from multiple large-scale platforms.</description>
    </item>
    <item>
      <title>How to evaluate whether your Drupal partner is doing good work</title>
      <link>https://webpro.company/blog/evaluating-drupal-development-partner</link>
      <guid isPermaLink="true">https://webpro.company/blog/evaluating-drupal-development-partner</guid>
      <pubDate>Thu, 08 May 2025 06:00:00 GMT</pubDate>
      <category>Audit</category>
      <category>Drupal</category>
      <description>Clients see the result — whether the site works and looks good. Technical quality is hidden. Here are the questions and signals that help evaluate it.</description>
    </item>
    <item>
      <title>European Accessibility Act 2025 — what it means for online stores</title>
      <link>https://webpro.company/blog/european-accessibility-act-2025</link>
      <guid isPermaLink="true">https://webpro.company/blog/european-accessibility-act-2025</guid>
      <pubDate>Thu, 03 Apr 2025 06:00:00 GMT</pubDate>
      <category>WCAG</category>
      <category>E-commerce</category>
      <description>From June 2025, the EAA is mandatory for all online stores selling to EU consumers. Non-compliance means fines and legal action.</description>
    </item>
    <item>
      <title>Drupal AI modules — what they actually do</title>
      <link>https://webpro.company/blog/drupal-ai-modules</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-ai-modules</guid>
      <pubDate>Thu, 13 Mar 2025 06:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Drupal</category>
      <description>AI modules for Drupal are no longer experimental — several have reached stable status and are in use on production sites.</description>
    </item>
    <item>
      <title>Drupal security in practice — what actually happens when you skip updates</title>
      <link>https://webpro.company/blog/drupal-security-in-practice</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-security-in-practice</guid>
      <pubDate>Thu, 06 Feb 2025 06:00:00 GMT</pubDate>
      <category>Security</category>
      <category>Drupal</category>
      <category>Maintenance</category>
      <description>Drupalgeddon, SA-CORE-2018-002, CVE-2020-13671 — these are not abstract code numbers. They are vulnerabilities that were exploited at scale. Here is what actually happens.</description>
    </item>
    <item>
      <title>Drupal security incident plan — what to do when your site is compromised</title>
      <link>https://webpro.company/blog/drupal-security-incident-plan</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-security-incident-plan</guid>
      <pubDate>Thu, 16 Jan 2025 06:00:00 GMT</pubDate>
      <category>Security</category>
      <category>Drupal</category>
      <category>Maintenance</category>
      <description>You cannot plan a security incident — but you can plan your response. Here is a clear plan for what to do when a Drupal site is compromised.</description>
    </item>
    <item>
      <title>Drupal backup restore test — why &quot;backup exists&quot; is not enough</title>
      <link>https://webpro.company/blog/drupal-backup-restore-test</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-backup-restore-test</guid>
      <pubDate>Thu, 02 Jan 2025 06:00:00 GMT</pubDate>
      <category>Security</category>
      <category>Drupal</category>
      <category>Maintenance</category>
      <description>Many organisations have a backup. Fewer have checked whether it actually works. Here is why a restore test is mandatory.</description>
    </item>
    <item>
      <title>Drupal Layout Builder vs Paragraphs — when to use which</title>
      <link>https://webpro.company/blog/drupal-layout-builder-vs-paragraphs</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-layout-builder-vs-paragraphs</guid>
      <pubDate>Tue, 10 Dec 2024 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Layout Builder is built into Drupal core, Paragraphs is a module. Both let editors control page structure — but the right choice depends on your project&apos;s needs.</description>
    </item>
    <item>
      <title>Drupal Views — what it is and when it falls short</title>
      <link>https://webpro.company/blog/drupal-views-when-it-falls-short</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-views-when-it-falls-short</guid>
      <pubDate>Mon, 18 Nov 2024 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Views lets you display, filter and sort Drupal content without writing code. But in more complex scenarios it hits its limits. Here is when.</description>
    </item>
    <item>
      <title>Drupal Migrate API — how to bring content from another system</title>
      <link>https://webpro.company/blog/drupal-migrate-api</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-migrate-api</guid>
      <pubDate>Thu, 24 Oct 2024 06:00:00 GMT</pubDate>
      <category>Migration</category>
      <category>Drupal</category>
      <category>Development</category>
      <description>Migrate API is Drupal&apos;s built-in migration framework. It lets you map, transform and import content from practically any source.</description>
    </item>
    <item>
      <title>Drupal configuration management — why config sync matters</title>
      <link>https://webpro.company/blog/drupal-configuration-management</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-configuration-management</guid>
      <pubDate>Thu, 05 Sep 2024 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <description>Without config sync, Drupal configuration lives only in the database — invisible, unversioned, unrecoverable. Config sync makes it visible.</description>
    </item>
    <item>
      <title>Drupal custom module development — when it makes sense and what it costs</title>
      <link>https://webpro.company/blog/drupal-custom-module-development-cost</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-custom-module-development-cost</guid>
      <pubDate>Wed, 14 Aug 2024 06:00:00 GMT</pubDate>
      <category>Development</category>
      <category>Drupal</category>
      <category>Custom development</category>
      <description>A custom module is the answer when existing modules do not cover the need. Here is when it is the sensible choice and what to budget for.</description>
    </item>
    <item>
      <title>How long does a Drupal project take — realistic timelines</title>
      <link>https://webpro.company/blog/drupal-project-timeline</link>
      <guid isPermaLink="true">https://webpro.company/blog/drupal-project-timeline</guid>
      <pubDate>Mon, 22 Jul 2024 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Development</category>
      <description>&quot;3 months&quot; is a common answer — but is it realistic? Here are honest timelines for different Drupal projects and what actually drives the schedule.</description>
    </item>
    <item>
      <title>What to do when the previous developer is gone — taking over a Drupal project</title>
      <link>https://webpro.company/blog/taking-over-drupal-from-previous-developer</link>
      <guid isPermaLink="true">https://webpro.company/blog/taking-over-drupal-from-previous-developer</guid>
      <pubDate>Wed, 19 Jun 2024 06:00:00 GMT</pubDate>
      <category>Maintenance</category>
      <category>Audit</category>
      <description>The previous developer has left a Drupal site behind with incomplete documentation. Here is how to handle the situation without losing anything important.</description>
    </item>
    <item>
      <title>Fixed price vs hourly rate — which suits a Drupal project</title>
      <link>https://webpro.company/blog/fixed-price-vs-hourly-drupal</link>
      <guid isPermaLink="true">https://webpro.company/blog/fixed-price-vs-hourly-drupal</guid>
      <pubDate>Wed, 15 May 2024 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Development</category>
      <description>Both pricing models are valid — but for different types of projects. Here is what to watch out for with each.</description>
    </item>
    <item>
      <title>How Drupal projects stall — and how to avoid it</title>
      <link>https://webpro.company/blog/why-drupal-projects-stall</link>
      <guid isPermaLink="true">https://webpro.company/blog/why-drupal-projects-stall</guid>
      <pubDate>Wed, 10 Apr 2024 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <category>Development</category>
      <description>Most projects do not stall because of bad code. They stall because of poor communication, unclear requirements, and unmet expectations.</description>
    </item>
    <item>
      <title>Screen reader testing — how to check accessibility in practice</title>
      <link>https://webpro.company/blog/screen-reader-testing-practice</link>
      <guid isPermaLink="true">https://webpro.company/blog/screen-reader-testing-practice</guid>
      <pubDate>Wed, 06 Mar 2024 06:00:00 GMT</pubDate>
      <category>WCAG</category>
      <category>Testing</category>
      <description>Automated tests find about 30% of accessibility issues. The rest can only be found by testing with a real screen reader. Here is how to get started.</description>
    </item>
    <item>
      <title>Accessibility audit — what it covers and what you get</title>
      <link>https://webpro.company/blog/accessibility-audit-what-it-covers</link>
      <guid isPermaLink="true">https://webpro.company/blog/accessibility-audit-what-it-covers</guid>
      <pubDate>Tue, 13 Feb 2024 06:00:00 GMT</pubDate>
      <category>WCAG</category>
      <category>Audit</category>
      <description>An accessibility audit is not just an automated scan. It is a systematic assessment that finds issues tools cannot see.</description>
    </item>
    <item>
      <title>Colour contrast and font choice — a practical accessibility guide</title>
      <link>https://webpro.company/blog/color-contrast-and-font-accessibility</link>
      <guid isPermaLink="true">https://webpro.company/blog/color-contrast-and-font-accessibility</guid>
      <pubDate>Thu, 18 Jan 2024 06:00:00 GMT</pubDate>
      <category>WCAG</category>
      <category>UX</category>
      <description>A poor colour combination means some users cannot read the text. WCAG sets clear minimum requirements — here is how to check them.</description>
    </item>
    <item>
      <title>Estonian businesses and GDPR — what the real requirements are</title>
      <link>https://webpro.company/blog/gdpr-requirements-estonian-websites</link>
      <guid isPermaLink="true">https://webpro.company/blog/gdpr-requirements-estonian-websites</guid>
      <pubDate>Thu, 14 Dec 2023 06:00:00 GMT</pubDate>
      <category>GDPR</category>
      <description>GDPR has been in force for several years but many Estonian websites still do not comply. Here is where to start practically.</description>
    </item>
    <item>
      <title>Which CMS platforms Estonian businesses use — and why Drupal stands out</title>
      <link>https://webpro.company/blog/cms-landscape-estonia</link>
      <guid isPermaLink="true">https://webpro.company/blog/cms-landscape-estonia</guid>
      <pubDate>Tue, 21 Nov 2023 06:00:00 GMT</pubDate>
      <category>Drupal</category>
      <description>Most Estonian websites use WordPress. More complex platforms often choose Drupal. Here is why and when that choice is justified.</description>
    </item>
  </channel>
</rss>
