<?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>Forem: NanoAPI</title>
    <description>The latest articles on Forem by NanoAPI (@nanoapi_io).</description>
    <link>https://forem.com/nanoapi_io</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%2Forganization%2Fprofile_image%2F10585%2F971747ec-4d1b-49b1-b420-d9adaa2a6674.jpg</url>
      <title>Forem: NanoAPI</title>
      <link>https://forem.com/nanoapi_io</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nanoapi_io"/>
    <language>en</language>
    <item>
      <title>Symbol Extraction - Killing Modular Monoliths</title>
      <dc:creator>Joel Milligan</dc:creator>
      <pubDate>Thu, 29 May 2025 14:53:29 +0000</pubDate>
      <link>https://forem.com/nanoapi_io/symbol-extraction-killing-modular-monoliths-3af7</link>
      <guid>https://forem.com/nanoapi_io/symbol-extraction-killing-modular-monoliths-3af7</guid>
      <description>&lt;p&gt;Let’s be honest: &lt;strong&gt;rewriting legacy systems sucks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s expensive. It’s slow. It’s risky. And it often fails.&lt;/p&gt;

&lt;p&gt;At NanoAPI, we’re building a new way forward—one that lets you evolve your system by &lt;strong&gt;extracting functionality&lt;/strong&gt; instead of rewriting everything from scratch. Our goal is to help teams innovate, scale, and adapt without the weight of technical debt dragging them down.&lt;/p&gt;

&lt;p&gt;Because legacy systems shouldn’t be anchors - they should be launchpads.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Why Is This a Problem?
&lt;/h2&gt;

&lt;p&gt;Most modern software systems weren’t designed—they evolved. Over time, teams change, frameworks become outdated, and business logic sprawls across thousands of lines of code.&lt;/p&gt;

&lt;p&gt;The result? Monoliths that no one fully understands. You touch one thing and something else breaks. A single function call could be trivial—or it could power your entire payments pipeline. Good luck figuring out which.&lt;/p&gt;

&lt;p&gt;This complexity kills velocity. It paralyzes decision-making. And for leadership, it’s nearly impossible to assess what parts of the system are fragile, valuable, or safe to change.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. How Do People Solve This Today?
&lt;/h2&gt;

&lt;p&gt;There are two dominant approaches on the market today, and both are painful:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rewrite Everything (a.k.a. "The Big Rewrite")&lt;/strong&gt;&lt;br&gt;
Tools like &lt;a href="https://claudiajs.com/" rel="noopener noreferrer"&gt;Claudia.js&lt;/a&gt; or the Modular Monolith pattern encourage extraction though rebuilding around modern paradigms (e.g. serverless), but this typically demands a full migration and deep re-architecting. Even if it starts small, it spirals into years of work. Rewrites introduce regressions, delay product roadmaps, and often stall out before delivering value. A middle-ground approach often used here is the manually-driven &lt;a href="https://medium.com/@josesousa8/the-strangler-pattern-kill-legacy-like-a-boss-db3db41564ed" rel="noopener noreferrer"&gt;Strangler Pattern&lt;/a&gt;, which still requires years of effort.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Apply AI to Understand Codebases&lt;/strong&gt;&lt;br&gt;
The promise is tempting: use LLMs to analyze your code and tell you what’s important-or even better, rewrite the whole damn thing for you. But there’s a catch—context windows are too small for real-world monoliths. AI tools may hallucinate, struggle to maintain consistency across files, and miss deeper structural relationships. You end up with surface-level insights, not surgical extractions.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both options feel like hacking through a jungle with a butter knife.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. NanoAPI's Solution – Symbol Extraction
&lt;/h2&gt;

&lt;p&gt;At NanoAPI, we believe the right abstraction layer is the &lt;strong&gt;symbol&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We built a platform that helps teams extract critical functionality from legacy codebases by analyzing symbols—functions, classes, and variables—mapped into an architectural graph.&lt;/p&gt;

&lt;p&gt;This process, which we call &lt;strong&gt;symbol extraction&lt;/strong&gt;, lets you isolate self-contained pieces of your system, see how they depend on each other, and surgically extract or modularize them with confidence.&lt;/p&gt;

&lt;p&gt;No rewrites. No guesswork. Just precision tooling for technical debt.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. What Are Symbols?
&lt;/h2&gt;

&lt;p&gt;In software, a &lt;strong&gt;symbol&lt;/strong&gt; is any named element in your code: a function, class, variable, or module. These are the building blocks of your system’s logic.&lt;/p&gt;

&lt;p&gt;Think of them like DNA for your application. Each symbol contains business logic, and together they form complex, interdependent behavior.&lt;/p&gt;

&lt;p&gt;By analyzing symbols and how they reference each other, we can reconstruct a &lt;strong&gt;living architecture&lt;/strong&gt; of your codebase—one that’s often more accurate than documentation or diagrams ever were.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. What Is the Benefit of This Approach Over Other Tools?
&lt;/h2&gt;

&lt;p&gt;Symbol extraction has several key advantages over conventional methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It’s deterministic.&lt;/strong&gt; We don’t guess. We analyze. Our system maps your code’s actual behavior, not just inferred patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No need to rewrite.&lt;/strong&gt; Our tool is integrated in 5 minutes: instead of migrating everything over years, you selectively extract what matters right away.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture lives in code.&lt;/strong&gt; Forget stale diagrams—your architecture becomes queryable, visual, and up-to-date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe, modular extraction.&lt;/strong&gt; You can break down a monolith into clean components without introducing regressions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clarity at scale.&lt;/strong&gt; From a single function to a sprawling app, you get an interactive map of what your code is doing and why.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not just code transformation—it’s &lt;strong&gt;code as architecture&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. What Are the Outcomes for Teams and Tech Leadership?
&lt;/h2&gt;

&lt;p&gt;For &lt;strong&gt;engineering teams&lt;/strong&gt;, NanoAPI means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding dependencies instantly&lt;/li&gt;
&lt;li&gt;Knowing what’s safe to extract and what’s tightly coupled&lt;/li&gt;
&lt;li&gt;Preserving core logic while shedding dead weight&lt;/li&gt;
&lt;li&gt;Making real progress on tech debt without fear&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For &lt;strong&gt;tech leadership&lt;/strong&gt;, it means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accelerating innovation without rewriting from scratch&lt;/li&gt;
&lt;li&gt;Unlocking architectural visibility across teams and services&lt;/li&gt;
&lt;li&gt;Bridging the gap between today’s monoliths and tomorrow’s modular systems&lt;/li&gt;
&lt;li&gt;Making informed decisions on investment, risk, and scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As companies shift toward serverless or modular monolith architectures, NanoAPI becomes the evolution engine—not a rip-and-replace tool, but a precision scalpel.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. How You Can Help
&lt;/h2&gt;

&lt;p&gt;We’re building NanoAPI in the open—with engineers, architects, and teams like yours in mind.&lt;/p&gt;

&lt;p&gt;Here’s how you can get involved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Try our open-source tool&lt;/strong&gt; and give us feedback: &lt;a href="https://github.com/nanoapi-io/napi" rel="noopener noreferrer"&gt;github.com/nanoapi-io/napi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Join the community&lt;/strong&gt; on &lt;a href="https://discord.gg/dFWTtRvJdk" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contribute use cases or PRs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talk to us&lt;/strong&gt; about using NanoAPI in your migration or modernization efforts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, we can turn legacy systems from roadblocks into runways—and bring architecture in line with reality.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want More Information or Help Get Involved?
&lt;/h2&gt;

&lt;p&gt;If you’re facing architectural bottlenecks, uncertainty in legacy systems, or need help guiding technical transformation, &lt;strong&gt;NanoAPI can help&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We’d love your feedback, ideas, and contributions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;a href="https://nanoapi.io" rel="noopener noreferrer"&gt;nanoapi.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔍 &lt;a href="https://docs.nanoapi.io" rel="noopener noreferrer"&gt;docs.nanoapi.io&lt;/a&gt; - Our documentation&lt;/li&gt;
&lt;li&gt;🐙 &lt;a href="https://github.com/nanoapi-io/napi" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; — star us ⭐
&lt;/li&gt;
&lt;li&gt;📬 Reach out via &lt;a href="mailto:sales@nanoapi.io"&gt;email&lt;/a&gt; — we’re always happy to connect&lt;/li&gt;
&lt;li&gt;👾 Join our &lt;a href="https://discord.gg/dFWTtRvJdk" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; community!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>symbolextraction</category>
    </item>
    <item>
      <title>NanoAPI v1.0.9: Migration to Deno &amp; Performance Boost 🚀</title>
      <dc:creator>Joel Milligan</dc:creator>
      <pubDate>Mon, 26 May 2025 08:45:40 +0000</pubDate>
      <link>https://forem.com/nanoapi_io/nanoapi-v109-migration-to-deno-performance-boost-1dc8</link>
      <guid>https://forem.com/nanoapi_io/nanoapi-v109-migration-to-deno-performance-boost-1dc8</guid>
      <description>&lt;p&gt;We're excited to announce the newest release of &lt;strong&gt;NanoAPI v1.0.9&lt;/strong&gt;! This release represents a massive architectural overhaul with our migration from Node.js to Deno, which delivers substantial performance improvements and a streamlined development experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What's New in v1.0.9
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Deno Migration &amp;amp; Performance Revolution
&lt;/h3&gt;

&lt;p&gt;We've rebuilt NanoAPI to leverage Deno's modern capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Native Deno modules to replace all Node.js dependencies, dramatically reducing bundle size&lt;/li&gt;
&lt;li&gt;Migrated from Express to Oak framework (&lt;code&gt;JSR:@oak/oak&lt;/code&gt;) for seamless Deno compatibility&lt;/li&gt;
&lt;li&gt;Eliminated some external dependencies (&lt;code&gt;uuid&lt;/code&gt;, &lt;code&gt;express&lt;/code&gt;, &lt;code&gt;http-proxy-middleware&lt;/code&gt;, &lt;code&gt;octokit&lt;/code&gt;) in favor of Deno's built-in modules&lt;/li&gt;
&lt;li&gt;Adopted JSR registry for standard libraries (&lt;code&gt;@std/path@^1.0.9&lt;/code&gt;) to leverage Deno's ecosystem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The improved performance is noticeable immediately, due to faster startup times and a reduction in the overall memory footprint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why We Opted for Deno
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deno takes a more modern approach than Node.js, because it enables direct URL imports, which eliminates the need for a package manager&lt;/li&gt;
&lt;li&gt;Deno has a commitment to web platform compatibility, and allows browser APIs like Fetch and Web Workers to work natively on the server, creating a unified development experience.&lt;/li&gt;
&lt;li&gt;Security is key for Deno - it has a permission-based security model which restricts system access by default, allowing for a more granular control over what applications can do.&lt;/li&gt;
&lt;li&gt;Furthermore, it offers built-in testing, formatting, linting, and bundling tools to mean fewer dependencies and a more cohesive development workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A More Streamlined Build &amp;amp; Deployment
&lt;/h3&gt;

&lt;p&gt;We've revamped how NanoAPI is distributed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The release is now shiiped as Deno executables published on GitHub, instead of the npm registry&lt;/li&gt;
&lt;li&gt;A more convenient installation script&lt;/li&gt;
&lt;li&gt;Optimized GitHub Actions with faster build times and reduced complexity&lt;/li&gt;
&lt;li&gt;Improved our installation documentation to guide you through the upgrade&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enhanced API &amp;amp; Developer Experience
&lt;/h3&gt;

&lt;p&gt;Every aspect of the developer experience has been refined:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart version checking with native fetch API and 5-second timeout protection&lt;/li&gt;
&lt;li&gt;GitHub-first version verification (goodbye npm registry dependencies)&lt;/li&gt;
&lt;li&gt;Cross-platform browser launching using &lt;code&gt;Deno.Command&lt;/code&gt; for consistent behavior&lt;/li&gt;
&lt;li&gt;Native port detection leveraging Deno's networking APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend Modernization
&lt;/h3&gt;

&lt;p&gt;The user interface has received a complete refresh:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improved Integration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seamless API communication between frontend and backend&lt;/li&gt;
&lt;li&gt;Optimized routing that works perfectly with Oak middleware&lt;/li&gt;
&lt;li&gt;Enhanced file explorer with improved dependency graph connectivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modern Components:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upgraded from bare Radix UI to the comprehensive Shadcn/UI component library&lt;/li&gt;
&lt;li&gt;Streamlined UX flows for intuitive user interactions&lt;/li&gt;
&lt;li&gt;Better visual feedback and responsive design patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Getting Started with v1.0.9
&lt;/h2&gt;

&lt;p&gt;Ready to experience the new NanoAPI? Here's everything you need to know:&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Quick install via our convenience script&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/your-repo/nanoapi/main/install.sh | sh

&lt;span class="c"&gt;# Or download directly from GitHub releases&lt;/span&gt;
&lt;span class="c"&gt;# Visit: https://github.com/your-repo/nanoapi/releases/latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Migration from Previous Versions
&lt;/h3&gt;

&lt;p&gt;If you're upgrading from an earlier version:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Backup your current configuration&lt;/strong&gt; - While v1.0.9 maintains API compatibility, it's always good practice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update your scripts&lt;/strong&gt; - Replace any Node.js-specific calls with Deno equivalents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review permissions&lt;/strong&gt; - Deno's security model may require explicit permission flags&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What's Next?
&lt;/h3&gt;

&lt;p&gt;This release sets the foundation for exciting features coming in future versions. We're already working on enhanced TypeScript support, additional built-in utilities, and expanded deployment options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do You Have Any Questions or Feedback?
&lt;/h2&gt;

&lt;p&gt;Join our community discussions on GitHub or reach out on our Discord server. We'd love to hear about your experience with the new Deno-powered NanoAPI!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;a href="https://nanoapi.io" rel="noopener noreferrer"&gt;nanoapi.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔍 &lt;a href="https://docs.nanoapi.io" rel="noopener noreferrer"&gt;docs.nanoapi.io&lt;/a&gt; - Our documentation&lt;/li&gt;
&lt;li&gt;🐙 &lt;a href="https://github.com/nanoapi-io/napi" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; — star us ⭐
&lt;/li&gt;
&lt;li&gt;📬 Reach out via &lt;a href="mailto:sales@nanoapi.io"&gt;email&lt;/a&gt; — we’re always happy to connect&lt;/li&gt;
&lt;li&gt;👾 Join our &lt;a href="https://discord.gg/dFWTtRvJdk" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; community&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’d love your feedback, ideas, and contributions!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>deno</category>
      <category>javascript</category>
      <category>release</category>
    </item>
    <item>
      <title>Using NanoAPI on Game Mods</title>
      <dc:creator>Thea </dc:creator>
      <pubDate>Wed, 21 May 2025 09:01:41 +0000</pubDate>
      <link>https://forem.com/nanoapi_io/using-nanoapi-on-game-mods-1392</link>
      <guid>https://forem.com/nanoapi_io/using-nanoapi-on-game-mods-1392</guid>
      <description>&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Game mods often evolve into monolithic codebases over time. With the industry shifting toward cloud-native and serverless architectures, tools like NanoAPI help developers to discover dependencies and can help to guide developers to improve these without full rewrites. Here’s how we applied it to the &lt;a href="https://github.com/ArchipelagoMW-HollowKnight/Archipelago.HollowKnight" rel="noopener noreferrer"&gt;Archipelago Hollow Knight mod&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: NanoAPI is compatible with Windows by running it on WSL (Windows Linux Subsystem) at the moment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Clone the Mod Repo
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /mnt/c/Mods  # Windows path mounted in WSL
git clone https://github.com/ArchipelagoMW-HollowKnight/Archipelago.HollowKnight
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I downloaded the mods into a folder on my Windows partition called C:/Mods, and then in my WSL terminal I am going to the correct directory &lt;code&gt;cd Archipelago.HollowKnight-main/&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%2Fpbaazezu8crzc6zbazp4.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%2Fpbaazezu8crzc6zbazp4.png" alt="Screenshot of Terminal" width="800" height="93"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;napi&lt;/code&gt; works out of the box on both mac and Linux systems. To use this tool on Windows, you will need to install WSL (Windows Subsystem for Linux) and run the CLI commands from there.&lt;br&gt;
Make sure that Node.js (&amp;gt;=22) and npm are installed &lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;https://nodejs.org/en&lt;/a&gt;.&lt;br&gt;
Then the command we run is &lt;code&gt;npm install -g @nanoapi.io/napi&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%2Far1yd3ri4jc3ocaqv9ik.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%2Far1yd3ri4jc3ocaqv9ik.png" alt="Showing the installing process" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️ These warning are to be expected, no worries!&lt;/p&gt;

&lt;p&gt;Then we are going to run &lt;code&gt;napi init&lt;/code&gt; in the terminal. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Give the backend a minute on first run; C# reflection is 🐢‑slow on big projects.&lt;/p&gt;
&lt;/blockquote&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%2Fjk5ikjrgvf6qmu99b949.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%2Fjk5ikjrgvf6qmu99b949.png" alt="Image description" width="800" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we select the codebase’s language (which in this case is C#)&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%2Fz8c7o0zdb2tdc5a99zbq.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%2Fz8c7o0zdb2tdc5a99zbq.png" alt="Image description" width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I kept press enter to choose the default ouput file for for NanoAPI&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%2Foth792hvxni4f8629vhj.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%2Foth792hvxni4f8629vhj.png" alt="Image description" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I type “Y”, because I want to use the selected include patterns &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%2F6958jyylds3inqhkrn8f.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%2F6958jyylds3inqhkrn8f.png" alt="Image description" width="800" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I type Y again&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%2Fjlf30aaq7ctw54xjbg1r.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%2Fjlf30aaq7ctw54xjbg1r.png" alt="Image description" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I type Y again Because I want to use the code Metrics&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%2Fvxd7gz3dwu3dva175s2g.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%2Fvxd7gz3dwu3dva175s2g.png" alt="Image description" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I kept pressing enter to use the suggested default values of nanoAPI&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%2Fxo4llk58a4p0f9v3lx6v.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%2Fxo4llk58a4p0f9v3lx6v.png" alt="Image description" width="800" height="228"&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%2Fbrktgye1rfk6p0tci0xn.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%2Fbrktgye1rfk6p0tci0xn.png" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we have the configuration configured, we’ll run &lt;code&gt;napi audit view&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then there will be a link to a localhost port which we can view in the web browser.&lt;/p&gt;
&lt;h3&gt;
  
  
  Set up complete
&lt;/h3&gt;

&lt;p&gt;Now this is what our website looks like:&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%2Ff7c3iee14wj33yxjm2m9.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%2Ff7c3iee14wj33yxjm2m9.png" alt="Image description" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once set up, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the web viewer.&lt;/li&gt;
&lt;li&gt;Use the sidebar to explore extracted symbols.&lt;/li&gt;
&lt;li&gt;Investigate how each symbol is traced and annotated.&lt;/li&gt;
&lt;li&gt;Review warnings such as dependency overloads and decide what to address or ignore.&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.amazonaws.com%2Fuploads%2Farticles%2Ffxlcuickvphw7qb0q2m7.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%2Ffxlcuickvphw7qb0q2m7.png" alt="Image description" width="800" height="421"&gt;&lt;/a&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%2Fjtlmg5wnp4uq2ddwk2h5.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%2Fjtlmg5wnp4uq2ddwk2h5.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Finished!
&lt;/h2&gt;

&lt;p&gt;For more information - &lt;a href="https://docs.nanoapi.io" rel="noopener noreferrer"&gt;&lt;strong&gt;read the docs:&lt;/strong&gt;&lt;/a&gt; for advanced configs and API extraction.&lt;/p&gt;
&lt;h2&gt;
  
  
  Want More Information or Help Get Involved?
&lt;/h2&gt;

&lt;p&gt;We’d love your feedback, ideas, and contributions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;a href="https://nanoapi.io" rel="noopener noreferrer"&gt;Our website! nanoapi.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔍 Our documentation &lt;a href="https://docs.nanoapi.io" rel="noopener noreferrer"&gt;docs.nanoapi.io&lt;/a&gt; - &lt;/li&gt;
&lt;li&gt;🐙 &lt;a href="https://github.com/nanoapi-io/napi" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; — star us ⭐
&lt;/li&gt;
&lt;li&gt;📬 Reach out via &lt;a href="//mailto:sales@nanoapi.io"&gt;email&lt;/a&gt; — we’re always happy to connect&lt;/li&gt;
&lt;li&gt;👾 Join our &lt;a href="https://discord.gg/dFWTtRvJdk" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; community!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Troubleshooting Notes
&lt;/h2&gt;

&lt;p&gt;I had an issue where it stated &lt;br&gt;
&lt;code&gt;Error: No .csproj files found.&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%2Fh8k0tdg5ib8t9ehtcgt1.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%2Fh8k0tdg5ib8t9ehtcgt1.png" alt="Image description" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so then I nano'd into .napirc and I manually included .csproj&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "language": "c-sharp",
  "project": {
    "include": [
      "**/*.cs",
      "**/*.csproj"  # Added this line
    ],
    "exclude": [ ... ]
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>csharp</category>
      <category>modding</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🚀 Introducing NanoAPI v1.0.6 — Our First Stable Release!</title>
      <dc:creator>Joel Milligan</dc:creator>
      <pubDate>Wed, 30 Apr 2025 13:54:07 +0000</pubDate>
      <link>https://forem.com/nanoapi_io/introducing-nanoapi-v106-our-first-stable-release-3066</link>
      <guid>https://forem.com/nanoapi_io/introducing-nanoapi-v106-our-first-stable-release-3066</guid>
      <description>&lt;p&gt;We’re excited to announce &lt;strong&gt;NanoAPI v1.0.6&lt;/strong&gt;, the next release of our source-available developer tool focused on building &lt;strong&gt;better software architecture in the AI age&lt;/strong&gt;. In comparison with traditional refactoring tools, NanoAPI gives developers full visibility and control over their architecture, making refactoring easier, safer, and more efficient for everyone.&lt;/p&gt;

&lt;p&gt;Whether you’re refactoring legacy code, managing rapid growth, or just aiming for architectural clarity, our open-source tool &lt;strong&gt;NanoAPI (&lt;code&gt;napi&lt;/code&gt;)&lt;/strong&gt; is aimed at helping developers, software and solution architects to understand, audit, and evolve their systems—safely and confidently. &lt;/p&gt;

&lt;p&gt;Included in this release is support for the following programming languages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C-sharp&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://docs.nanoapi.io" rel="noopener noreferrer"&gt;Our documentation is available here.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is NanoAPI (napi)?
&lt;/h2&gt;

&lt;p&gt;NanoAPI is a versatile tool designed to help to map architectural complexity and enable modular extraction of functionality from large codebases.&lt;/p&gt;

&lt;p&gt;Historically, tools like this used to live behind expensive consulting fees. NanoAPI democratizes them, enabling teams of any size to:&lt;/p&gt;

&lt;p&gt;🚨 Audit: Pinpoint areas of your code that need refactoring or cleanup.&lt;br&gt;
📝 Refactor: Extract functionality using the UI to improve architecture.&lt;br&gt;
🏗️ Build: Generate modular microservices ready for deployment.&lt;br&gt;
🔍 Architecture: Get a live view of all your software and their interactions; scoped to a specific moment in time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No more black-box tools. Just open, inspectable, source-available application architecture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ✨ What’s New in v1.0.6?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 Core Engine &amp;amp; Extraction
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Improved Python symbol extraction with better handling of partial imports&lt;/li&gt;
&lt;li&gt;C# metrics now available for enhanced architectural insights&lt;/li&gt;
&lt;li&gt;Enhanced visual representation of nodes for large codebases&lt;/li&gt;
&lt;li&gt;Updated highlighting mechanism for better code navigation&lt;/li&gt;
&lt;li&gt;New extraction mode with API integration + editable symbol metadata&lt;/li&gt;
&lt;li&gt;Fixed Python error AST node cleanup for more reliable extraction&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CLI Enhancements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Better version checking with in-terminal update instructions&lt;/li&gt;
&lt;li&gt;Fixed static file serving and CLI shebang handling&lt;/li&gt;
&lt;li&gt;Streamlined build process for faster execution&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Build &amp;amp; Packaging
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Moved from external &lt;code&gt;@nanoapi.io/shared&lt;/code&gt; to bundled CLI integration&lt;/li&gt;
&lt;li&gt;Switched to &lt;code&gt;tsup&lt;/code&gt; for more reliable bundling and build performance&lt;/li&gt;
&lt;li&gt;Refined workspace configuration and dependency versions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔧 Core Features (v1.0.6)
&lt;/h2&gt;

&lt;p&gt;✅ Multi-language support (Python, C# — more on the way)&lt;br&gt;
✅ Auto-generated system &amp;amp; code-level diagrams&lt;br&gt;
✅ Audit, refactor, and modularize monoliths&lt;br&gt;
✅ Full visibility into code written by AI or past contributors&lt;br&gt;
✅ Deterministic and inspectable — no black-box logic&lt;/p&gt;

&lt;h2&gt;
  
  
  Want More Information or Help Get Involved?
&lt;/h2&gt;

&lt;p&gt;If you’re facing architectural bottlenecks, uncertainty in legacy systems, or need help guiding technical transformation, &lt;strong&gt;NanoAPI can help&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We’d love your feedback, ideas, and contributions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;a href="https://nanoapi.io" rel="noopener noreferrer"&gt;nanoapi.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔍 &lt;a href="https://docs.nanoapi.io" rel="noopener noreferrer"&gt;docs.nanoapi.io&lt;/a&gt; - Our documentation&lt;/li&gt;
&lt;li&gt;🐙 &lt;a href="https://github.com/nanoapi-io/napi" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; — star us ⭐
&lt;/li&gt;
&lt;li&gt;📬 Reach out via &lt;a href="mailto:sales@nanoapi.io"&gt;email&lt;/a&gt; — we’re always happy to connect&lt;/li&gt;
&lt;li&gt;👾 Join our &lt;a href="https://discord.gg/dFWTtRvJdk" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; community!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re source-available first because &lt;strong&gt;trust matters&lt;/strong&gt;, especially when your team’s software architecture is on the line.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>python</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
