<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CI/CD | Joseph Wathika — Backend Engineer</title>
    <link>https://wathika.is-a.dev/tags/ci/cd/</link>
      <atom:link href="https://wathika.is-a.dev/tags/ci/cd/index.xml" rel="self" type="application/rss+xml" />
    <description>CI/CD</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 25 Apr 2025 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://wathika.is-a.dev/media/icon_hu_982c5d63a71b2961.png</url>
      <title>CI/CD</title>
      <link>https://wathika.is-a.dev/tags/ci/cd/</link>
    </image>
    
    <item>
      <title>UniNotes Study Platform</title>
      <link>https://wathika.is-a.dev/projects/uninotes/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://wathika.is-a.dev/projects/uninotes/</guid>
      <description>&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;University study materials are frequently scattered across chats, personal drives, and unstructured folders. Students need a predictable way to find material by institution structure while contributors need controlled upload and account workflows.&lt;/p&gt;
&lt;h2 id=&#34;what-i-built&#34;&gt;What I built&lt;/h2&gt;
&lt;p&gt;UniNotes is a Django application that models schools, departments, courses, units, notes, and users. It includes authenticated contribution flows, password recovery templates, admin-assisted CSV upload, search-friendly pages, migrations, tests, sitemaps, and a GitHub deployment workflow.&lt;/p&gt;
&lt;h2 id=&#34;engineering-decisions&#34;&gt;Engineering decisions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domain-based models&lt;/strong&gt; mirror how students actually navigate from a school to a unit and its resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Django authentication&lt;/strong&gt; provides a mature foundation for account and contribution flows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server-rendered pages&lt;/strong&gt; keep the interface simple and usable without a complex client application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrations and a deployment workflow&lt;/strong&gt; make changes more repeatable than manual updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitemaps and structured routes&lt;/strong&gt; improve discovery for a content-heavy product.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-this-demonstrates&#34;&gt;What this demonstrates&lt;/h2&gt;
&lt;p&gt;Full-stack ownership, domain modelling, authentication, content management, Django delivery, and the ability to turn a familiar user problem into a maintainable product structure.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;Scope note: The live service may take time to wake on Render&amp;rsquo;s free tier. The source link remains available for review.&lt;/p&gt;
  &lt;/blockquote&gt;

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