<?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: Clement Samuel Goodness</title>
    <description>The latest articles on DEV Community by Clement Samuel Goodness (@belerickii).</description>
    <link>https://dev.to/belerickii</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%2F3473259%2F4c9abc6f-bbe7-45f1-a697-c902d48a010b.jpeg</url>
      <title>DEV Community: Clement Samuel Goodness</title>
      <link>https://dev.to/belerickii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/belerickii"/>
    <language>en</language>
    <item>
      <title>Mistake 1: Skipping the Docs (Spoiler: They’re Goated)</title>
      <dc:creator>Clement Samuel Goodness</dc:creator>
      <pubDate>Fri, 09 Oct 2026 04:38:05 +0000</pubDate>
      <link>https://dev.to/belerickii/mistake-1-skipping-the-docs-spoiler-theyre-goated-2jbn</link>
      <guid>https://dev.to/belerickii/mistake-1-skipping-the-docs-spoiler-theyre-goated-2jbn</guid>
      <description>&lt;p&gt;As a rookie starting in software development, especially in the age of AI, I could easily skip the learning phase and jump straight into building.&lt;/p&gt;

&lt;p&gt;But my experience during my undergraduate years taught me something: shaky foundations and an inadequate understanding of the tools you're working with will eventually come back to bite you — sometimes in ways you least expect.&lt;/p&gt;

&lt;p&gt;After setting up my development environment and finalizing my database design, I initialized Prisma 8 in my DMS project.&lt;/p&gt;

&lt;p&gt;Now, here's the thing about AI: if you don't provide enough context about what you're working on, its suggestions can be misleading or unsuitable for your setup.&lt;/p&gt;

&lt;p&gt;ChatGPT and I brainstormed and came up with this folder structure for my project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dms-v2/
├── src/
│   ├── auth/
│   ├── users/
│   ├── academic-session/
│   ├── documents/
│   ├── providers/
│   ├── common/
│   ├── app.module.ts
│   └── main.ts
│
├── logs/
├── test/
├── prisma/
├── package.json
└── ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice that the &lt;code&gt;prisma/&lt;/code&gt; directory is outside &lt;code&gt;src/&lt;/code&gt;? Good.&lt;/p&gt;

&lt;p&gt;But Prisma 8 initially generated the directory inside &lt;code&gt;src/&lt;/code&gt;. And you know what I did?&lt;/p&gt;

&lt;p&gt;Yeah, you guessed right. I moved it to the project root. 😭&lt;/p&gt;

&lt;p&gt;I thought everything was fine and continued writing my database models in &lt;code&gt;contract.prisma&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I also set up a global Prisma module in another &lt;code&gt;src/prisma/&lt;/code&gt; directory so the generated Prisma client could be accessed through dependency injection across my NestJS modules.&lt;/p&gt;

&lt;p&gt;At this point, I had two directories with different responsibilities: one at the project root for my Prisma schema and configuration, and another inside &lt;code&gt;src/&lt;/code&gt; for the generated client and Prisma service.&lt;/p&gt;

&lt;p&gt;Then the problems started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first issue: NestJS compilation&lt;/strong&gt;&lt;br&gt;
I hit a compilation error when starting the NestJS application because a TypeScript file sat outside the directory covered by my TypeScript compilation configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The second issue: Prisma couldn't find my schema&lt;/strong&gt;&lt;br&gt;
Prisma was also looking for the schema in its configured location, but I'd moved the relevant directory. As a result, subsequent Prisma commands couldn't find the schema where they expected it.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mhh2dmck81n88etmpqd.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mhh2dmck81n88etmpqd.png" alt=" " width="800" height="740"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had created these problems by changing the folder structure without fully understanding how Prisma's configuration and NestJS's compilation setup worked together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson&lt;/strong&gt;&lt;br&gt;
AI is a capable tool, but I believe it's only as good as the person using it. So, I try to understand the tools I'm working with and build a solid foundation in the field so I can evaluate the solutions AI suggests rather than accepting them blindly.&lt;/p&gt;

&lt;p&gt;Reading through the Prisma 8 documentation helped me resolve these issues. It also helped me tackle subsequent problems, including cases where AI suggested Prisma ORM queries based on older versions.&lt;/p&gt;

&lt;p&gt;Documentation might not always be the most exciting thing to read, but sometimes it's exactly what I need.&lt;/p&gt;

&lt;p&gt;And that's one lesson I'm taking away from this experience.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>learning</category>
      <category>coding</category>
    </item>
    <item>
      <title>DMS Database Design</title>
      <dc:creator>Clement Samuel Goodness</dc:creator>
      <pubDate>Thu, 08 Oct 2026 02:36:30 +0000</pubDate>
      <link>https://dev.to/belerickii/dms-database-design-142p</link>
      <guid>https://dev.to/belerickii/dms-database-design-142p</guid>
      <description>&lt;p&gt;After analyzing the paper-based system used to handle academic registration and gathering the necessary requirements, the next step in the implementation process was the architectural design.&lt;/p&gt;

&lt;p&gt;I used standard software modelling techniques such as Data Flow Diagrams (DFDs), Class Diagrams, Sequence Diagrams, and Entity Relationship Diagrams (ERDs) to model the system.&lt;/p&gt;

&lt;p&gt;The ERD was particularly important because it translated the conceptual data model of my DMS into a database schema. The entities in the ERD became tables, while their attributes became fields/columns in those tables.&lt;/p&gt;

&lt;p&gt;The main entities in my design are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User&lt;/strong&gt; — Parent entity; also stores admin information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Student&lt;/strong&gt; — Child entity inheriting from &lt;code&gt;User&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Staff&lt;/strong&gt; — Child entity inheriting from &lt;code&gt;User&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Department&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Academic Session&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registration&lt;/strong&gt; — Junction table created from the many-to-many relationship between &lt;code&gt;Student&lt;/code&gt; and &lt;code&gt;Academic Session&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document&lt;/strong&gt; — Stores records of documents uploaded by students.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Required Document&lt;/strong&gt; — Stores the master list of documents required by the faculty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Student Category&lt;/strong&gt; — Categorizes students as fresher, sophomore, or finalist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Required Document Map Student Category&lt;/strong&gt; — Junction table created from the many-to-many relationship between &lt;code&gt;Required Document&lt;/code&gt; and &lt;code&gt;Student Category&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notification&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the rebuild, I plan to use &lt;strong&gt;Prisma ORM&lt;/strong&gt; in the application code to build and manage the database schema and handle communication between the application and the database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Entity Relationships
&lt;/h3&gt;

&lt;p&gt;The main relationships between my entities are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Many Students belong to One Department (M:1)&lt;/li&gt;
&lt;li&gt;Many Students register for Many Academic Sessions (M:N)&lt;/li&gt;
&lt;li&gt;One Academic Session has Many Registrations (1:M)&lt;/li&gt;
&lt;li&gt;One Student has Many Registrations (1:M)&lt;/li&gt;
&lt;li&gt;One Student uploads Many Documents (1:M)&lt;/li&gt;
&lt;li&gt;One Staff member reviews Many Documents (1:M)&lt;/li&gt;
&lt;li&gt;Many Student Categories map to Many Required Documents (M:N)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last relationship is particularly important to the DMS. Each student category requires a specific subset of the master document list, while an individual required document can apply to multiple student categories.&lt;/p&gt;

&lt;p&gt;The junction table, &lt;code&gt;Required Document Map Student Category&lt;/code&gt;, therefore connects the two entities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One Student Category has Many mappings (1:M)&lt;/li&gt;
&lt;li&gt;One Required Document has Many mappings (1:M)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similarly, notifications can be associated with the users who receive them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One Staff member receives Many Notifications (1:M)&lt;/li&gt;
&lt;li&gt;One Student receives Many Notifications (1:M)&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9ujjuiai7mo3lmhoplq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9ujjuiai7mo3lmhoplq.png" alt=" " width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Highlights of the Design
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Role-based extension:&lt;/strong&gt;&lt;br&gt;
Instead of putting every role-specific attribute directly into the &lt;code&gt;User&lt;/code&gt; table, I separated role-specific data into related tables for &lt;code&gt;Student&lt;/code&gt; and &lt;code&gt;Staff&lt;/code&gt;, while keeping the common user information in the parent &lt;code&gt;User&lt;/code&gt; entity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Composite Key:&lt;/strong&gt;&lt;br&gt;
The &lt;code&gt;Registration&lt;/code&gt; table uses a composite primary key consisting of &lt;code&gt;matric_no&lt;/code&gt; and &lt;code&gt;sessionId&lt;/code&gt;. This ensures that the same student cannot have multiple registration records for the same academic session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referential Integrity:&lt;/strong&gt;&lt;br&gt;
Foreign keys ensure that relationships between tables remain consistent by requiring referenced values to correspond to existing records.&lt;/p&gt;

&lt;p&gt;I also use cascading deletes on appropriate relationships involving the &lt;code&gt;User&lt;/code&gt; entity so that related records can be removed automatically when their parent record is deleted, helping prevent orphaned records.&lt;/p&gt;

&lt;p&gt;This is the database structure I'm starting with for the rebuild. As I implement it with Prisma, I'll likely encounter decisions that require me to revisit parts of the design.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>database</category>
      <category>sql</category>
      <category>writing</category>
    </item>
    <item>
      <title>This was so insightful. Thank you, sire 🫡</title>
      <dc:creator>Clement Samuel Goodness</dc:creator>
      <pubDate>Fri, 25 Sep 2026 12:32:31 +0000</pubDate>
      <link>https://dev.to/belerickii/this-was-so-insightful-thank-you-sire-11j0</link>
      <guid>https://dev.to/belerickii/this-was-so-insightful-thank-you-sire-11j0</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/georgekobaidze/clean-code-is-not-the-same-as-clear-code-comments-were-never-the-problem-42n" class="crayons-story__hidden-navigation-link"&gt;Clean Code Is Not the Same as Clear Code: Comments Were Never the Problem&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/georgekobaidze/clean-code-is-not-the-same-as-clear-code-comments-were-never-the-problem-42n" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Includes a helpful regex breakdown in the comments&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/georgekobaidze" class="crayons-avatar  crayons-avatar--l  "&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F55651%2F3ad144e9-ca91-4395-b73a-9a0a3d843af9.jpg" alt="georgekobaidze profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/georgekobaidze" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Giorgi Kobaidze
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Giorgi Kobaidze
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
                
              
              &lt;div id="story-author-preview-content-4701626" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/georgekobaidze" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F55651%2F3ad144e9-ca91-4395-b73a-9a0a3d843af9.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Giorgi Kobaidze&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/georgekobaidze/clean-code-is-not-the-same-as-clear-code-comments-were-never-the-problem-42n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/georgekobaidze/clean-code-is-not-the-same-as-clear-code-comments-were-never-the-problem-42n" id="article-link-4701626"&gt;
          Clean Code Is Not the Same as Clear Code: Comments Were Never the Problem
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/documentation"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;documentation&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/georgekobaidze/clean-code-is-not-the-same-as-clear-code-comments-were-never-the-problem-42n" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;143&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;span class="crayons-story__favorited"&gt;
              &lt;span class="favorited-marker"&gt;
                &lt;span&gt;
                  

                &lt;/span&gt;
                &lt;span class="hidden"&gt;
                  

                &lt;/span&gt;
              &lt;/span&gt;
            &lt;/span&gt;
            &lt;a href="https://dev.to/georgekobaidze/clean-code-is-not-the-same-as-clear-code-comments-were-never-the-problem-42n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              125&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            9 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>coding</category>
      <category>programming</category>
      <category>software</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Setting up Development Environment</title>
      <dc:creator>Clement Samuel Goodness</dc:creator>
      <pubDate>Thu, 24 Sep 2026 15:24:38 +0000</pubDate>
      <link>https://dev.to/belerickii/setting-up-development-environment-138l</link>
      <guid>https://dev.to/belerickii/setting-up-development-environment-138l</guid>
      <description>&lt;p&gt;A little trip down memory lane 😅: while I was working on my final-year project (DMS) at university, I had to do a lot of research to make it a success.&lt;/p&gt;

&lt;p&gt;My project falls under the software development domain, and I adopted Agile, a software development methodology. So, I already have the design and theoretical aspects — functional requirements, non-functional requirements, interface design, etc. — figured out.&lt;/p&gt;

&lt;p&gt;Since this is a rebuild, I'll focus primarily on the actual implementation rather than going deep into the theoretical aspects. I'll still share some surface-level theoretical posts where necessary. Without further ado, let's get to the main thing:&lt;/p&gt;

&lt;p&gt;I decided to use a monorepo for my rebuild this time. Instead of having separate repositories for my frontend app, backend app, and shared types, I can keep everything under one repository and manage it using npm workspaces, a feature of npm that allows multiple packages to be managed within a single repository.&lt;/p&gt;

&lt;p&gt;My setup looks something 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3vphldga9fpnwgfhplty.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3vphldga9fpnwgfhplty.png" alt=" " width="800" height="851"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also get to centralize my development tools. For example, I can use the same TypeScript version across the entire project by installing it in the root &lt;code&gt;package.json&lt;/code&gt;. If other people want to contribute to the project in the future, they only have to clone one repository instead of cloning two or three repositories to work on a single application.&lt;/p&gt;

&lt;p&gt;This is my first time using a monorepo in a project, so I went with npm workspaces to reduce configuration overhead and keep everything lightweight. From my research, other package managers also have workspace/monorepo capabilities, with differences in dependency management, commands, performance characteristics, and features.&lt;/p&gt;

&lt;p&gt;I also came across tools like Nx and Turborepo. They offer more advanced capabilities, but they seem technically demanding for me at the moment. Hopefully, I'll get to explore them in the future.&lt;/p&gt;

&lt;p&gt;AI gave me this diagram as a simple mental model:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                MONOREPO
                   │
         ┌─────────┴─────────┐
         │                   │
   Package manager      Build/task tools
         │                   │
   ┌─────┼─────┐         ┌───┴────┐
   │     │     │         │        │
  npm   pnpm  Yarn      Nx    Turborepo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>architecture</category>
      <category>learning</category>
      <category>tooling</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I love this write-up mainly because of the practical steps included to stay sane and mentally healthy in this ever-evolving field. Thank you, sire 🫡</title>
      <dc:creator>Clement Samuel Goodness</dc:creator>
      <pubDate>Fri, 18 Sep 2026 20:13:11 +0000</pubDate>
      <link>https://dev.to/belerickii/i-love-this-write-up-mainly-because-of-the-practical-steps-included-to-stay-sane-and-mentally-1hd6</link>
      <guid>https://dev.to/belerickii/i-love-this-write-up-mainly-because-of-the-practical-steps-included-to-stay-sane-and-mentally-1hd6</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/james_anderson_h/the-quiet-weight-of-working-in-tech-in-the-ai-era-551g" class="crayons-story__hidden-navigation-link"&gt;The Quiet Weight of Working in Tech in the AI Era&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/james_anderson_h/the-quiet-weight-of-working-in-tech-in-the-ai-era-551g" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Resignations sparked by AI replacement fears&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/james_anderson_h" class="crayons-avatar  crayons-avatar--l  "&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3968038%2F98bc34c8-0955-4e0c-8b23-182806d4b0d6.png" alt="james_anderson_h profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/james_anderson_h" class="crayons-story__secondary fw-medium m:hidden"&gt;
              James Anderson
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                James Anderson
                
                
              
              &lt;div id="story-author-preview-content-4655003" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/james_anderson_h" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3968038%2F98bc34c8-0955-4e0c-8b23-182806d4b0d6.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;James Anderson&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/james_anderson_h/the-quiet-weight-of-working-in-tech-in-the-ai-era-551g" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 15&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/james_anderson_h/the-quiet-weight-of-working-in-tech-in-the-ai-era-551g" id="article-link-4655003"&gt;
          The Quiet Weight of Working in Tech in the AI Era
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mentalhealth"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mentalhealth&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/career"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;career&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/james_anderson_h/the-quiet-weight-of-working-in-tech-in-the-ai-era-551g" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;151&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;span class="crayons-story__favorited"&gt;
              &lt;span class="favorited-marker"&gt;
                &lt;span&gt;
                  

                &lt;/span&gt;
                &lt;span class="hidden"&gt;
                  

                &lt;/span&gt;
              &lt;/span&gt;
            &lt;/span&gt;
            &lt;a href="https://dev.to/james_anderson_h/the-quiet-weight-of-working-in-tech-in-the-ai-era-551g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              110&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>career</category>
      <category>mentalhealth</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Start Here</title>
      <dc:creator>Clement Samuel Goodness</dc:creator>
      <pubDate>Fri, 18 Sep 2026 12:22:29 +0000</pubDate>
      <link>https://dev.to/belerickii/start-here-3561</link>
      <guid>https://dev.to/belerickii/start-here-3561</guid>
      <description>&lt;p&gt;Hi all 👋🏽, my name is Samuel, and I am a recent CS graduate. Over the past few years, I have had some exposure to the world of IT, and I have a few professional certifications in the field (Network+, Security+, etc.). However, during the final days of my undergraduate program at university, I decided to improve my programming skills, this time with a focus on backend development.&lt;/p&gt;

&lt;p&gt;My final-year project was a web application: a Document Management System (DMS) designed to help college students, especially those at my institution, complete faculty-level academic registration digitally. The aim was to move the process from a paper-based system to a digital one.&lt;/p&gt;

&lt;p&gt;Due to time constraints, I wasn't able to build the application to a satisfactory level (that didn't stop me from acing my final-year project though, lol 😂). But this time, I want to build it back up from scratch, with a minor tweak to the stack I used to develop the old system. I also want to use it as an avenue to dig deeper and sharpen my programming skills, including learning how to properly design and architect systems like an engineer.&lt;/p&gt;

&lt;p&gt;I’ll be sharing my thought process, technical decisions, mistakes, and lessons as I work through this project. I’d also love to hear your perspectives, feedback, and constructive criticism along the way. If you have experience in backend development, system design, or anything related, your guidance is more than welcome. And hey, maybe I’ll make a few new friends along the way too. 🙂&lt;/p&gt;

&lt;p&gt;Stay tuned.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>learning</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
