<?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: Silas Ochieng</title>
    <description>The latest articles on DEV Community by Silas Ochieng (@silasochieng).</description>
    <link>https://dev.to/silasochieng</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%2F3295976%2Fa178ee99-8f5d-405a-94db-f1ccf25dba4b.jpg</url>
      <title>DEV Community: Silas Ochieng</title>
      <link>https://dev.to/silasochieng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/silasochieng"/>
    <language>en</language>
    <item>
      <title>Day 4 :Building Models and Templates for Inventory and Orders Apps in My Django Store Manager</title>
      <dc:creator>Silas Ochieng</dc:creator>
      <pubDate>Thu, 03 Jul 2025 15:00:09 +0000</pubDate>
      <link>https://dev.to/silasochieng/building-models-and-templates-for-inventory-and-orders-apps-in-my-django-store-manager-7jm</link>
      <guid>https://dev.to/silasochieng/building-models-and-templates-for-inventory-and-orders-apps-in-my-django-store-manager-7jm</guid>
      <description>&lt;p&gt;Hey Dev Community! 👋&lt;/p&gt;

&lt;p&gt;Today, I made significant progress on my Django project — store_manager. Specifically, I focused on building and refining models and templates for two core applications: the Inventory App and the Orders App. Here's a breakdown of what I did, how I approached it, and a few snippets to give you a feel of the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Structure Overview
&lt;/h3&gt;

&lt;p&gt;My store_manager project includes two main apps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;inventory: Manages products, categories, and stock.&lt;/li&gt;
&lt;li&gt;orders: Handles customer orders and order items.&lt;/li&gt;
&lt;/ol&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%2Fl0bozspvkncle6401l52.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%2Fl0bozspvkncle6401l52.png" alt="Project structure" width="237" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then at the templates i have this structure&lt;br&gt;
I created simple yet clean templates to list, create, and manage products and orders.as shown below in this structure&lt;br&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%2Fv4ey8xp2s49yl7pw0u2m.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%2Fv4ey8xp2s49yl7pw0u2m.png" alt="Template structure" width="217" height="353"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Models creation
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Building Inventory Models for My Django Store Manager App
&lt;/h4&gt;

&lt;p&gt;In this, I’ll walk you through the &lt;strong&gt;models I built for the inventory app&lt;/strong&gt; in my Django project &lt;code&gt;store_manager&lt;/code&gt;. These models handle suppliers, categories, products, stock movements, and inventory alerts — all built with scalability and real-world functionality in mind.&lt;/p&gt;


&lt;h4&gt;
  
  
  Supplier Model
&lt;/h4&gt;

&lt;p&gt;Handles details about suppliers providing the products.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Supplier(models.Model):
    name = models.CharField(max_length=100, unique=True)
    contact_person = models.CharField(max_length=100)
    email = models.EmailField()
    phone = models.CharField(max_length=20)
    address = models.TextField()
    website = models.URLField(blank=True)
    notes = models.TextField(blank=True)
    is_active = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Category Model
&lt;/h4&gt;

&lt;p&gt;Supports nested categories and slugs for SEO-friendly URLs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Category(models.Model):
    name = models.CharField(max_length=50, unique=True)
    slug = models.SlugField(unique=True)
    description = models.TextField(blank=True)
    parent = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, related_name='children')
    image = models.ImageField(upload_to='category_images/', null=True, blank=True)
    is_active = models.BooleanField(default=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Product Model
&lt;/h4&gt;

&lt;p&gt;Central model for inventory tracking&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Product(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique=True)
    description = models.TextField(blank=True)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, related_name='products')
    supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, null=True, related_name='products')
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)
    cost_price = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.PositiveIntegerField(default=0)
    reorder_level = models.PositiveIntegerField(default=5)
    sku = models.CharField(max_length=50, unique=True)
    barcode = models.CharField(max_length=50, blank=True)
    is_active = models.BooleanField(default=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Product image models
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class ProductImage(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='images')
    image = models.ImageField(upload_to='product_images/')
    is_default = models.BooleanField(default=False)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  StockMovement Model
&lt;/h3&gt;

&lt;p&gt;Logs every product movement: sales, purchases, losses, and more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class StockMovement(models.Model):
    MOVEMENT_TYPES = [
        ('purchase', 'Purchase'),
        ('sale', 'Sale'),
        ('return', 'Return'),
        ('adjustment', 'Adjustment'),
        ('transfer', 'Transfer'),
        ('loss', 'Loss'),
    ]
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='movements')
    movement_type = models.CharField(max_length=20, choices=MOVEMENT_TYPES)
    quantity = models.IntegerField()
    before_quantity = models.IntegerField(editable=False)
    after_quantity = models.IntegerField(editable=False)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;This post covered the core models that power the Inventory side of my Django &lt;code&gt;store_manager&lt;/code&gt; app — from suppliers and categories to products, stock movement, and inventory alerts. These models lay the foundation for tracking product availability, managing suppliers, and triggering automated alerts in real-time.&lt;/p&gt;

&lt;p&gt;👉 In the next article, I’ll walk you through the &lt;strong&gt;Orders app models&lt;/strong&gt;, where we’ll explore how orders are placed, managed, and linked to inventory changes. Stay tuned and feel free to drop any questions or suggestions in the comments!&lt;/p&gt;

&lt;h1&gt;
  
  
  django #python #backend #webdev
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>django</category>
      <category>backend</category>
    </item>
    <item>
      <title>Day2: Setting Up and Testing My Django Inventory App</title>
      <dc:creator>Silas Ochieng</dc:creator>
      <pubDate>Tue, 01 Jul 2025 17:25:51 +0000</pubDate>
      <link>https://dev.to/silasochieng/day2-setting-up-and-testing-my-django-inventory-app-49k5</link>
      <guid>https://dev.to/silasochieng/day2-setting-up-and-testing-my-django-inventory-app-49k5</guid>
      <description>&lt;p&gt;Today was a productive day on my Django project — I successfully set up the inventory app, added models, and ran initial tests to confirm everything works as expected. Here’s a quick rundown of what I did, lessons learned, and what’s next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;I'm currently building a store management system using Django. One of the core components is the Inventory app, responsible for managing products, stock levels, categories, and suppliers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Did Today
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Set Up the Inventory App&lt;/strong&gt;&lt;br&gt;
I created the app with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python manage.py startapp inventory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I added 'inventory' to INSTALLED_APPS in settings.py.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defined the Models&lt;/strong&gt;&lt;br&gt;
I built out the initial models for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Product&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Category&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supplier&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stock&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Product(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField()
    supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, null=True)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;Made and Applied Migrations&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The database schema was generated and applied without issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tested the Models via the Admin Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I registered the models in admin.py, created some test data via the Django admin, and confirmed that:&lt;/p&gt;

&lt;p&gt;Products are linked correctly to their categories and suppliers.&lt;/p&gt;

&lt;p&gt;Data is saved and retrieved as expected.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;admin.site.register(Product)
admin.site.register(Category)
admin.site.register(Supplier)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fg5tcd7s6630cl4kod4z2.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%2Fg5tcd7s6630cl4kod4z2.png" alt="admin interface" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&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%2Fl97cncakazt406o8h393.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%2Fl97cncakazt406o8h393.png" alt="admin" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How to structure interrelated models with ForeignKey and on_delete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The importance of meaningful model field names and types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Django admin is a powerful way to quickly test your models without writing views or templates yet.&lt;br&gt;
&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up views and templates to list and manage products from the frontend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add CRUD functionality for inventory items.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement stock notifications for low inventory levels.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;br&gt;
Setting up your models is foundational to any Django project. Today reminded me that once you get this right, everything else becomes easier — from views to APIs. I'm excited to keep building on this and share more as I go.&lt;/p&gt;

&lt;p&gt;If you're working on something similar, I’d love to connect and hear what challenges or tips you’ve picked up!&lt;/p&gt;

&lt;p&gt;👋 Let's Connect&lt;br&gt;
Follow me here on &lt;a href="https://dev.to/silasochieng%E2%80%94"&gt;https://dev.to/silasochieng—&lt;/a&gt; more dev logs coming soon!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 1 of 20 Days of Django: Let’s Build a Store Manager App!</title>
      <dc:creator>Silas Ochieng</dc:creator>
      <pubDate>Mon, 30 Jun 2025 14:32:02 +0000</pubDate>
      <link>https://dev.to/silasochieng/day-1-of-20-days-of-django-lets-build-a-store-manager-app-6ph</link>
      <guid>https://dev.to/silasochieng/day-1-of-20-days-of-django-lets-build-a-store-manager-app-6ph</guid>
      <description>&lt;p&gt;👋 Welcome Back!&lt;br&gt;
Let’s get started with building a Django project that manages products and customer orders.&lt;/p&gt;

&lt;p&gt;We’ll start by creating a Django project called store_manager, then add two apps — one for managing inventory and another for handling orders.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 1: Create Your Project Folder and Environment
&lt;/h4&gt;

&lt;p&gt;To get started, I used Visual Studio Code as my IDE and followed these steps to structure my Django project cleanly with two separate apps: inventory and orders.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can create your project folder using either the terminal or the VS Code file explorer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While at the terminal run and it will take you to the folder&lt;/p&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%2Ffjb2q1k8cc5egtax5h26.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%2Ffjb2q1k8cc5egtax5h26.png" alt="A table showing the commands to run at the terminal to create a project folder" width="582" height="242"&gt;&lt;/a&gt;&lt;br&gt;
or use the file explorer if you prefer and click on a open folder and right-click in the explorer sidebar and select "New Folder".&lt;/p&gt;

&lt;p&gt;Name the folder &lt;strong&gt;store_manager.&lt;/strong&gt;&lt;br&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%2Fv5hx34500hijkvepfrsk.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%2Fv5hx34500hijkvepfrsk.png" alt="Creation from filw explorere" width="412" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open that folder in VS Code&lt;br&gt;
Once inside your project folder, open the terminal in VS Code by going to &lt;strong&gt;Terminal → New Terminal.&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2: Set up a virtual environment
&lt;/h4&gt;

&lt;p&gt;run the following in your project root directory in the terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python -m venv venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 3: Activate the virtual environment
&lt;/h4&gt;

&lt;p&gt;while at windows powershell use&lt;br&gt;
&lt;code&gt;&lt;br&gt;
../venv/Scripts/Activate&lt;br&gt;
&lt;/code&gt;`&lt;/p&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%2F4ay9smiqw4plxsds8mav.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%2F4ay9smiqw4plxsds8mav.png" alt="Activating the virtuall environment" width="706" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4: Install Django
&lt;/h4&gt;

&lt;p&gt;Now install Django in your virtual environment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
pip install django&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&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%2F77v2v7y2z6938ucumwe8.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%2F77v2v7y2z6938ucumwe8.png" alt="An image showing installation of django" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5:Create the Django Project and Apps after successful installation of django in the virtual enviroment
&lt;/h4&gt;

&lt;p&gt;We now initialize our Django project and create two apps inside it:&lt;/p&gt;

&lt;h5&gt;
  
  
  Create the Django project
&lt;/h5&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
django-admin startproject store_manager &lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Create two apps: inventory and orders
&lt;/h5&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
python manage.py startapp inventory&lt;br&gt;
python manage.py startapp orders&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now our folder structure looks like this&lt;/p&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%2Fm0ut5cw9rl0actrfj2n7.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%2Fm0ut5cw9rl0actrfj2n7.png" alt="Django project settings" width="218" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Register the two apps in settings
&lt;/h5&gt;

&lt;p&gt;Open &lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
store_manager/settings.py &lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
and add both apps to the INSTALLED_APPS list:&lt;/p&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%2Fccnadmvotf6zw6goqnpe.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%2Fccnadmvotf6zw6goqnpe.png" alt="installed apps" width="367" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 6 Set Up Templates for Each App
&lt;/h4&gt;

&lt;p&gt;Inside each app, I created its own templates folder:&lt;br&gt;
For the inventory app:&lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
mkdir -p inventory/templates/inventory&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
For the orders app:&lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
mkdir -p orders/templates/orders&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 7 Create App URL Configurations
&lt;/h4&gt;

&lt;p&gt;Each app gets its own urls.py file.&lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
inventory/urls.py&lt;br&gt;
orders/urls.py&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 8 Link App URLs in the Main Project
&lt;/h4&gt;

&lt;p&gt;That is at &lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
store_manager/urls.py:&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&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%2F9den2w8xr0p05vomymhx.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%2F9den2w8xr0p05vomymhx.png" alt="Linking the urls" width="521" height="205"&gt;&lt;/a&gt;&lt;br&gt;
Add static files in each app directory&lt;/p&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%2Fmm5nsjv8pgkmifz800eb.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%2Fmm5nsjv8pgkmifz800eb.png" alt="inventory " width="191" height="335"&gt;&lt;/a&gt;&lt;br&gt;
Do so for orders app too&lt;br&gt;
Then add media files upload to the project root directory&lt;/p&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%2Ft7fq3n0d3z8n5frfqhcr.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%2Ft7fq3n0d3z8n5frfqhcr.png" alt="media uploads" width="208" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 9 Add basic views in inventory and orders app
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;inventory view.py&lt;/code&gt;&lt;br&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%2F2w81leeidd8btmj6e2my.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%2F2w81leeidd8btmj6e2my.png" alt="Inventory app view" width="627" height="143"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;orders view.py&lt;/code&gt;&lt;br&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%2Fmxpdhbl54jjee4wc4up7.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%2Fmxpdhbl54jjee4wc4up7.png" alt="orders app view" width="590" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 10  Run Migrations and Start Server
&lt;/h4&gt;

&lt;p&gt;Still at the terminals run the following to test&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
python manage.py migrate&lt;br&gt;
python manage.py runserver&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
Just to conclude my django setup for the store_manager app ran successfully. &lt;/p&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%2Fvtbilyjckox41nubatod.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%2Fvtbilyjckox41nubatod.png" alt="setup" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;This is just but the beginning of my 20days of django keep tune by diving with me into day two of my journey at&lt;br&gt;
&lt;a href="https://dev.to/silasochieng"&gt;https://dev.to/silasochieng&lt;/a&gt; and follow in my github account at &lt;a href="https://github.com/Silas-ochieng" rel="noopener noreferrer"&gt;https://github.com/Silas-ochieng&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git &amp; GitHub Collaboration</title>
      <dc:creator>Silas Ochieng</dc:creator>
      <pubDate>Fri, 27 Jun 2025 10:29:59 +0000</pubDate>
      <link>https://dev.to/silasochieng/git-github-collaboration-46fo</link>
      <guid>https://dev.to/silasochieng/git-github-collaboration-46fo</guid>
      <description>&lt;h2&gt;
  
  
  Hey there, fellow devs! 👨‍💻👩‍💻
&lt;/h2&gt;

&lt;p&gt;Wondering how to get started with Git and GitHub? I’ve got you covered! If you're new to software development, you might have heard about Git and GitHub but aren't quite sure what they are or how to use them. This guide will explain these tools in simple terms and show you how to set them up, especially using Visual Studio Code (VS Code).&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Git &amp;amp; GitHub?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;br&gt;
Git is a version control system. Think of it like a time machine for your code. It tracks changes you make to your files, allowing you to go back to previous versions if something goes wrong. This is incredibly useful when multiple people are working on the same project, as it helps prevent conflicts and keeps everyone’s work organized.&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;&lt;br&gt;
GitHub is a website that hosts Git repositories. It’s like a social network for developers, where you can store your code, collaborate with others, and share your projects. GitHub provides tools for code review, issue tracking, and project management, making it easier for teams to work together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Git and GitHub
&lt;/h2&gt;

&lt;p&gt;Step 1: &lt;/p&gt;

&lt;h2&gt;
  
  
  Install Git
&lt;/h2&gt;

&lt;p&gt;Download Git: Go to the &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;https://git-scm.com/&lt;/a&gt; and download the installer for your operating system.&lt;br&gt;
Install Git: Run the installer and follow the prompts. You can usually keep the default options.&lt;br&gt;
Step 2: &lt;/p&gt;

&lt;h2&gt;
  
  
  Create a GitHub Account
&lt;/h2&gt;

&lt;p&gt;Go to &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;https://github.com/&lt;/a&gt; and sign up for a free account.&lt;br&gt;
Follow the instructions to set up your profile.&lt;br&gt;
Step 3: &lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Git
&lt;/h2&gt;

&lt;p&gt;After installing Git, you need to set up your identity. This is important for tracking who made what changes.&lt;/p&gt;

&lt;p&gt;Open Git Bash (or Command Prompt).&lt;/p&gt;

&lt;p&gt;Run the following commands, replacing the placeholders with your information:&lt;/p&gt;

&lt;p&gt;git config --global user.name "Your Name"&lt;br&gt;
git config --global user.email "&lt;a href="mailto:you@example.com"&gt;you@example.com&lt;/a&gt;"&lt;br&gt;
To check your configuration, type:&lt;/p&gt;

&lt;p&gt;git config --list&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic git commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Start tracking a project
&lt;/h3&gt;

&lt;p&gt;git init&lt;/p&gt;

&lt;h3&gt;
  
  
  Clone a repository
&lt;/h3&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/username/repo.git" rel="noopener noreferrer"&gt;https://github.com/username/repo.git&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage changes
&lt;/h3&gt;

&lt;p&gt;git add .&lt;/p&gt;

&lt;h3&gt;
  
  
  Commit changes
&lt;/h3&gt;

&lt;p&gt;git commit -m "Descriptive commit message"&lt;/p&gt;

&lt;h3&gt;
  
  
  Check repo status
&lt;/h3&gt;

&lt;p&gt;git status&lt;/p&gt;

&lt;h3&gt;
  
  
  View commit history
&lt;/h3&gt;

&lt;p&gt;git log&lt;/p&gt;

&lt;h3&gt;
  
  
  Push to GitHub
&lt;/h3&gt;

&lt;p&gt;git push origin main&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Git with Visual Studio Code
&lt;/h3&gt;

&lt;p&gt;Step 1: &lt;/p&gt;

&lt;h2&gt;
  
  
  Install VS Code
&lt;/h2&gt;

&lt;p&gt;Download VS Code from the &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/&lt;/a&gt;.&lt;br&gt;
Install it by following the setup instructions.&lt;/p&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%2Fhho9e6gfr7eodgl4id0y.jpg" 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%2Fhho9e6gfr7eodgl4id0y.jpg" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
Step 2: &lt;/p&gt;

&lt;h2&gt;
  
  
  Open Your Project in VS Code
&lt;/h2&gt;

&lt;p&gt;Launch VS Code.&lt;br&gt;
Open the folder containing your project by selecting File &amp;gt; Open Folder.&lt;br&gt;
Step 3: &lt;/p&gt;

&lt;h2&gt;
  
  
  Initialize Git in Your Project
&lt;/h2&gt;

&lt;p&gt;Open the integrated terminal in VS Code by pressing Ctrl + ` .&lt;/p&gt;

&lt;p&gt;Initialize Git by running:&lt;/p&gt;

&lt;p&gt;git init&lt;br&gt;
This command creates a new Git repository in your project folder.&lt;/p&gt;

&lt;p&gt;Step 4: &lt;/p&gt;

&lt;h2&gt;
  
  
  Making Changes and Tracking Them
&lt;/h2&gt;

&lt;p&gt;Add Files: Create or edit files in your project.&lt;/p&gt;

&lt;p&gt;Stage Changes: To prepare your changes for committing, use:&lt;/p&gt;

&lt;p&gt;git add .&lt;br&gt;
Commit Changes: Save your changes with a message describing what you did:&lt;br&gt;
git commit -m "Your descriptive message"&lt;br&gt;
Step 5: &lt;/p&gt;

&lt;h2&gt;
  
  
  Pushing Changes to GitHub
&lt;/h2&gt;

&lt;p&gt;Create a New Repository on GitHub: Go to GitHub and click on the "+" icon in the top right corner. Select "New repository" and follow the prompts.&lt;/p&gt;

&lt;p&gt;Link Your Local Repository to GitHub: In the VS Code terminal, run:&lt;/p&gt;

&lt;p&gt;git remote add origin &lt;a href="https://github.com/your-username/your-repo.git" rel="noopener noreferrer"&gt;https://github.com/your-username/your-repo.git&lt;/a&gt;&lt;br&gt;
Push Your Changes: To upload your local changes to GitHub, run:&lt;/p&gt;

&lt;p&gt;git push -u origin main&lt;br&gt;
Collaborating with Others&lt;br&gt;
Forking a Repository&lt;br&gt;
If you want to contribute to someone else's project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to the original repository on GitHub.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the "Fork" button to create a copy in your account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone your forked repository using:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/your-username/forked-repo.git" rel="noopener noreferrer"&gt;https://github.com/your-username/forked-repo.git&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a Pull Request
After making changes in your fork, push them to GitHub.
Go to the original repository and click "Pull Requests."
Click "New Pull Request" and follow the instructions to submit your changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Handling Merge Conflicts
&lt;/h2&gt;

&lt;p&gt;Sometimes, if two people edit the same part of a file, Git will have trouble merging. If this happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the conflicted file in VS Code.
Look for lines marked with &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;, =======, and &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;. Decide which changes to keep.
Save the file, stage it, and commit the resolved changes.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Understanding Git and GitHub is essential for modern software development. By following this guide, you can set up your environment and start collaborating effectively. Remember, practice is key, so don’t hesitate to experiment and explore these tools further!&lt;/p&gt;

&lt;p&gt;If you have any questions or need help, feel free to reach out! Happy coding!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
