<?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: Merdas369</title>
    <description>The latest articles on DEV Community by Merdas369 (@merdas369).</description>
    <link>https://dev.to/merdas369</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3962549%2Ff0f9e2d5-2f13-4dee-89d9-8f1d631e37a4.png</url>
      <title>DEV Community: Merdas369</title>
      <link>https://dev.to/merdas369</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/merdas369"/>
    <language>en</language>
    <item>
      <title>How I Learned About Context Processors in Django 🚀</title>
      <dc:creator>Merdas369</dc:creator>
      <pubDate>Wed, 17 Jun 2026 15:59:48 +0000</pubDate>
      <link>https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h</link>
      <guid>https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h</guid>
      <description>&lt;p&gt;How I Learned About Context Processors in Django 🚀&lt;/p&gt;

&lt;p&gt;I'm currently working on an online accessories shop with Django. While building the project, I created a navbar that displayed all product categories. At first, the navbar was hard-coded, and everything seemed fine.&lt;/p&gt;

&lt;p&gt;Then I realized a problem 🤔.&lt;/p&gt;

&lt;p&gt;If I added a new category in the future, I would have to manually update the navbar every time. That didn't feel right.&lt;/p&gt;

&lt;p&gt;My first idea was to pass the categories through the context in my product list view. But after thinking more carefully, I noticed another issue: every page that needed the navbar would require the same context data.&lt;/p&gt;

&lt;p&gt;That meant repeating the same code across multiple views, which would quickly become messy and difficult to maintain.&lt;/p&gt;

&lt;p&gt;After doing some research, I discovered Django Context Processors, and it turned out to be exactly the solution I needed. 🎉&lt;/p&gt;

&lt;p&gt;What are Context Processors?&lt;/p&gt;

&lt;p&gt;Context processors are similar to the context data we pass from views, but they make data available globally to templates.&lt;/p&gt;

&lt;p&gt;They're useful when you have data that should be accessible in many templates, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigation categories&lt;/li&gt;
&lt;li&gt;Site settings&lt;/li&gt;
&lt;li&gt;User notifications&lt;/li&gt;
&lt;li&gt;Shopping cart information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A context processor is simply a Python function that accepts a "request" object and returns a dictionary.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;custom_context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;custom_value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello from context processors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Registering the Context Processor&lt;/p&gt;

&lt;p&gt;After creating the function, you need to register it in your Django settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;TEMPLATES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;BACKEND&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.template.backends.django.DjangoTemplates&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;DIRS&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BASE_DIR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;templates&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;APP_DIRS&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;OPTIONS&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;context_processors&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="c1"&gt;# Other context processors
&lt;/span&gt;                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;myapp.context_processors.custom_context&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using It in Templates&lt;/p&gt;

&lt;p&gt;Once registered, the returned values become available in your templates automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jinja"&gt;&lt;code&gt;&lt;span class="cp"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;custom_value&lt;/span&gt; &lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No need to pass the same data from every view anymore. 🎯&lt;/p&gt;

&lt;p&gt;For my project, this was the perfect way to make category data available to the navbar across the entire site without duplicating code.&lt;/p&gt;

&lt;p&gt;Sometimes while building a feature, you run into a problem that teaches you a Django concept you never knew existed. For me, that concept was Context Processors.&lt;/p&gt;

</description>
      <category>django</category>
      <category>webdev</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Django Debug Toolbar + Docker: The Missing INTERNAL_IPS Problem</title>
      <dc:creator>Merdas369</dc:creator>
      <pubDate>Sat, 13 Jun 2026 14:19:00 +0000</pubDate>
      <link>https://dev.to/merdas369/django-debug-toolbar-docker-the-missing-internalips-problem-5akf</link>
      <guid>https://dev.to/merdas369/django-debug-toolbar-docker-the-missing-internalips-problem-5akf</guid>
      <description>&lt;p&gt;Django Debug Toolbar Didn't Appear When Running Django in Docker&lt;/p&gt;

&lt;p&gt;I'm currently working on an online accessories shop as a personal project. I usually use Django Debug Toolbar in all of my Django projects, so setting it up is almost automatic for me.&lt;/p&gt;

&lt;p&gt;This time, however, my project was running inside Docker.&lt;/p&gt;

&lt;p&gt;After preparing everything and starting the containers, I opened the browser and noticed that the Django Debug Toolbar panel wasn't showing up.&lt;/p&gt;

&lt;p&gt;My first thought was that I had missed a setup step, so I went back to the Django Debug Toolbar documentation and checked everything again. I followed the installation guide step by step and verified all the settings. Everything looked correct, but the toolbar still didn't appear.&lt;/p&gt;

&lt;p&gt;After searching online for a while, I found the real cause.&lt;/p&gt;

&lt;p&gt;Django Debug Toolbar only appears when the request comes from an IP address listed in "INTERNAL_IPS". Normally, when running Django locally, "127.0.0.1" or "localhost" is enough.&lt;/p&gt;

&lt;p&gt;With Docker, things are a little different. The request doesn't always come from the usual local address, so Debug Toolbar may think the request is coming from an external IP and refuse to display itself.&lt;/p&gt;

&lt;p&gt;To discover the actual IP address reaching Django, I created a simple view:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;django.http&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;HttpResponse&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;HttpResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;META&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;REMOTE_ADDR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When I visited that endpoint, the response was:&lt;/p&gt;

&lt;p&gt;172.18.0.1&lt;/p&gt;

&lt;p&gt;After adding that IP address to "INTERNAL_IPS":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;INTERNAL_IPS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;127.0.0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;172.18.0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the Django Debug Toolbar appeared perfectly in the browser.&lt;/p&gt;

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

&lt;p&gt;This issue reminded me of an important debugging lesson:&lt;/p&gt;

&lt;p&gt;When something that normally works suddenly stops working after introducing a new tool or layer (such as Docker), don't assume the original tool is broken. Sometimes the new component changes the environment in a way that affects the existing behavior.&lt;/p&gt;

&lt;p&gt;In my case, Django Debug Toolbar was working exactly as designed. Docker simply changed where the request was coming from.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>django</category>
      <category>docker</category>
      <category>debug</category>
    </item>
    <item>
      <title>Using AI as a Project Manager Instead of a Code Generator</title>
      <dc:creator>Merdas369</dc:creator>
      <pubDate>Fri, 12 Jun 2026 15:32:56 +0000</pubDate>
      <link>https://dev.to/merdas369/using-ai-as-a-project-manager-instead-of-a-code-generator-59n0</link>
      <guid>https://dev.to/merdas369/using-ai-as-a-project-manager-instead-of-a-code-generator-59n0</guid>
      <description>&lt;p&gt;I Don't Use AI to Write My Code — I Use It as My Project Manager&lt;br&gt;
Over the past year, AI has become a common tool among developers. Some developers use it to generate code, write tests, explain concepts, or even build entire applications from prompts.&lt;br&gt;
My approach is a little different.&lt;br&gt;
I don't primarily use AI to write my code. Instead, I use it as a project manager.&lt;br&gt;
The Problem&lt;br&gt;
One challenge many developers face is not writing code itself. The bigger challenge is knowing what to build next.&lt;br&gt;
When starting a new project, there are usually dozens of decisions to make:&lt;br&gt;
What should the architecture look like?&lt;br&gt;
Which features should be built first?&lt;br&gt;
What models are needed?&lt;br&gt;
What can be postponed?&lt;br&gt;
How should the project be organized?&lt;br&gt;
What are the milestones?&lt;br&gt;
As solo developers, we often play multiple roles at once: developer, designer, architect, tester, and project manager.&lt;br&gt;
This is where AI has become extremely valuable for me.&lt;br&gt;
How I Use AI&lt;br&gt;
When I start a project, I explain the project requirements to AI in detail.&lt;br&gt;
For example, I recently started building an e-commerce application using Django, HTMX, Alpine.js, Tailwind CSS, PostgreSQL, Redis, and Docker.&lt;br&gt;
Instead of asking AI to generate the entire project, I ask it to act as a senior project manager and technical lead.&lt;br&gt;
I provide:&lt;br&gt;
Project goals&lt;br&gt;
Features&lt;br&gt;
Technical stack&lt;br&gt;
Constraints&lt;br&gt;
Business requirements&lt;br&gt;
Then I ask AI to create a roadmap.&lt;br&gt;
The roadmap is usually divided into phases such as:&lt;br&gt;
Foundation and setup&lt;br&gt;
Product domain&lt;br&gt;
Cart and checkout&lt;br&gt;
Payments&lt;br&gt;
User accounts&lt;br&gt;
Admin features&lt;br&gt;
Deployment&lt;br&gt;
After finishing a phase, I return and ask for the next phase.&lt;br&gt;
AI then gives me a list of tasks that I can complete one by one.&lt;br&gt;
Why This Works for Me&lt;br&gt;
There are several reasons I prefer this approach.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I Learn More
If AI generates every file and function, I often find myself copying code without deeply understanding it.
By implementing features myself, I stay involved in the technical decisions and understand how everything works.&lt;/li&gt;
&lt;li&gt;I Stay Organized
Large projects can become overwhelming.
Having a roadmap and a clear list of tasks removes the feeling of "What should I do next?"
I simply focus on the current task.&lt;/li&gt;
&lt;li&gt;Better Project Structure
AI can help identify missing pieces that I might overlook.
For example:
SEO requirements
Inventory management
Database relationships
Deployment preparation
Security considerations
Having another "brain" reviewing the project plan can be very helpful.&lt;/li&gt;
&lt;li&gt;It Feels Like Working With a Team Lead
As a solo developer, there is nobody assigning tasks or reviewing the overall direction.
Using AI as a project manager creates a workflow that feels closer to working in a team.
I still write the code, make the decisions, and solve the problems, but I have guidance when planning the next steps.
The Downsides
Of course, this approach is not perfect.
AI can sometimes:
Suggest unnecessary complexity
Miss business requirements
Create unrealistic roadmaps
Recommend tools that don't fit the project
Because of that, I never follow its suggestions blindly.
I treat the roadmap as advice, not as instructions.
Ultimately, I am responsible for the project.
My Current Workflow
My workflow usually looks like this:
Define the project requirements.
Ask AI to create a roadmap.
Break the roadmap into phases.
Complete one phase at a time.
Return to AI for the next set of tasks.
Implement everything manually.
Review and adjust the plan when needed.
This gives me the structure of a project manager while keeping the learning and coding experience in my own hands.
A Question for Other Developers
I'm curious how other developers feel about this approach.
Most discussions about AI focus on code generation, but I rarely see people talking about using AI as a project manager, roadmap creator, or technical planner.
Do you think this is a good way to use AI in software development?
Would you trust AI to organize your projects and define your roadmap while still writing the code yourself?
I'd love to hear how you're using AI in your development workflow.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🚀 Why I Love Building Modern Web Apps with Django + HTMX + Alpine.js</title>
      <dc:creator>Merdas369</dc:creator>
      <pubDate>Sun, 07 Jun 2026 07:26:06 +0000</pubDate>
      <link>https://dev.to/merdas369/why-i-love-building-modern-web-apps-with-django-htmx-alpinejs-26mo</link>
      <guid>https://dev.to/merdas369/why-i-love-building-modern-web-apps-with-django-htmx-alpinejs-26mo</guid>
      <description>&lt;p&gt;Web development has become very powerful, but also very complicated.&lt;/p&gt;

&lt;p&gt;Today many projects start with a frontend framework, API endpoints, state management, client routing, build tools, and many packages before even building the real product 😅&lt;/p&gt;

&lt;p&gt;Sometimes I ask myself:&lt;/p&gt;

&lt;p&gt;"Do I really need all of this just to create a fast and interactive website?"&lt;/p&gt;

&lt;p&gt;For me, the answer is often no.&lt;/p&gt;

&lt;p&gt;Recently I have been building projects with Django + HTMX + Alpine.js, and this stack feels refreshingly simple. It lets me create modern applications quickly without carrying the complexity of a large SPA.&lt;/p&gt;




&lt;p&gt;⚡ Development becomes much faster&lt;/p&gt;

&lt;p&gt;The biggest thing I noticed is speed.&lt;/p&gt;

&lt;p&gt;Not website speed only.&lt;/p&gt;

&lt;p&gt;Developer speed.&lt;/p&gt;

&lt;p&gt;Instead of creating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend project&lt;/li&gt;
&lt;li&gt;Backend project&lt;/li&gt;
&lt;li&gt;API endpoints&lt;/li&gt;
&lt;li&gt;Authentication logic in multiple places&lt;/li&gt;
&lt;li&gt;State management&lt;/li&gt;
&lt;li&gt;Data synchronization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I can work inside one application.&lt;/p&gt;

&lt;p&gt;Django handles the backend.&lt;/p&gt;

&lt;p&gt;HTMX handles dynamic requests.&lt;/p&gt;

&lt;p&gt;Alpine.js handles small frontend interactions.&lt;/p&gt;

&lt;p&gt;Everything works together naturally.&lt;/p&gt;

&lt;p&gt;Less setup.&lt;/p&gt;

&lt;p&gt;Less code.&lt;/p&gt;

&lt;p&gt;Less headaches 😄&lt;/p&gt;




&lt;p&gt;🎯 HTMX makes HTML fun again&lt;/p&gt;

&lt;p&gt;HTMX feels almost magical.&lt;/p&gt;

&lt;p&gt;You can create interactions directly inside HTML.&lt;/p&gt;

&lt;p&gt;Instead of writing many JavaScript functions, fetching data manually, and updating elements yourself, you simply add attributes.&lt;/p&gt;

&lt;p&gt;Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt;
    &lt;span class="na"&gt;hx-post=&lt;/span&gt;&lt;span class="s"&gt;"/like-post/"&lt;/span&gt;
    &lt;span class="na"&gt;hx-target=&lt;/span&gt;&lt;span class="s"&gt;"#likes"&lt;/span&gt;
    &lt;span class="na"&gt;hx-swap=&lt;/span&gt;&lt;span class="s"&gt;"innerHTML"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    ❤️ Like
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is it.&lt;/p&gt;

&lt;p&gt;Click the button.&lt;/p&gt;

&lt;p&gt;A request is sent.&lt;/p&gt;

&lt;p&gt;The server responds.&lt;/p&gt;

&lt;p&gt;The page updates automatically.&lt;/p&gt;

&lt;p&gt;No large JavaScript files.&lt;/p&gt;

&lt;p&gt;No complex state management.&lt;/p&gt;

&lt;p&gt;No API calls written manually.&lt;/p&gt;

&lt;p&gt;HTMX turns HTML into something much more powerful.&lt;/p&gt;




&lt;p&gt;✨ Alpine.js keeps things simple&lt;/p&gt;

&lt;p&gt;Sometimes we still need small interactions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opening modals&lt;/li&gt;
&lt;li&gt;Dropdown menus&lt;/li&gt;
&lt;li&gt;Tabs&lt;/li&gt;
&lt;li&gt;Toggles&lt;/li&gt;
&lt;li&gt;Showing and hiding elements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these situations, Alpine.js is perfect.&lt;/p&gt;

&lt;p&gt;You can add behavior directly in HTML.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;x-data=&lt;/span&gt;&lt;span class="s"&gt;"{ open: false }"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"open=!open"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Menu
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;x-show=&lt;/span&gt;&lt;span class="s"&gt;"open"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Content here
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very small.&lt;/p&gt;

&lt;p&gt;Very readable.&lt;/p&gt;

&lt;p&gt;Very easy.&lt;/p&gt;

&lt;p&gt;Alpine.js feels like adding superpowers to HTML without building an entire frontend application.&lt;/p&gt;




&lt;p&gt;🔒 Django already gives great security&lt;/p&gt;

&lt;p&gt;Security is something people sometimes forget during development.&lt;/p&gt;

&lt;p&gt;One thing I like about Django is that many security features already exist out of the box.&lt;/p&gt;

&lt;p&gt;Django helps with:&lt;/p&gt;

&lt;p&gt;✅ CSRF protection&lt;/p&gt;

&lt;p&gt;✅ SQL injection protection&lt;/p&gt;

&lt;p&gt;✅ Password hashing&lt;/p&gt;

&lt;p&gt;✅ Authentication system&lt;/p&gt;

&lt;p&gt;✅ Session management&lt;/p&gt;

&lt;p&gt;✅ Security middleware&lt;/p&gt;

&lt;p&gt;Instead of installing many packages and configuring everything manually, Django already gives strong foundations.&lt;/p&gt;

&lt;p&gt;This means I spend more time building features and less time worrying about basic security.&lt;/p&gt;




&lt;p&gt;🌍 Modern apps without SPA complexity&lt;/p&gt;

&lt;p&gt;Many people think modern applications must be SPAs.&lt;/p&gt;

&lt;p&gt;But modern user experience is not only about using huge frontend frameworks.&lt;/p&gt;

&lt;p&gt;Users want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast pages&lt;/li&gt;
&lt;li&gt;Smooth interactions&lt;/li&gt;
&lt;li&gt;Responsive interfaces&lt;/li&gt;
&lt;li&gt;Good user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Django + HTMX + Alpine.js can provide all of that.&lt;/p&gt;

&lt;p&gt;You can build:&lt;/p&gt;

&lt;p&gt;📋 Dashboards&lt;/p&gt;

&lt;p&gt;🛒 E-commerce websites&lt;/p&gt;

&lt;p&gt;💬 Chat systems&lt;/p&gt;

&lt;p&gt;📊 Admin panels&lt;/p&gt;

&lt;p&gt;📝 Blog platforms&lt;/p&gt;

&lt;p&gt;🚀 SaaS applications&lt;/p&gt;

&lt;p&gt;And you can do this without creating API layers for everything.&lt;/p&gt;

&lt;p&gt;Without complex frontend architecture.&lt;/p&gt;

&lt;p&gt;Without sending large amounts of JavaScript to the browser.&lt;/p&gt;




&lt;p&gt;❤️ Why I enjoy this stack&lt;/p&gt;

&lt;p&gt;For me, this stack feels closer to what web development was always supposed to be:&lt;/p&gt;

&lt;p&gt;Build things quickly.&lt;/p&gt;

&lt;p&gt;Keep things simple.&lt;/p&gt;

&lt;p&gt;Ship products faster.&lt;/p&gt;

&lt;p&gt;Focus on features instead of fighting tooling.&lt;/p&gt;

&lt;p&gt;Sometimes simpler really is better.&lt;/p&gt;

&lt;p&gt;Maybe we don't need to make every website more complicated than it needs to be 😄&lt;/p&gt;

&lt;p&gt;What stack are you enjoying these days?&lt;/p&gt;

</description>
      <category>django</category>
      <category>productivity</category>
      <category>python</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
