<?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: Duck</title>
    <description>The latest articles on DEV Community by Duck (@kidkender).</description>
    <link>https://dev.to/kidkender</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%2F1180759%2F768e8e5a-e9ea-4611-b79c-337dd817c9d7.jpeg</url>
      <title>DEV Community: Duck</title>
      <link>https://dev.to/kidkender</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kidkender"/>
    <language>en</language>
    <item>
      <title>After Setting Up JWT, Redis, Docker, Swagger, and CI for the 20th Time, I Built ArchGen</title>
      <dc:creator>Duck</dc:creator>
      <pubDate>Wed, 03 Jun 2026 10:58:22 +0000</pubDate>
      <link>https://dev.to/kidkender/after-setting-up-jwt-redis-docker-swagger-and-ci-for-the-20th-time-i-built-archgen-3jkp</link>
      <guid>https://dev.to/kidkender/after-setting-up-jwt-redis-docker-swagger-and-ci-for-the-20th-time-i-built-archgen-3jkp</guid>
      <description>&lt;h2&gt;
  
  
  I Built ArchGen: A Backend Project Generator Powered by GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the GitHub Copilot Challenge.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;As a backend developer, I kept running into the same problem.&lt;/p&gt;

&lt;p&gt;Every new project started with hours of repetitive setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure TypeScript&lt;/li&gt;
&lt;li&gt;Set up Fastify or FastAPI&lt;/li&gt;
&lt;li&gt;Configure database connections&lt;/li&gt;
&lt;li&gt;Add authentication&lt;/li&gt;
&lt;li&gt;Configure logging&lt;/li&gt;
&lt;li&gt;Add Docker support&lt;/li&gt;
&lt;li&gt;Create CI pipelines&lt;/li&gt;
&lt;li&gt;Set up validation and error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these tasks were difficult.&lt;/p&gt;

&lt;p&gt;They were just repetitive.&lt;/p&gt;

&lt;p&gt;After creating multiple backend services, I realized I was spending more time configuring projects than actually building features.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;ArchGen&lt;/strong&gt;, a CLI tool that generates production-ready backend projects in seconds.&lt;/p&gt;

&lt;p&gt;Instead of spending hours wiring infrastructure together, developers can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archgen create my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Answer a few prompts and get a complete backend project ready to run.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;I wanted a developer experience similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;create-next-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but for backend applications.&lt;/p&gt;

&lt;p&gt;Most backend generators either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create very minimal projects&lt;/li&gt;
&lt;li&gt;generate outdated code&lt;/li&gt;
&lt;li&gt;focus on only one framework&lt;/li&gt;
&lt;li&gt;don't support upgrading generated projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something opinionated, modern, and practical.&lt;/p&gt;

&lt;p&gt;The generated projects include real-world essentials such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Logging&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Redis integration&lt;/li&gt;
&lt;li&gt;Docker support&lt;/li&gt;
&lt;li&gt;CI workflows&lt;/li&gt;
&lt;li&gt;API documentation&lt;/li&gt;
&lt;li&gt;Email services&lt;/li&gt;
&lt;li&gt;S3-compatible storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are things I add to almost every backend project.&lt;/p&gt;




&lt;h2&gt;
  
  
  How GitHub Copilot Helped
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot was heavily involved throughout development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generating Boilerplate Faster
&lt;/h3&gt;

&lt;p&gt;ArchGen itself generates boilerplate, but building the generator required writing a lot of repetitive code.&lt;/p&gt;

&lt;p&gt;Copilot helped accelerate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CLI command implementations&lt;/li&gt;
&lt;li&gt;Interactive prompt flows&lt;/li&gt;
&lt;li&gt;Template generation logic&lt;/li&gt;
&lt;li&gt;File system operations&lt;/li&gt;
&lt;li&gt;Validation helpers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Refactoring Large Template Systems
&lt;/h3&gt;

&lt;p&gt;As the project grew, I had to reorganize templates into reusable modules.&lt;/p&gt;

&lt;p&gt;Copilot was useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactoring duplicated logic&lt;/li&gt;
&lt;li&gt;Extracting reusable utilities&lt;/li&gt;
&lt;li&gt;Updating imports across files&lt;/li&gt;
&lt;li&gt;Generating repetitive template mappings&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Building Addon Support
&lt;/h3&gt;

&lt;p&gt;One of ArchGen's core features is addon injection:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archgen add docker
archgen add websocket
archgen add oauth
archgen add email
archgen add s3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copilot helped scaffold many of the repetitive integration points required to support multiple addons consistently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Generate a Full Backend Project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archgen create my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generates a production-ready backend structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multiple Language Support
&lt;/h3&gt;

&lt;p&gt;Node.js stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Fastify&lt;/li&gt;
&lt;li&gt;Prisma&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;li&gt;Zod&lt;/li&gt;
&lt;li&gt;Pino&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;SQLAlchemy 2.0&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;APScheduler&lt;/li&gt;
&lt;li&gt;Pydantic v2&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Add Features Later
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archgen add websocket
archgen add oauth
archgen add api-docs
archgen add email
archgen add s3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No need to regenerate the entire project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrade Existing Projects
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archgen upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ArchGen tracks project metadata and can re-apply updated templates later.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Creating a complete backend project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archgen create ecommerce-api &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--language&lt;/span&gt; node &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--docker&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--testing&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--ci&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--oauth&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--api-docs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fastify application&lt;/li&gt;
&lt;li&gt;Prisma setup&lt;/li&gt;
&lt;li&gt;Docker configuration&lt;/li&gt;
&lt;li&gt;GitHub Actions workflow&lt;/li&gt;
&lt;li&gt;OAuth integration&lt;/li&gt;
&lt;li&gt;API documentation&lt;/li&gt;
&lt;li&gt;Testing configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;in under a second.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo &amp;amp; Screenshots
&lt;/h2&gt;

&lt;p&gt;Here's a quick look at the ArchGen workflow, from project creation to the final generated codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interactive CLI Experience
&lt;/h3&gt;

&lt;p&gt;ArchGen guides developers through project creation using interactive prompts. Instead of memorizing dozens of flags, you can simply answer a few questions and generate a fully configured backend project.&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%2Fs9q8p65ozhfhyx02wphm.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%2Fs9q8p65ozhfhyx02wphm.png" alt="This is cli terminal" width="800" height="860"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Supported Languages and Addons
&lt;/h3&gt;

&lt;p&gt;The CLI allows developers to choose between Node.js and Python stacks, along with optional addons such as Docker, Testing, CI/CD, WebSocket support, OAuth, Email, S3 storage, and AI agent integrations.&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%2F01om8ud5aa592jbtg1rp.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%2F01om8ud5aa592jbtg1rp.png" alt="language and addons" width="798" height="149"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Detailed Stack Information
&lt;/h3&gt;

&lt;p&gt;Before generating a project, developers can inspect the complete technology stack. This helps teams understand exactly what will be included in the generated application.&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%2F9vqwdv2ikqvedcqoxxrm.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%2F9vqwdv2ikqvedcqoxxrm.png" alt="Detail of stack" width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Project Generation in Action
&lt;/h3&gt;

&lt;p&gt;Creating a production-ready backend takes only a few seconds. ArchGen automatically configures the selected stack, dependencies, and project structure.&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%2Fzm75mq79ylf08xuv7gmy.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%2Fzm75mq79ylf08xuv7gmy.png" alt="Test create by archgen" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Generated Production-Ready Structure
&lt;/h3&gt;

&lt;p&gt;The generated project includes a clean and opinionated architecture with modules, middleware, configuration, shared utilities, database integration, and other production essentials already wired together.&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%2Fzwq5un0pp3ltx31ej3s4.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%2Fzwq5un0pp3ltx31ej3s4.png" alt="Code space after genenerate by archgen" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Building ArchGen taught me that developer productivity isn't only about writing application code.&lt;/p&gt;

&lt;p&gt;A huge amount of engineering time is spent creating the same infrastructure repeatedly.&lt;/p&gt;

&lt;p&gt;By automating that setup process, developers can spend more time solving actual business problems.&lt;/p&gt;

&lt;p&gt;GitHub Copilot helped me move much faster, especially when implementing repetitive scaffolding logic and maintaining consistency across templates.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;GitHub Repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kidkender/archgen" rel="noopener noreferrer"&gt;https://github.com/Kidkender/archgen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NPM Package:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@kidkender/archgen" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@kidkender/archgen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>tooling</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Finally Finished the Architecture Tool I Abandoned 2 Months Ago</title>
      <dc:creator>Duck</dc:creator>
      <pubDate>Tue, 02 Jun 2026 04:49:42 +0000</pubDate>
      <link>https://dev.to/kidkender/i-finally-finished-the-architecture-tool-i-abandoned-2-months-ago-2hck</link>
      <guid>https://dev.to/kidkender/i-finally-finished-the-architecture-tool-i-abandoned-2-months-ago-2hck</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Two months ago, I started building an experimental tool called &lt;strong&gt;ArchMind&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if software architecture could be tested the same way we test behavior?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In large Laravel applications, a single request often spans multiple layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Route
 → Middleware
 → Authentication
 → Controller
 → Service
 → Transaction
 → Event
 → Listener
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tests verify behavior.&lt;/p&gt;

&lt;p&gt;Static analysis verifies code quality.&lt;/p&gt;

&lt;p&gt;But architectural changes often slip through unnoticed.&lt;/p&gt;

&lt;p&gt;A missing &lt;code&gt;DB::transaction()&lt;/code&gt;, a removed middleware, or a missing authorization layer can pass tests and code review while still creating production issues.&lt;/p&gt;

&lt;p&gt;ArchMind parses Laravel applications into execution graphs and helps developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visualize execution flows&lt;/li&gt;
&lt;li&gt;Detect architecture findings&lt;/li&gt;
&lt;li&gt;Track architectural drift&lt;/li&gt;
&lt;li&gt;Prevent topology regressions in CI&lt;/li&gt;
&lt;li&gt;Provide execution-aware context for AI assistants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is open source and available on npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @kidkender/archmind
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kidkender/archMind" rel="noopener noreferrer"&gt;https://github.com/Kidkender/archMind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;npm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@kidkender/archmind" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@kidkender/archmind&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Trace a Route
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archmind trace &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"POST /orders"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /orders
└─ auth:sanctum
   └─ ResolveTenant
      └─ OrderController::store
         └─ OrderService::createOrder
            └─ DB::transaction
               ├─ Order::create
               └─ OrderCreated
&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%2F9epke58ct97aht3p2ni4.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%2F9epke58ct97aht3p2ni4.png" alt="" width="798" height="648"&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%2Fxmzoyd0i5z1d0xzse6j2.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%2Fxmzoyd0i5z1d0xzse6j2.png" alt="" width="497" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Detect Architecture Regressions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archmind verify &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✘ TOPOLOGY REGRESSION

Route:
  POST /orders

Lost:
  transaction_boundary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This catches situations where important architectural guarantees disappear during refactoring.&lt;/p&gt;

&lt;h3&gt;
  
  
  CI Integration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm install -g @kidkender/archmind&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;archmind verify --project .&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a transaction boundary, authentication layer, or tenant isolation mechanism disappears, CI fails immediately.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📸 Insert screenshot: &lt;code&gt;archmind trace&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;📸 Insert screenshot: &lt;code&gt;archmind verify&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;When I originally started ArchMind, it was little more than an experiment.&lt;/p&gt;

&lt;p&gt;It could parse Laravel routes and generate a basic execution graph.&lt;/p&gt;

&lt;p&gt;That was interesting, but not useful enough for real projects.&lt;/p&gt;

&lt;p&gt;At that point the project was missing almost everything required to be practical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;

&lt;p&gt;❌ No topology regression detection&lt;/p&gt;

&lt;p&gt;❌ No architecture findings&lt;/p&gt;

&lt;p&gt;❌ No CI integration&lt;/p&gt;

&lt;p&gt;❌ No retrieval benchmarks&lt;/p&gt;

&lt;p&gt;❌ No npm package&lt;/p&gt;

&lt;p&gt;❌ No real-world validation&lt;/p&gt;

&lt;p&gt;The project sat unfinished while I worked on other things.&lt;/p&gt;

&lt;p&gt;A few months later I revisited the idea after encountering a production issue caused by an architectural change that passed both tests and code review.&lt;/p&gt;

&lt;p&gt;That experience convinced me there was still something worth pursuing.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Added
&lt;/h3&gt;

&lt;p&gt;Over the following months I completed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execution graph engine&lt;/li&gt;
&lt;li&gt;Architecture findings system&lt;/li&gt;
&lt;li&gt;Topology regression detection&lt;/li&gt;
&lt;li&gt;CI workflows&lt;/li&gt;
&lt;li&gt;Retrieval engine improvements&lt;/li&gt;
&lt;li&gt;Benchmark suite&lt;/li&gt;
&lt;li&gt;npm publishing&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Results
&lt;/h3&gt;

&lt;p&gt;Retrieval recall improved from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.71 → 1.00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Architecture QA benchmark:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ArchMind&lt;/td&gt;
&lt;td&gt;76.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File-based retrieval&lt;/td&gt;
&lt;td&gt;61.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Token usage reduction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Up to 15.6× smaller context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most importantly, the project evolved from a prototype into something developers can actually install and use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📸 Insert screenshot: benchmark table&lt;/p&gt;

&lt;p&gt;📸 Insert screenshot: npm package page&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot played a significant role in helping me finish the project.&lt;/p&gt;

&lt;p&gt;One of the hardest parts of reviving an older codebase is rebuilding momentum.&lt;/p&gt;

&lt;p&gt;After several months away from ArchMind, there were many areas where I needed to quickly re-familiarize myself with the implementation.&lt;/p&gt;

&lt;p&gt;Copilot helped by:&lt;/p&gt;

&lt;h3&gt;
  
  
  Accelerating Refactors
&lt;/h3&gt;

&lt;p&gt;Large portions of the execution graph engine required repeated traversal and visitor patterns.&lt;/p&gt;

&lt;p&gt;Copilot generated boilerplate structures that I could adapt rather than writing everything from scratch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expanding Test Coverage
&lt;/h3&gt;

&lt;p&gt;Copilot helped generate test scaffolding and edge-case scenarios that I later refined and validated manually.&lt;/p&gt;

&lt;p&gt;This made it easier to improve confidence while evolving the architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation and Examples
&lt;/h3&gt;

&lt;p&gt;Many CLI examples, usage snippets, and documentation sections were drafted with Copilot assistance and then edited for accuracy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reducing Context Switching
&lt;/h3&gt;

&lt;p&gt;Most importantly, Copilot reduced the friction of returning to an unfinished project.&lt;/p&gt;

&lt;p&gt;Instead of spending hours reconstructing implementation details, I could iterate faster and focus on the architectural ideas behind the tool.&lt;/p&gt;




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

&lt;p&gt;The biggest lesson from finishing ArchMind is that architecture itself can be treated as data.&lt;/p&gt;

&lt;p&gt;Once architecture becomes a graph, it becomes possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version it&lt;/li&gt;
&lt;li&gt;Query it&lt;/li&gt;
&lt;li&gt;Compare it&lt;/li&gt;
&lt;li&gt;Verify it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That realization transformed ArchMind from an abandoned side project into a tool that developers can use to protect architectural intent in production systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tests verify behavior.&lt;/p&gt;

&lt;p&gt;ArchMind verifies architecture.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kidkender/archMind" rel="noopener noreferrer"&gt;https://github.com/Kidkender/archMind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@kidkender/archmind" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@kidkender/archmind&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
    <item>
      <title>Tests Verify Behavior. ArchMind Verifies Architecture.</title>
      <dc:creator>Duck</dc:creator>
      <pubDate>Tue, 02 Jun 2026 03:06:09 +0000</pubDate>
      <link>https://dev.to/kidkender/tests-verify-behavior-archmind-verifies-architecture-lpi</link>
      <guid>https://dev.to/kidkender/tests-verify-behavior-archmind-verifies-architecture-lpi</guid>
      <description>&lt;p&gt;The PR was 14 lines.&lt;/p&gt;

&lt;p&gt;The incident cost two days.&lt;/p&gt;

&lt;p&gt;Tests passed. Code review approved. Production corrupted customer orders anyway.&lt;/p&gt;

&lt;p&gt;Someone refactored &lt;code&gt;OrderService&lt;/code&gt;. One method call moved outside &lt;code&gt;DB::transaction()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The email notification failed mid-request.&lt;/p&gt;

&lt;p&gt;Half the order was written. Half wasn't.&lt;/p&gt;

&lt;p&gt;The diff looked harmless.&lt;/p&gt;

&lt;p&gt;The types were correct.&lt;/p&gt;

&lt;p&gt;The logic seemed unchanged.&lt;/p&gt;

&lt;p&gt;The architecture was not.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem I kept running into
&lt;/h2&gt;

&lt;p&gt;Modern Laravel applications rarely execute inside a single file.&lt;/p&gt;

&lt;p&gt;A request often flows through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Route
 → Middleware
 → FormRequest
 → Policy
 → Controller
 → Service
 → Transaction
 → Event
 → Listener
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bigger the application becomes, the harder it is to understand this flow.&lt;/p&gt;

&lt;p&gt;Most tooling doesn't help much.&lt;/p&gt;

&lt;p&gt;PHPStan verifies types.&lt;/p&gt;

&lt;p&gt;Tests verify behavior.&lt;/p&gt;

&lt;p&gt;Code review focuses on diffs.&lt;/p&gt;

&lt;p&gt;But none of them answer a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did the execution architecture of this route change?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /orders

Before:
  auth
  tenant middleware
  DB::transaction
  Order::create
  OrderCreated event

After:
  auth
  tenant middleware
  Order::create
  OrderCreated event
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The transaction disappeared.&lt;/p&gt;

&lt;p&gt;The code still compiles.&lt;/p&gt;

&lt;p&gt;The tests may still pass.&lt;/p&gt;

&lt;p&gt;But the architecture has changed.&lt;/p&gt;




&lt;h2&gt;
  
  
  I wanted architecture to become testable
&lt;/h2&gt;

&lt;p&gt;Frontend teams have snapshot testing.&lt;/p&gt;

&lt;p&gt;If a UI unexpectedly changes, CI catches it.&lt;/p&gt;

&lt;p&gt;I started wondering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if we could do the same thing for execution architecture?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That idea became ArchMind.&lt;/p&gt;

&lt;p&gt;Instead of treating a Laravel project as a collection of files, ArchMind builds an execution graph.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Route
 → Middleware
 → Controller
 → Service
 → Transaction
 → Event
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The graph becomes a baseline.&lt;/p&gt;

&lt;p&gt;Future commits are compared against it.&lt;/p&gt;

&lt;p&gt;If an important architectural component disappears, ArchMind reports a topology regression.&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 plaintext"&gt;&lt;code&gt;✘ TOPOLOGY REGRESSION: POST /orders

lost:
  transaction_boundary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CI fails before the change reaches production.&lt;/p&gt;




&lt;h2&gt;
  
  
  What ArchMind actually does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Trace execution flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archmind trace &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"POST /orders"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /orders
└─ auth:sanctum
   └─ ResolveTenant
      └─ OrderController::store
         └─ OrderService::createOrder
            └─ DB::transaction
               ├─ Order::create
               └─ OrderCreated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This provides a route-level view of the execution path.&lt;/p&gt;

&lt;p&gt;No digging through controllers, services, events, and listeners manually.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Detect topology regressions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archmind verify &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✘ TOPOLOGY REGRESSION

Route:
  POST /orders

Lost:
  transaction_boundary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to verify business logic.&lt;/p&gt;

&lt;p&gt;The goal is to verify architecture.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Surface architecture findings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archmind findings &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;missing_authorization

Route is authenticated
but no authorization layer was detected.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;transaction_escape

Event dispatched from inside
a transaction boundary.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These findings are intentionally conservative.&lt;/p&gt;

&lt;p&gt;The idea is to surface architectural risks for review rather than claim guaranteed vulnerabilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  An unexpected side effect: better AI context
&lt;/h2&gt;

&lt;p&gt;Originally, ArchMind was not built as an AI tool.&lt;/p&gt;

&lt;p&gt;It started as a static analysis and architecture verification tool.&lt;/p&gt;

&lt;p&gt;But once an execution graph existed, it became useful for retrieval as well.&lt;/p&gt;

&lt;p&gt;Most AI coding tools work roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
 ↓
Find similar files
 ↓
Send files to LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ArchMind instead retrieves execution context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question:
Why does this payment endpoint sometimes double-charge customers?

Relevant context:
- transaction boundary
- payment event dispatch
- after-commit listener
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In benchmark tests on real Laravel applications:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;ArchMind&lt;/th&gt;
&lt;th&gt;File Dump&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Correct answers&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average score&lt;/td&gt;
&lt;td&gt;76.7%&lt;/td&gt;
&lt;td&gt;61.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens per query&lt;/td&gt;
&lt;td&gt;~700&lt;/td&gt;
&lt;td&gt;~9000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interesting result wasn't just higher accuracy.&lt;/p&gt;

&lt;p&gt;It was that the execution graph compressed architecture knowledge into a much smaller context window.&lt;/p&gt;




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

&lt;p&gt;At a high level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PHP Source
    ↓
Tree-sitter parsing
    ↓
Laravel-aware analysis
    ↓
Execution Graph
    ↓
Topology Verification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No PHP runtime required.&lt;/p&gt;

&lt;p&gt;Current support includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel 10&lt;/li&gt;
&lt;li&gt;Laravel 11&lt;/li&gt;
&lt;li&gt;Laravel 12&lt;/li&gt;
&lt;li&gt;Middleware chains&lt;/li&gt;
&lt;li&gt;FormRequests&lt;/li&gt;
&lt;li&gt;Policies&lt;/li&gt;
&lt;li&gt;Transactions&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Route groups&lt;/li&gt;
&lt;li&gt;apiResource routes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What ArchMind does not do
&lt;/h2&gt;

&lt;p&gt;It's important to be clear about limitations.&lt;/p&gt;

&lt;p&gt;ArchMind will not catch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect business logic&lt;/li&gt;
&lt;li&gt;Off-by-one errors&lt;/li&gt;
&lt;li&gt;Wrong comparison operators&lt;/li&gt;
&lt;li&gt;Runtime bugs caused by external services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It focuses on structural and architectural changes.&lt;/p&gt;

&lt;p&gt;Think of it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Snapshot testing for execution architecture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not a replacement for tests.&lt;/p&gt;

&lt;p&gt;Not a replacement for static analysis.&lt;/p&gt;

&lt;p&gt;An additional layer that verifies architectural intent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example CI setup
&lt;/h2&gt;

&lt;p&gt;Save a baseline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archmind verify &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--update&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Commit it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add .archmind/baselines
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"chore: add topology baseline"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run in CI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm install -g @kidkender/archmind&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;archmind verify --project .&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a transaction boundary disappears, an auth middleware is removed, or a protected route loses part of its architecture, the build fails.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;The most interesting realization from this project wasn't about Laravel.&lt;/p&gt;

&lt;p&gt;It was this:&lt;/p&gt;

&lt;p&gt;Tests verify behavior.&lt;/p&gt;

&lt;p&gt;Architecture usually lives in people's heads.&lt;/p&gt;

&lt;p&gt;When architecture becomes a graph, it becomes something we can version, compare, and verify.&lt;/p&gt;

&lt;p&gt;That's the idea behind ArchMind.&lt;/p&gt;

&lt;p&gt;I'd love feedback from Laravel developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have architectural regressions caused incidents in your projects?&lt;/li&gt;
&lt;li&gt;How do you currently review execution flow changes?&lt;/li&gt;
&lt;li&gt;Would architecture-level verification be useful in your CI pipeline?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Kidkender/archMind" rel="noopener noreferrer"&gt;https://github.com/Kidkender/archMind&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Write a telegram mini app</title>
      <dc:creator>Duck</dc:creator>
      <pubDate>Sat, 27 Jul 2024 10:39:36 +0000</pubDate>
      <link>https://dev.to/kidkender/duck-tma-2kh9</link>
      <guid>https://dev.to/kidkender/duck-tma-2kh9</guid>
      <description>&lt;p&gt;I wrote a telegram mini app that uses the user's telegram join date and gives them token rewards, features include leaderboard, or referral friends.&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%2Fyq8wdj5h4rj8szhdnm25.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%2Fyq8wdj5h4rj8szhdnm25.png" alt=" " width="476" height="737"&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%2F31wtp5g9gb6lujka7fo2.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%2F31wtp5g9gb6lujka7fo2.png" alt=" " width="480" height="736"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tma</category>
      <category>ton</category>
    </item>
  </channel>
</rss>
