<?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: Lord_Doug</title>
    <description>The latest articles on DEV Community by Lord_Doug (@dougvikt).</description>
    <link>https://dev.to/dougvikt</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%2F4066582%2Fb0a49e27-9b59-4983-9e0b-9b6858305586.jpg</url>
      <title>DEV Community: Lord_Doug</title>
      <link>https://dev.to/dougvikt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dougvikt"/>
    <language>en</language>
    <item>
      <title>DjReframe: a lib to cut down the routine of building Django apps from scratch</title>
      <dc:creator>Lord_Doug</dc:creator>
      <pubDate>Sat, 12 Sep 2026 16:41:14 +0000</pubDate>
      <link>https://dev.to/dougvikt/djreframe-a-lib-to-cut-down-the-routine-of-building-django-apps-from-scratch-423b</link>
      <guid>https://dev.to/dougvikt/djreframe-a-lib-to-cut-down-the-routine-of-building-django-apps-from-scratch-423b</guid>
      <description>&lt;p&gt;I haven't been using Django for very long .I'm still early on that road. But I've always liked practical things, and one thing bugged me fast: every time you need to create a new app, there's a ton of manual editing involved — creating folders, creating files, organizing everything from zero.&lt;/p&gt;

&lt;p&gt;Imagine having to build one or more APIs. Each one might need 5 to 8 extra files (serializers, permissions, selectors, services, tests...). Every time, the same repeated work.&lt;/p&gt;

&lt;p&gt;That's why I built DjReframe: you set up the structure you want once, and after that it's just one command ,the whole architecture comes out ready. You can have several predefined structures and use whichever you want, whenever you want.&lt;/p&gt;

&lt;p&gt;How it works&lt;/p&gt;

&lt;p&gt;Install it:&lt;br&gt;
&lt;/p&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;dj-reframe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And generate the app already in the architecture you need:&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="c"&gt;# Traditional web app&lt;/span&gt;
dj-reframe blog sitev1

&lt;span class="c"&gt;# API with Django REST Framework&lt;/span&gt;
dj-reframe api drf

&lt;span class="c"&gt;# App with WebSockets&lt;/span&gt;
dj-reframe chat websockets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No more creating files one by one by hand.&lt;/p&gt;

&lt;p&gt;Available architectures&lt;/p&gt;

&lt;p&gt;DjReframe already ships with several ready-made options, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sitev1 / sitev2 — traditional web app (with or without a service layer)&lt;/li&gt;
&lt;li&gt;api — full DRF setup (serializers, permissions, pagination, tests)&lt;/li&gt;
&lt;li&gt;api-graphql — GraphQL API with Strawberry/Graphene&lt;/li&gt;
&lt;li&gt;websockets — consumer/routing-based apps&lt;/li&gt;
&lt;li&gt;celery-tasks — apps focused on async tasks&lt;/li&gt;
&lt;li&gt;microservice, admin-centric, ml-integration ,and more &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Custom templates&lt;br&gt;
If none of the built-in architectures fit, you can create your own:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dj-reframe &lt;span class="nt"&gt;--my-templates&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This opens the folder where you build your own structure — you just need to name Python files with .py-tpl (Django/DjReframe automatically converts them to .py when generating).&lt;/p&gt;

&lt;p&gt;Requirements&lt;br&gt;
Python &amp;gt;= 3.10&lt;br&gt;
Django &amp;gt;= 4.0&lt;/p&gt;

&lt;p&gt;The project is open source, MIT licensed, and open to contributions — PRs are welcome.&lt;/p&gt;

&lt;p&gt;🔗 Repo: &lt;a href="https://github.com/DougVikt/dj-reframe" rel="noopener noreferrer"&gt;https://github.com/DougVikt/dj-reframe&lt;/a&gt;&lt;br&gt;
📦 PyPI: pip install dj-reframe&lt;/p&gt;

&lt;p&gt;If you find it useful, drop a ⭐ on the repo. And if you have ideas for new architectures or templates, open an issue.&lt;/p&gt;

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