<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhishek Bijjargi</title>
    <description>The latest articles on DEV Community by Abhishek Bijjargi (@abhi090907).</description>
    <link>https://dev.to/abhi090907</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3840188%2F84af831f-006d-44ba-aef2-48f47c26452c.png</url>
      <title>DEV Community: Abhishek Bijjargi</title>
      <link>https://dev.to/abhi090907</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhi090907"/>
    <language>en</language>
    <item>
      <title>From AI Assisted Exploration to a Wagtail Upgrade Agent</title>
      <dc:creator>Abhishek Bijjargi</dc:creator>
      <pubDate>Tue, 31 Mar 2026 12:37:02 +0000</pubDate>
      <link>https://dev.to/abhi090907/planning-a-wagtail-upgrade-for-bakerydemo-with-an-ai-guided-approach-7j7</link>
      <guid>https://dev.to/abhi090907/planning-a-wagtail-upgrade-for-bakerydemo-with-an-ai-guided-approach-7j7</guid>
      <description>&lt;h2&gt;
  
  
  Repositories
&lt;/h2&gt;

&lt;p&gt;Wagtail Upgrade Assistant (Agent): &lt;a href="https://github.com/Abhi090907/Wagtail-Upgrade-Assistant-agent/tree/main" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
Bakerydemo exploration: &lt;a href="https://github.com/Abhi090907/bakerydemo-maintenance-skill" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;   &lt;/p&gt;
&lt;h2&gt;
  
  
  Demo Video
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1WtdmRzPsAhnBhJ51QNT0ml8rUv9d70qs/view?usp=sharing" rel="noopener noreferrer"&gt;Demo Video for Bakerydemo exploration&lt;/a&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Upgrading a Wagtail project is rarely a straightforward process. It involves navigating breaking changes, deprecated APIs, dependency conflicts, and compatibility issues across Python and Django versions.&lt;/p&gt;

&lt;p&gt;As part of maintaining the Bakerydemo project, I initially explored how to approach this upgrade problem using an AI assisted workflow. The goal was to understand whether AI could provide a structured and reliable upgrade strategy.&lt;/p&gt;

&lt;p&gt;This post documents that journey, starting from prompt based exploration and evolving into a reusable AI agent designed specifically for Wagtail upgrades.&lt;/p&gt;


&lt;h2&gt;
  
  
  Objective
&lt;/h2&gt;

&lt;p&gt;The goal of this work was to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upgrade a Wagtail project to the latest version
&lt;/li&gt;
&lt;li&gt;Identify and handle deprecations
&lt;/li&gt;
&lt;li&gt;Ensure dependencies remain secure
&lt;/li&gt;
&lt;li&gt;Maintain a working CI pipeline after the upgrade
&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Initial Approach: AI Assisted Planning
&lt;/h2&gt;

&lt;p&gt;I started by providing the following prompt to an AI assistant:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am a maintainer of the bakerydemo project.&lt;br&gt;&lt;br&gt;
Help me:&lt;br&gt;&lt;br&gt;
Upgrade to the latest Wagtail version&lt;br&gt;&lt;br&gt;
Identify deprecations&lt;br&gt;&lt;br&gt;
Ensure dependencies are secure&lt;br&gt;&lt;br&gt;
Keep CI working after upgrade  &lt;/p&gt;

&lt;p&gt;Give step by step instructions specific to this project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The response outlined a structured upgrade strategy, which served as a strong starting point for understanding the process.&lt;/p&gt;


&lt;h2&gt;
  
  
  Key Insights from the AI
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Incremental Upgrades Instead of Direct Jump
&lt;/h3&gt;

&lt;p&gt;Rather than upgrading directly to the latest version, the AI recommended incremental upgrades across major versions.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current version to Wagtail 5
&lt;/li&gt;
&lt;li&gt;Then to Wagtail 6
&lt;/li&gt;
&lt;li&gt;Finally to Wagtail 7
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduces risk and simplifies debugging.&lt;/p&gt;


&lt;h3&gt;
  
  
  Dependency Alignment
&lt;/h3&gt;

&lt;p&gt;A critical requirement is aligning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python version
&lt;/li&gt;
&lt;li&gt;Django version
&lt;/li&gt;
&lt;li&gt;Wagtail version
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Incompatible combinations can lead to installation failures or runtime issues.&lt;/p&gt;


&lt;h3&gt;
  
  
  Handling Breaking Changes
&lt;/h3&gt;

&lt;p&gt;Common breaking changes included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Migration from &lt;code&gt;wagtail.core&lt;/code&gt; to &lt;code&gt;wagtail&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Changes in the panel API
&lt;/li&gt;
&lt;li&gt;StreamField configuration updates
&lt;/li&gt;
&lt;li&gt;Removal of legacy admin components
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These require manual code updates and cannot be fully automated.&lt;/p&gt;


&lt;h3&gt;
  
  
  Deprecation Awareness
&lt;/h3&gt;

&lt;p&gt;The AI emphasized identifying deprecated APIs early by enabling warnings and reviewing logs, allowing maintainers to fix issues proactively.&lt;/p&gt;


&lt;h3&gt;
  
  
  CI Stability
&lt;/h3&gt;

&lt;p&gt;Maintaining CI integrity during upgrades involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updating Python versions
&lt;/li&gt;
&lt;li&gt;Ensuring migrations run correctly
&lt;/li&gt;
&lt;li&gt;Verifying static file handling
&lt;/li&gt;
&lt;li&gt;Running test suites after dependency updates
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Limitation of the Initial Approach
&lt;/h2&gt;

&lt;p&gt;While the AI generated a solid plan, it had one limitation:&lt;/p&gt;

&lt;p&gt;It was not reusable.&lt;/p&gt;

&lt;p&gt;Each time, the process depended on re-entering prompts and manually interpreting results. This made it less practical for repeated use across projects.&lt;/p&gt;


&lt;h2&gt;
  
  
  From Prompt to Agent: Building a Reusable Solution
&lt;/h2&gt;

&lt;p&gt;To address this, I extended the idea into a dedicated tool:&lt;/p&gt;
&lt;h3&gt;
  
  
  Wagtail Upgrade Assistant
&lt;/h3&gt;

&lt;p&gt;A domain specific AI agent and CLI tool designed to automate the analysis phase of Wagtail upgrades.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/Abhi090907/Wagtail-Upgrade-Assistant-agent/tree/main" rel="noopener noreferrer"&gt;https://github.com/Abhi090907/Wagtail-Upgrade-Assistant-agent/tree/main&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What the Agent Does
&lt;/h2&gt;

&lt;p&gt;The Wagtail Upgrade Assistant transforms the earlier exploration into a reusable workflow.&lt;/p&gt;
&lt;h3&gt;
  
  
  Project Analysis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Detects Python, Django, and Wagtail versions
&lt;/li&gt;
&lt;li&gt;Parses dependency files such as requirements.txt
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Static Code Analysis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Identifies deprecated patterns such as:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;wagtail.core&lt;/code&gt; imports
&lt;/li&gt;
&lt;li&gt;legacy edit handlers
&lt;/li&gt;
&lt;li&gt;StreamField configuration issues (e.g., missing &lt;code&gt;use_json_field=True&lt;/code&gt;)
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Uses Python AST for accurate detection
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Upgrade Guidance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Suggests incremental upgrade paths
&lt;/li&gt;
&lt;li&gt;Highlights required code changes
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Dependency Audit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Flags outdated or incompatible packages
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  CI Recommendations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Provides GitHub Actions based suggestions
&lt;/li&gt;
&lt;li&gt;Ensures compatibility during upgrades &lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Recent Enhancement
&lt;/h2&gt;

&lt;p&gt;Based on feedback, I extended the analyzer to detect StreamField configuration issues.  &lt;/p&gt;

&lt;p&gt;The tool now identifies cases where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;use_json_field=True&lt;/code&gt; is missing
&lt;/li&gt;
&lt;li&gt;Deprecated imports such as &lt;code&gt;wagtail.core.fields&lt;/code&gt; are used
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  This makes the agent more aligned with real Wagtail upgrade requirements and improves its practical usefulness for maintainers.
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Example Workflow
&lt;/h2&gt;

&lt;p&gt;Run the CLI tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wagtail-upgrade-agent ./example_project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent generates a structured report including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current stack summary
&lt;/li&gt;
&lt;li&gt;Deprecated API usage with file references
&lt;/li&gt;
&lt;li&gt;Recommended upgrade path
&lt;/li&gt;
&lt;li&gt;Required code changes
&lt;/li&gt;
&lt;li&gt;Dependency updates
&lt;/li&gt;
&lt;li&gt;CI improvements
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This approach shifts the process from:&lt;/p&gt;

&lt;p&gt;Manual interpretation of AI responses  &lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;A repeatable and structured upgrade workflow  &lt;/p&gt;

&lt;p&gt;It allows maintainers to quickly assess upgrade complexity without manually scanning the entire codebase.&lt;/p&gt;




&lt;h2&gt;
  
  
  Observations
&lt;/h2&gt;

&lt;p&gt;During development and testing, a few practical challenges emerged:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment issues such as Python version compatibility
&lt;/li&gt;
&lt;li&gt;Dependency installation inconsistencies
&lt;/li&gt;
&lt;li&gt;The need for manual validation despite automated analysis
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These highlight that while AI and tooling can assist significantly, human oversight remains essential.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A structured upgrade strategy is critical for Wagtail projects
&lt;/li&gt;
&lt;li&gt;Incremental upgrades reduce risk and complexity
&lt;/li&gt;
&lt;li&gt;Dependency compatibility must be carefully managed
&lt;/li&gt;
&lt;li&gt;AI is effective for planning, but tools make it reusable
&lt;/li&gt;
&lt;li&gt;Combining AI with static analysis creates a practical workflow
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Upgrading Wagtail projects involves more than updating dependencies. It requires careful planning, awareness of framework changes, and maintaining system stability.&lt;/p&gt;

&lt;p&gt;Starting with an AI assisted exploration provided valuable insights. Extending that into a reusable agent transformed those insights into a practical tool.&lt;/p&gt;

&lt;p&gt;This progression from prompt to implementation demonstrates how AI can move beyond assistance and become part of a maintainable development workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Connect
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Abhi090907" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/abhishek-bijjargi-986479383/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Gmail: &lt;a href="mailto:abhishekbijjargi4@gmail.com"&gt;abhishekbijjargi4@gmail.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>ai</category>
      <category>wagtail</category>
      <category>django</category>
      <category>git</category>
    </item>
    <item>
      <title>Using AI Agent Skills to Simplify Wagtail Bakerydemo Maintenance</title>
      <dc:creator>Abhishek Bijjargi</dc:creator>
      <pubDate>Mon, 30 Mar 2026 12:46:49 +0000</pubDate>
      <link>https://dev.to/abhi090907/using-ai-agent-skills-to-simplify-wagtail-bakerydemo-maintenance-43jj</link>
      <guid>https://dev.to/abhi090907/using-ai-agent-skills-to-simplify-wagtail-bakerydemo-maintenance-43jj</guid>
      <description>&lt;h1&gt;
  
  
  Building an AI Agent Skill for Wagtail Bakerydemo Maintenance
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is an AI Agent Skill
&lt;/h2&gt;

&lt;p&gt;An AI agent skill is a structured markdown document that gives AI&lt;br&gt;
coding assistants like Claude, Cursor and GitHub Copilot contextual&lt;br&gt;
knowledge about a specific codebase. Instead of the AI having to&lt;br&gt;
read through your entire source code every time you ask a question,&lt;br&gt;
the skill file provides a curated reference covering project&lt;br&gt;
structure, common tasks, conventions and known issues.&lt;/p&gt;

&lt;p&gt;Wagtail recently published a blog post about agent skills for&lt;br&gt;
upgrading Wagtail sites. As part of my GSoC 2026 application for&lt;br&gt;
the Demo Website Redesign project, I wrote one specifically for&lt;br&gt;
maintaining the bakerydemo codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Bakerydemo Needs This
&lt;/h2&gt;

&lt;p&gt;The bakerydemo serves two critical purposes for the Wagtail&lt;br&gt;
project. It is the primary demonstration tool for developers and&lt;br&gt;
organisations evaluating Wagtail, and it is the standard local&lt;br&gt;
development environment for Wagtail contributors. &lt;/p&gt;

&lt;p&gt;Maintaining it involves recurring tasks like updating dependencies,&lt;br&gt;
managing content fixtures, modifying templates and checking&lt;br&gt;
accessibility. An AI agent skill that understands the bakerydemo&lt;br&gt;
structure means any contributor can get accurate, context-aware&lt;br&gt;
assistance for these tasks without needing deep familiarity with&lt;br&gt;
the codebase first.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Skill Covers
&lt;/h2&gt;

&lt;p&gt;The skill I wrote covers the following areas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project structure&lt;/strong&gt; — a complete map of the bakerydemo directory&lt;br&gt;
tree explaining what each folder and file contains and what it is&lt;br&gt;
responsible for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common maintenance tasks&lt;/strong&gt; — step by step guidance for updating&lt;br&gt;
dependencies, adding new content fixtures, modifying templates,&lt;br&gt;
running tests and checking accessibility compliance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wagtail specific concepts&lt;/strong&gt; — explanations of StreamField,&lt;br&gt;
the image library, snippets and search as they are used in the&lt;br&gt;
bakerydemo specifically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development environment&lt;/strong&gt; — how to set up the Docker based&lt;br&gt;
development environment and the simpler local setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull request guidelines&lt;/strong&gt; — what is expected when submitting&lt;br&gt;
contributions to the bakerydemo repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common errors and solutions&lt;/strong&gt; — the most frequent issues&lt;br&gt;
contributors encounter and exactly how to fix them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I started by spending several hours reading through the bakerydemo&lt;br&gt;
codebase on GitHub. I mapped out the project structure, read through&lt;br&gt;
the models, templates and fixture files, and noted down all the&lt;br&gt;
Wagtail-specific patterns used throughout the project.&lt;/p&gt;

&lt;p&gt;I then set up the full bakerydemo development environment locally&lt;br&gt;
using Docker, which gave me hands-on familiarity with the setup&lt;br&gt;
process and the errors that new contributors typically encounter.&lt;br&gt;
I documented these errors and their solutions directly in the skill.&lt;/p&gt;

&lt;p&gt;Finally I structured all of this knowledge into a markdown document&lt;br&gt;
following the format that AI coding assistants respond to most&lt;br&gt;
effectively — clear headings, concrete code examples and explicit&lt;br&gt;
step-by-step instructions rather than vague general guidance.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Skill File
&lt;/h2&gt;

&lt;p&gt;The complete skill is available as a public GitHub Gist here:&lt;br&gt;
&lt;a href="https://gist.github.com/Abhi090907/d247cccf90972c069e13d7ac47989f15" rel="noopener noreferrer"&gt;GitHub Gist&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use It
&lt;/h2&gt;

&lt;p&gt;If you are using Cursor, open the bakerydemo project and paste&lt;br&gt;
the skill content into the Cursor context or reference the gist&lt;br&gt;
URL directly in your prompt.&lt;/p&gt;

&lt;p&gt;If you are using Claude, paste the skill content at the start of&lt;br&gt;
your conversation before asking maintenance questions.&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;/p&gt;

&lt;p&gt;"Using this bakerydemo maintenance skill: &lt;a href="https://gist.github.com/Abhi090907/d247cccf90972c069e13d7ac47989f15" rel="noopener noreferrer"&gt;GitHub Gist&lt;/a&gt;, help me&lt;br&gt;
add a new page type for a Special Offers section. What files&lt;br&gt;
do I need to create or modify?"&lt;/p&gt;

&lt;p&gt;The AI will then give you accurate, bakerydemo-specific guidance&lt;br&gt;
referencing the correct file paths, Wagtail conventions and&lt;br&gt;
project structure without needing to read the source code itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  DEMO
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Claude
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1fO6t9wQ65MNOEN1Z9ytGK8Ltd_5ER3d0/view?usp=drive_link" rel="noopener noreferrer"&gt;Demo Video&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  For Anti Gravity
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr3k0ot0dx4o7nlz5lsya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr3k0ot0dx4o7nlz5lsya.png" alt="Prompt" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementation Plan provided by AI
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Implementation Plan: Add Special Offers Page Type
&lt;/h2&gt;

&lt;p&gt;Based on the prompt, we are adding a new "Special Offers" section to the existing &lt;code&gt;bakerydemo&lt;/code&gt; repository (&lt;code&gt;bakery-demo-skill-test&lt;/code&gt;).&lt;/p&gt;


&lt;h3&gt;
  
  
  User Review Required
&lt;/h3&gt;

&lt;p&gt;Since this introduces a new app into the codebase, please review the plan below.&lt;br&gt;&lt;br&gt;
Once approved, the implementation can be executed step-by-step.&lt;/p&gt;


&lt;h3&gt;
  
  
  Proposed Changes
&lt;/h3&gt;

&lt;p&gt;Following the &lt;code&gt;SKILL.md&lt;/code&gt; guidelines, this involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scaffolding a new Django app within the Wagtail structure
&lt;/li&gt;
&lt;li&gt;Creating templates using accessible patterns
&lt;/li&gt;
&lt;li&gt;Validating via test cases
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Core Settings
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;[MODIFY]&lt;/strong&gt; &lt;code&gt;bakerydemo/settings/base.py&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;'bakerydemo.special_offers'&lt;/code&gt; to &lt;code&gt;INSTALLED_APPS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;This ensures Wagtail detects the new models
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  New App: &lt;code&gt;special_offers&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;[NEW]&lt;/strong&gt; &lt;code&gt;bakerydemo/special_offers/__init__.py&lt;/code&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empty file to declare module
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[NEW]&lt;/strong&gt; &lt;code&gt;bakerydemo/special_offers/models.py&lt;/code&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SpecialOfferIndexPage&lt;/code&gt; → parent container
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SpecialOfferPage&lt;/code&gt; → individual offer page
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;StreamField&lt;/code&gt; for flexible content
&lt;/li&gt;
&lt;li&gt;Integrate Wagtail image library
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Templates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;[NEW]&lt;/strong&gt; &lt;code&gt;templates/special_offers/special_offer_index_page.html&lt;/code&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extend &lt;code&gt;{% extends "base.html" %}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Loop through child pages
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;{% image %}&lt;/code&gt; and &lt;code&gt;{% pageurl %}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[NEW]&lt;/strong&gt; &lt;code&gt;templates/special_offers/special_offer_page.html&lt;/code&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extend &lt;code&gt;base.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Render &lt;code&gt;StreamField&lt;/code&gt; blocks
&lt;/li&gt;
&lt;li&gt;Include accessibility-friendly structure
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Tests
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;[NEW]&lt;/strong&gt; &lt;code&gt;bakerydemo/special_offers/tests.py&lt;/code&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic &lt;code&gt;TestCase&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Validate model instantiation
&lt;/li&gt;
&lt;li&gt;Ensure compatibility with:&lt;/li&gt;
&lt;/ul&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py &lt;span class="nb"&gt;test &lt;/span&gt;bakerydemo.special_offers
&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  Open Questions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Should &lt;code&gt;SpecialOfferPage&lt;/code&gt; include:

&lt;ul&gt;
&lt;li&gt;discount percentage?&lt;/li&gt;
&lt;li&gt;expiration date?&lt;/li&gt;
&lt;li&gt;or just flexible content?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Verification Plan
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Automated:&lt;/strong&gt;&lt;/p&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py makemigrations special_offers
python manage.py migrate
python manage.py &lt;span class="nb"&gt;test &lt;/span&gt;bakerydemo.special_offers
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Accessibility Checklist:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images must include meaningful &lt;code&gt;alt&lt;/code&gt; text
&lt;/li&gt;
&lt;li&gt;Forms must have proper &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; tags
&lt;/li&gt;
&lt;li&gt;Ensure WCAG AA contrast compliance
&lt;/li&gt;
&lt;li&gt;Full keyboard navigation support
&lt;/li&gt;
&lt;li&gt;Unique and descriptive page titles
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Relevance to the GSoC Project
&lt;/h2&gt;

&lt;p&gt;As part of the Demo Website Redesign project I plan to work on&lt;br&gt;
during GSoC 2026, I will be introducing new templates, content&lt;br&gt;
fixtures and possibly new page types. Updating the agent skill&lt;br&gt;
as part of this work means future contributors and maintainers&lt;br&gt;
will have an accurate reference for working with the new structures&lt;br&gt;
using AI assistance.&lt;/p&gt;

&lt;p&gt;This is a small contribution now but has compounding value over&lt;br&gt;
time as more contributors use AI coding tools in their workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  My GSoC Application
&lt;/h2&gt;

&lt;p&gt;I am applying for Google Summer of Code 2026 with Wagtail for the&lt;br&gt;
Demo Website Redesign project. If you are also going through the&lt;br&gt;
application process feel free to reach out on the Wagtail Slack&lt;br&gt;
or GitHub.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Abhi090907" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
Dev.to: &lt;a href="https://dev.to/abhi090907"&gt;Dev.to&lt;/a&gt;&lt;br&gt;
Wagtail participant file: &lt;a href="https://github.com/wagtail/gsoc/blob/main/2026/participants/Abhi090907.md" rel="noopener noreferrer"&gt;Wagtail&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/abhishek-bijjargi-986479383/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wagtail</category>
      <category>git</category>
      <category>github</category>
      <category>ai</category>
    </item>
    <item>
      <title>Setting Up Wagtail as a GSoC 2026 Applicant — From Zero to Dev Environment</title>
      <dc:creator>Abhishek Bijjargi</dc:creator>
      <pubDate>Mon, 23 Mar 2026 13:43:50 +0000</pubDate>
      <link>https://dev.to/abhi090907/setting-up-wagtail-as-a-gsoc-2026-applicant-from-zero-to-dev-environmentpublished-true-4ogm</link>
      <guid>https://dev.to/abhi090907/setting-up-wagtail-as-a-gsoc-2026-applicant-from-zero-to-dev-environmentpublished-true-4ogm</guid>
      <description>&lt;h1&gt;
  
  
  Setting Up Wagtail as a GSoC 2026 Applicant — From Zero to Dev Environment
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Who am I
&lt;/h2&gt;

&lt;p&gt;My name is Abhishek Bijjargi and I am a first year B.Tech Computer &lt;br&gt;
Science student at COEPTech University, Pune, India. I am applying &lt;br&gt;
for Google Summer of Code 2026 with Wagtail and this post documents &lt;br&gt;
my complete journey of setting up the Wagtail development environment &lt;br&gt;
from scratch on Windows — including every challenge I hit and how I &lt;br&gt;
solved it.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Wagtail
&lt;/h2&gt;

&lt;p&gt;Wagtail is one of the most widely used open source CMS platforms built &lt;br&gt;
on top of Django and Python. As someone who has built full stack &lt;br&gt;
projects using Django — including CyberVision, a cybersecurity scanning &lt;br&gt;
platform — Wagtail felt like a natural fit for GSoC 2026. The community &lt;br&gt;
is welcoming, the codebase is mature and well structured, and the &lt;br&gt;
project ideas are genuinely impactful.&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 1 — Completing the Django Tutorial
&lt;/h2&gt;

&lt;p&gt;Before touching Wagtail, I completed the official Django 6.0 tutorial &lt;br&gt;
which is a mandatory requirement for Wagtail GSoC applicants. This &lt;br&gt;
covered building a fully functional polls web application from scratch.&lt;/p&gt;
&lt;h3&gt;
  
  
  What the tutorial covered
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Setting up a Django project and app structure&lt;/li&gt;
&lt;li&gt;Creating models and running migrations&lt;/li&gt;
&lt;li&gt;Building views, templates and URL routing&lt;/li&gt;
&lt;li&gt;Setting up the Django admin panel&lt;/li&gt;
&lt;li&gt;Adding static files and CSS styling&lt;/li&gt;
&lt;li&gt;Writing automated tests&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Running it
&lt;/h3&gt;

&lt;p&gt;After completing the tutorial my polls app was live at &lt;br&gt;
&lt;code&gt;http://127.0.0.1:8000/polls/&lt;/code&gt; with a green background, working &lt;br&gt;
voting functionality and a fully functional admin panel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1iSV1H453Mbcy4kMLE8qSdX6qA3h9-GgY/view?usp=sharing" rel="noopener noreferrer"&gt;Wagtail Bakery tutorial with admin panel (video)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The completed Django tutorial repository is here:&lt;br&gt;
&lt;a href="https://github.com/Abhi090907/django-polls-tutorial" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 2 — Wagtail Bakery Demo Tutorial
&lt;/h2&gt;

&lt;p&gt;With Django basics solid, I moved to the Wagtail Bakery Demo — the &lt;br&gt;
official demonstration site that Wagtail requires all GSoC applicants &lt;br&gt;
to set up.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1 — Clone the Bakery Demo
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/wagtail/bakerydemo.git
&lt;span class="nb"&gt;cd &lt;/span&gt;bakerydemo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2 — Create and activate a virtual environment
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3 — Install dependencies
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements/development.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This takes a few minutes as it pulls in Wagtail and all its &lt;br&gt;
dependencies.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4 — Create local config files
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;copy bakerydemo&lt;span class="se"&gt;\s&lt;/span&gt;ettings&lt;span class="se"&gt;\l&lt;/span&gt;ocal.py.example bakerydemo&lt;span class="se"&gt;\s&lt;/span&gt;ettings&lt;span class="se"&gt;\l&lt;/span&gt;ocal.py
copy .env.example .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 5 — Set up the database and load demo data
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py migrate
python manage.py load_initial_data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 6 — Run the server
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The Wagtail Bakery demo site was now live at &lt;code&gt;http://127.0.0.1:8000/&lt;/code&gt; &lt;br&gt;
with a full bakery website including bread listings, blog posts and &lt;br&gt;
location pages.&lt;/p&gt;

&lt;p&gt;Admin credentials: username &lt;code&gt;admin&lt;/code&gt; / password &lt;code&gt;changeme&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 3 — Wagtail Dev Environment Setup via Docker
&lt;/h2&gt;

&lt;p&gt;This was the most involved part. Setting up Wagtail's actual source &lt;br&gt;
code for contributing requires Docker on Windows. Here is the exact &lt;br&gt;
process I followed.&lt;/p&gt;
&lt;h3&gt;
  
  
  Why Docker
&lt;/h3&gt;

&lt;p&gt;On Windows, Wagtail's development environment is best set up using &lt;br&gt;
Docker. The docker-wagtail-develop repository provides everything &lt;br&gt;
needed — the Wagtail source code, the bakery demo site, Elasticsearch, &lt;br&gt;
PostgreSQL and a frontend builder all wired together.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1 — Clone the required repositories
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;wagtail-contrib
&lt;span class="nb"&gt;cd &lt;/span&gt;wagtail-contrib
git clone https://github.com/wagtail/docker-wagtail-develop.git wagtail-dev
&lt;span class="nb"&gt;cd &lt;/span&gt;wagtail-dev
git clone https://github.com/wagtail/bakerydemo.git
git clone https://github.com/wagtail/wagtail.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2 — Clone the missing Willow library
&lt;/h3&gt;

&lt;p&gt;This step is not documented anywhere officially but is required. &lt;br&gt;
Without it Docker compose will fail with a &lt;code&gt;/libs/Willow: not found&lt;/code&gt; &lt;br&gt;
error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;libs
&lt;span class="nb"&gt;cd &lt;/span&gt;libs
git clone https://github.com/wagtail/Willow.git Willow
&lt;span class="nb"&gt;cd&lt;/span&gt; ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3 — Start Docker containers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This downloads and builds all required images including Elasticsearch, &lt;br&gt;
PostgreSQL, the Node.js frontend builder and the Python web container. &lt;br&gt;
The first run takes around 15 to 20 minutes — be patient here.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4 — Run migrations and load data
&lt;/h3&gt;

&lt;p&gt;In a second terminal window while the first is still running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose &lt;span class="nb"&gt;exec &lt;/span&gt;web python manage.py migrate
docker compose &lt;span class="nb"&gt;exec &lt;/span&gt;web python manage.py load_initial_data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5 — Verify the setup
&lt;/h3&gt;

&lt;p&gt;Visited &lt;code&gt;http://localhost:8000/&lt;/code&gt; and saw the Wagtail Bakery site &lt;br&gt;
running on my local copy of Wagtail's source code.&lt;/p&gt;

&lt;p&gt;This means any edits I make to the Wagtail source code in the &lt;br&gt;
&lt;code&gt;wagtail&lt;/code&gt; folder will immediately reflect on the running site — &lt;br&gt;
perfect for contributing.&lt;/p&gt;


&lt;h2&gt;
  
  
  Challenges I Faced and How I Fixed Them
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Challenge 1 — setup.sh not running on Windows
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;./setup.sh&lt;/code&gt; script failed in Command Prompt with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="s1"&gt;'.'&lt;/span&gt; &lt;span class="kd"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kd"&gt;recognized&lt;/span&gt; &lt;span class="kd"&gt;as&lt;/span&gt; &lt;span class="kd"&gt;an&lt;/span&gt; &lt;span class="kd"&gt;internal&lt;/span&gt; &lt;span class="kd"&gt;or&lt;/span&gt; &lt;span class="kd"&gt;external&lt;/span&gt; &lt;span class="kd"&gt;command&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fix: Manually cloned each required repository individually instead &lt;br&gt;
of relying on the shell script.&lt;/p&gt;
&lt;h3&gt;
  
  
  Challenge 2 — Missing Willow library
&lt;/h3&gt;

&lt;p&gt;Docker compose failed with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/libs/Willow: not found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fix: Manually cloned the Willow repository from GitHub into a &lt;code&gt;libs&lt;/code&gt; &lt;br&gt;
folder inside the &lt;code&gt;wagtail-dev&lt;/code&gt; directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 3 — Wagtail admin CSS missing warning
&lt;/h3&gt;

&lt;p&gt;Got a warning about missing admin CSS files on startup. This resolved &lt;br&gt;
automatically once the frontend Docker container finished building the &lt;br&gt;
static assets — which takes around 20 minutes on first run.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Setting up a production-grade open source development environment on &lt;br&gt;
Windows is significantly different from setting up a personal project. &lt;br&gt;
It requires understanding Docker containers, volume mounts, service &lt;br&gt;
dependencies and multi-container orchestration. This experience gave &lt;br&gt;
me real confidence that I can navigate Wagtail's codebase and &lt;br&gt;
contribute meaningfully.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Projects
&lt;/h2&gt;

&lt;p&gt;As part of my GSoC 2026 application preparation I have also built:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CyberVision&lt;/strong&gt; — AI powered cybersecurity scanning platform using &lt;br&gt;
Django, OpenCV, Docker, Celery and AI integrations&lt;br&gt;
&lt;a href="https://github.com/Abhi090907/CyberVision" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LendSynthetix&lt;/strong&gt; — Multi-agent AI credit underwriting engine using &lt;br&gt;
LangGraph, XGBoost and RAG&lt;br&gt;
&lt;a href="https://github.com/Abhi090907/lendsynthetix" rel="noopener noreferrer"&gt;GitHUb&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Django Polls Tutorial&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/Abhi090907/django-polls-tutorial" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Find and fix a good first issue in the Wagtail repository&lt;/li&gt;
&lt;li&gt;Submit my GSoC 2026 proposal draft for mentor feedback&lt;/li&gt;
&lt;li&gt;Continue engaging with the Wagtail community on Slack&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Connect
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Abhi090907" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
Email: &lt;a href="mailto:abhishekbijjargi4@gmail.com"&gt;abhishekbijjargi4@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are also applying for GSoC 2026 with Wagtail feel free to &lt;br&gt;
reach out — happy to compare notes!&lt;/p&gt;

</description>
      <category>wagtail</category>
      <category>opensource</category>
      <category>django</category>
      <category>python</category>
    </item>
  </channel>
</rss>
