<?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: kyisaiah47</title>
    <description>The latest articles on DEV Community by kyisaiah47 (@kyisaiah47).</description>
    <link>https://dev.to/kyisaiah47</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%2F3981339%2F324a0e98-5ba3-4bbb-8a9d-458c58ea9b0d.png</url>
      <title>DEV Community: kyisaiah47</title>
      <link>https://dev.to/kyisaiah47</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kyisaiah47"/>
    <language>en</language>
    <item>
      <title>What shipped weekly: Compound Labs routes, rendering, recovery, and launches?</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:48:20 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/what-shipped-weekly-compound-labs-routes-rendering-recovery-and-launches-4j0</link>
      <guid>https://dev.to/kyisaiah47/what-shipped-weekly-compound-labs-routes-rendering-recovery-and-launches-4j0</guid>
      <description>&lt;p&gt;From October 11 through October 17, Compound Labs shipped changes across product routing, publishing workflows, video rendering, scheduling accounts, and launch reliability. The useful details are in the implementation and the acceptance records.&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%2Fwvt22swom4hjnks7jy4t.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%2Fwvt22swom4hjnks7jy4t.png" alt="The October 11 through October 17 changelog covers routing, navigation, rendering, email accounts, and launch readiness." width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenSoftware gives each dark build its own product route
&lt;/h2&gt;

&lt;p&gt;OpenSoftware can now serve a product at &lt;code&gt;opensoftware.thecompound.tech/p/&amp;lt;slug&amp;gt;&lt;/code&gt;, forwarding that route to the product's own build while keeping the wrapper available when no product service exists. The shared shell also prefixes product-owned assets and links correctly under the route. &lt;a href="https://github.com/kyisaiah47/opensoftware/commit/3ae1d1bfb64e90985ec13c85d6c3802f42324d7d" rel="noopener noreferrer"&gt;Read the OpenSoftware implementation&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fguy5yti96pnedd06yaep.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%2Fguy5yti96pnedd06yaep.png" alt="A product route is forwarded to its own build while the wrapper remains available when no service exists." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AgentWire becomes a front door for related sections
&lt;/h2&gt;

&lt;p&gt;AgentWire now combines its own wire with Context Window, ToolDrift, and StillShipping on one front page. Section routes, section-aware search, navigation, and sitemap handling were added together, so readers can move between those surfaces without treating each one as a separate site. &lt;a href="https://github.com/kyisaiah47/agentwire/commit/0a848e85f6c0028c937058bc595d8d5f915b4afd" rel="noopener noreferrer"&gt;Read the AgentWire implementation&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz9uattg0neg6sfnypdkd.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%2Fz9uattg0neg6sfnypdkd.png" alt="AgentWire presents four related sections through one front page, shared navigation, search, and sitemap structure." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenReel adds browser rendering and read-back
&lt;/h2&gt;

&lt;p&gt;The OpenReel build now includes a landing page, dashboard, in-browser rendering path, encoding, and read-back handling. The implementation covers composition, voices, text-to-speech, browser storage, file generation, and the render pipeline in one working surface. &lt;a href="https://github.com/kyisaiah47/openreel/commit/dbb1ebe8fd13347ec4753296377868a895d0db43" rel="noopener noreferrer"&gt;Read the OpenReel implementation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenCal adds verified email accounts and recovery
&lt;/h2&gt;

&lt;p&gt;OpenCal's sign-in flow now offers email accounts alongside Google and Microsoft. The new path sends verification and recovery links, confirms mailbox ownership before completing an account, supports password reset, and keeps credentials out of the application's own error messages. &lt;a href="https://github.com/kyisaiah47/opencal/commit/f6dce300f0598274ceaf2e9f3d3a0b09b68a55e1" rel="noopener noreferrer"&gt;Read the OpenCal implementation&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqx4dt65zs26ajx0sguq2.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%2Fqx4dt65zs26ajx0sguq2.png" alt="OpenCal's email flow separates verification, account completion, sign-in, and recovery." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenSocials records a verified supported-platform launch
&lt;/h2&gt;

&lt;p&gt;The OpenSocials readiness record now marks Bluesky, X, and LinkedIn personal profiles as supported for a limited launch. It records verified production cron dispatch, live delivery receipts, independent permalink checks, OAuth round trips, and monitoring evidence, while keeping five other integrations approval-gated. &lt;a href="https://github.com/kyisaiah47/opensocials/commit/5dcba5dcbbff9c0bf93f4d0620be5af4d05bc6b6" rel="noopener noreferrer"&gt;Read the launch acceptance record&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The commits establish landed code. Deployment and measured outcomes are stated here only where the supplied acceptance record independently verifies them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next up: Free product
&lt;/h2&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%2Ffdgmikwfbw1xwmnu8sb4.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%2Ffdgmikwfbw1xwmnu8sb4.png" alt="The Compound Labs week: Monday free product, Tuesday and Friday tools worth trying, Wednesday paid product, Thursday AI updates, Saturday tech updates, Sunday weekly roundup." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monday's edition is next.&lt;/strong&gt; 🔗 &lt;a href="https://thecompound.tech/blog" rel="noopener noreferrer"&gt;Explore the editions →&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>Should I patch lopdf before updating Ollama and checking OpenAI cost data?</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Sat, 17 Oct 2026 20:46:10 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/should-i-patch-lopdf-before-updating-ollama-and-checking-openai-cost-data-490c</link>
      <guid>https://dev.to/kyisaiah47/should-i-patch-lopdf-before-updating-ollama-and-checking-openai-cost-data-490c</guid>
      <description>&lt;p&gt;If a service accepts PDFs, lopdf 0.41.0 or earlier can abort on a roughly 21 KB crafted file. I'd patch that first, then handle the Windows-specific Ollama runner change, then reconcile OpenAI cost data that was delayed and later recovered.&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%2Fq9s96qohkddscpvvrvrt.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%2Fq9s96qohkddscpvvrvrt.png" alt="Patch the parser, stage the Windows runner change, and reconcile delayed cost data." width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Patch the lopdf parser before serving untrusted PDFs
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/advisories/GHSA-6fj4-rcr3-r7rr" rel="noopener noreferrer"&gt;lopdf advisory&lt;/a&gt; was published October 16, 2026. It affects lopdf 0.41.0 and earlier, where the load entry points parse nested PDF arrays and dictionaries with unbounded recursion. The advisory says a deeply nested /X array can exhaust the call stack and abort the process with SIGABRT. The fixed version is 0.42.0, and the failure cannot be caught with catch_unwind.&lt;/p&gt;

&lt;p&gt;Services that parse untrusted PDFs are affected. I'd check direct and transitive lockfiles for lopdf below 0.42.0 and move to 0.42.0 before accepting those files. If that version cannot be deployed yet, I'd stop the untrusted-PDF path until the parser is updated.&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%2Ffsmj0xmaxebe6o18w9hc.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%2Ffsmj0xmaxebe6o18w9hc.png" alt="A crafted nested PDF can turn unbounded parser recursion into a process abort." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage Ollama v0.40.6 for Windows runner cleanup
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/ollama/ollama/releases/tag/v0.40.6" rel="noopener noreferrer"&gt;Ollama v0.40.6 release&lt;/a&gt; was published October 16, 2026. GitHub labels it a pre-release, and Ollama v0.40.6 includes a Windows change to prevent orphaned runners.&lt;/p&gt;

&lt;p&gt;Windows deployments using that runner path are affected. I'd check the installed version and stage v0.40.6 there before wider rollout. If Windows runners are not involved, this release is lower priority for this decision.&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%2Fvn04wlp6vv4h04w7hch2.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%2Fvn04wlp6vv4h04w7hch2.png" alt="The Windows release changes the runner cleanup path." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat OpenAI cost lag as a reconciliation check
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://status.openai.com/incidents/01M4XNQX7C6RCBNGX9H711WFSG" rel="noopener noreferrer"&gt;OpenAI Compliance API incident&lt;/a&gt; began October 14, 2026, when organization cost data was delayed. OpenAI resolved it on October 16, 2026, and reported that impacted services had fully recovered. ChatGPT usage and API Platform requests were not affected, and other reporting channels remained available.&lt;/p&gt;

&lt;p&gt;Teams relying on fresh Compliance API cost data should compare their last-seen timestamp, retry delayed reads, and reconcile the results. This status snapshot does not establish a current outage. A local mismatch still needs direct verification because individual availability can vary.&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%2F14sd1mco7jdj5jsflkcq.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%2F14sd1mco7jdj5jsflkcq.png" alt="Delayed cost data becomes a reconciliation workflow after recovery." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Priority checklist
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Patch lopdf to 0.42.0, or stop accepting untrusted PDFs until you can.&lt;/li&gt;
&lt;li&gt;Check Ollama versions on Windows and stage v0.40.6 where runner cleanup matters.&lt;/li&gt;
&lt;li&gt;Reconcile OpenAI Compliance API cost data and retry reads that were delayed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I put lopdf 0.42.0 first, kept Ollama v0.40.6 behind a Windows staging check, and treated OpenAI cost retries as reconciliation work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next up: Weekly roundup
&lt;/h2&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%2Fdhv19lh9ednsjpjncgqo.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%2Fdhv19lh9ednsjpjncgqo.png" alt="The Compound Labs week: Monday free product, Tuesday and Friday tools worth trying, Wednesday paid product, Thursday AI updates, Saturday tech updates, Sunday weekly roundup." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sunday's edition is next.&lt;/strong&gt; 🔗 &lt;a href="https://thecompound.tech/blog" rel="noopener noreferrer"&gt;Explore the editions →&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>How do I keep a product's icons consistent across dashboards and Flutter screens?</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Fri, 16 Oct 2026 15:50:32 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/how-do-i-keep-a-products-icons-consistent-across-dashboards-and-flutter-screens-17gh</link>
      <guid>https://dev.to/kyisaiah47/how-do-i-keep-a-products-icons-consistent-across-dashboards-and-flutter-screens-17gh</guid>
      <description>&lt;p&gt;Choosing icons for a product gets harder when the same action appears in a dashboard, a service directory and a Flutter screen. Phosphor Icons, dashboard-icons and morphnext cover different parts of that job: a flexible base set, a catalogue of service marks and animated state changes.&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%2Fiay5w1mqnkaeqn5cm7mb.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%2Fiay5w1mqnkaeqn5cm7mb.png" alt="Use shared action icons, service marks and Flutter state morphing for distinct interface needs." width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phosphor Icons for the shared base set
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/phosphor-icons/homepage" rel="noopener noreferrer"&gt;Phosphor Icons&lt;/a&gt; is a general icon family for interfaces, diagrams and presentations. The repository describes 1,248 icons in six weights, with raw stroke information retained for further styling.&lt;/p&gt;

&lt;p&gt;Who should try it: teams building product UI where the same icon needs to move between web, React, Vue or Flutter.&lt;/p&gt;

&lt;p&gt;First experiment: choose one action, such as search or settings, and render it at two sizes and two weights. Check whether the stroke change still reads as the same action.&lt;/p&gt;

&lt;p&gt;Limitation: the family gives you a consistent vocabulary, but it does not provide your product's service logos or decide which weight belongs in each context. Observed 2026-10-16.&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%2Feqnuhmy8kh9l3e5kc54u.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%2Feqnuhmy8kh9l3e5kc54u.png" alt="A shared icon family keeps one action recognizable across interface surfaces." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  dashboard-icons for service directories
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/homarr-labs/dashboard-icons" rel="noopener noreferrer"&gt;dashboard-icons&lt;/a&gt; collects more than 1800 curated icons for services, applications and tools. It offers SVG, PNG and WEBP formats, with light and dark variants and a kebab-case naming convention.&lt;/p&gt;

&lt;p&gt;Who should try it: anyone making a dashboard or app directory where recognizable service marks matter more than a single generic icon family.&lt;/p&gt;

&lt;p&gt;First experiment: pick five services already shown in your product and test the SVG files in one directory row. Keep the icon size, background and label width fixed, then inspect which marks still read clearly.&lt;/p&gt;

&lt;p&gt;Limitation: this is a catalogue of service imagery, so visual consistency depends on the source marks and the variants you choose. It is a better fit for directories than for a product-wide action language. Observed 2026-10-15.&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%2Fm6jfen0gco9p17tqr3hq.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%2Fm6jfen0gco9p17tqr3hq.png" alt="A service directory needs recognizable marks and a format that fits its row." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  morphnext for Flutter state changes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/KickNext/morphnext" rel="noopener noreferrer"&gt;morphnext&lt;/a&gt; turns bundled Flutter IconData glyphs into interruptible, spring-driven vector morphs. AnimatedMorphIcon starts from the shape currently on screen, while MorphIcon accepts controlled progress for gestures, scrolling or timelines.&lt;/p&gt;

&lt;p&gt;Who should try it: Flutter teams whose icons change state, such as menu to close or outline to filled.&lt;/p&gt;

&lt;p&gt;First experiment: replace one two-state button with AnimatedMorphIcon, then interrupt the transition by tapping twice. Add semanticLabel values for both states and compare the result with a regular icon swap.&lt;/p&gt;

&lt;p&gt;Limitation: morphnext works with bundled font-backed IconData and monochrome rendering. It does not morph arbitrary Flutter Path objects or SVG artwork, and some icon pairs can produce surprising intermediate shapes. Observed 2026-10-15.&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%2Frc6p2ia9slxfhm2624fp.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%2Frc6p2ia9slxfhm2624fp.png" alt="morphnext keeps a Flutter icon transition connected when the user changes direction." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Put the three choices in the same decision
&lt;/h2&gt;

&lt;p&gt;Phosphor Icons is the broadest starting point for a shared action vocabulary. dashboard-icons is the specific choice for service marks in dashboards and directories. morphnext handles motion between icon states inside Flutter.&lt;/p&gt;

&lt;p&gt;A small product can use all three without treating them as interchangeable. Use Phosphor Icons for actions, dashboard-icons for recognizable external services and morphnext when a state change needs to show continuity.&lt;/p&gt;

&lt;p&gt;In your own project, pick one repeated action and one service directory row. Render the action with two Phosphor weights, place the service mark from dashboard-icons beside it, then try the same action transition with morphnext if the screen is Flutter. I'd keep the version that remains recognizable at the smallest size and remove the one that needs extra explanation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next up: Tech updates
&lt;/h2&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%2F1zybb397k014009roazc.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%2F1zybb397k014009roazc.png" alt="The Compound Labs week: Monday free product, Tuesday and Friday tools worth trying, Wednesday paid product, Thursday AI updates, Saturday tech updates, Sunday weekly roundup." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saturday's edition is next.&lt;/strong&gt; 🔗 &lt;a href="https://thecompound.tech/blog" rel="noopener noreferrer"&gt;Explore the editions →&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>Email coding tasks to your own computer</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Thu, 15 Oct 2026 17:13:31 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/email-coding-tasks-to-your-own-computer-3ok</link>
      <guid>https://dev.to/kyisaiah47/email-coding-tasks-to-your-own-computer-3ok</guid>
      <description>&lt;h2&gt;
  
  
  Send an idea by email
&lt;/h2&gt;

&lt;p&gt;You can remember a signup form problem while you are away from your computer. You can email yourself the task from your phone. You send the message from your own Gmail account to your own address with &lt;code&gt;+agents&lt;/code&gt; added. Gmail delivers the message to your normal inbox, so you need no new email account.&lt;/p&gt;

&lt;p&gt;You write the task in the email body. You can send plain text or HTML email. You can attach files, and @gent gives the saved attachment paths to the agent.&lt;/p&gt;

&lt;p&gt;A signup form task can ask an agent to improve confusing parts of the form and run the relevant checks. Your computer can stay at home while you send the task from another device.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run the task on your computer
&lt;/h2&gt;

&lt;p&gt;You install @gent on the computer that holds your projects. The runner reads your Gmail Sent folder, not your Inbox. It starts Codex or Claude Code in a configured project with your existing sign-in.&lt;/p&gt;

&lt;p&gt;Your repositories and agent sign-ins stay on your computer. Task text and results travel through Gmail and your chosen agent provider. Tasks for different projects can run at the same time.&lt;/p&gt;

&lt;p&gt;The runner sends &lt;code&gt;Queued&lt;/code&gt;, &lt;code&gt;Started&lt;/code&gt; and the result as replies in the task thread. The result is the agent's final message as formatted email. Every reply ends with the task ID and the command to open it in your terminal.&lt;/p&gt;

&lt;p&gt;Only mail that you send from your own Gmail account can start a task. Mail from other people lands in your Inbox. The runner does not read your Inbox, so their mail cannot start a task. Anyone who can add mail to your Sent folder can also send tasks, so you must protect your Gmail account and its credentials.&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%2Fvzlqzy1grj5fdy75fxve.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%2Fvzlqzy1grj5fdy75fxve.png" alt="A Sent-folder message crosses into the local runner and returns status replies to its task thread." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Route work with the subject line
&lt;/h2&gt;

&lt;p&gt;The subject line selects the agent, project, model and run mode. Agent names ignore case. Project names are case sensitive. The task body contains the instruction.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Codex: improve the signup form&lt;/code&gt; runs Codex in your default project.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Claude: improve the signup form&lt;/code&gt; runs Claude Code in your default project.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Codex/website: fix the footer links&lt;/code&gt; runs Codex in the project named website in your config.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Claude [opus]: review the auth flow&lt;/code&gt; runs Claude Code with the opus model. Replies in the thread keep that model.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Codex/website [gpt-6.1-sol]: fix the build&lt;/code&gt; runs Codex in the website project with the gpt-6.1-sol model.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Claude [opus, terminal]: review the auth flow&lt;/code&gt; opens Claude Code in a new Terminal window and uses the opus model.&lt;/p&gt;

&lt;p&gt;Without a model in brackets, the configured default model runs. Add &lt;code&gt;headless&lt;/code&gt; in the brackets to run the task in the background. Add &lt;code&gt;terminal&lt;/code&gt; in the brackets to open the task in a Terminal window.&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%2Fpwitbl4ftdctrufkb9qa.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%2Fpwitbl4ftdctrufkb9qa.png" alt="Each part of an example subject routes independently to the agent, project, model and task." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Continue and control the session
&lt;/h2&gt;

&lt;p&gt;You can reply in the same thread to continue the same agent session. The agent keeps the earlier turns. A reply of &lt;code&gt;status&lt;/code&gt; returns progress by email. A reply of &lt;code&gt;stop&lt;/code&gt; cancels queued turns and stops the running agent. Changes that the agent already made stay in your project.&lt;/p&gt;

&lt;p&gt;Approval emails let you approve or deny a blocked action from your phone. Each approval covers one action. You reply directly to the approval email with &lt;code&gt;approve&lt;/code&gt; or &lt;code&gt;deny&lt;/code&gt;. Silence becomes a denial after the configured timeout.&lt;/p&gt;

&lt;p&gt;With approvals off, Codex uses its configured sandbox and approval policy. Claude Code denies actions that need approval by default. You review the work before you publish or deploy it.&lt;/p&gt;

&lt;p&gt;When you return to your computer, run &lt;code&gt;atgent list&lt;/code&gt; to see each email task with its agent, model and status. Select a task and press Enter to resume the same session in your terminal. The agent then answers in the terminal instead of by email. A reply resumes a Claude terminal session. Codex terminal sessions are not tracked, so a reply opens a new window.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up @gent
&lt;/h2&gt;

&lt;p&gt;Install uv first. Then install Codex or Claude Code and sign in. Install the runner with &lt;code&gt;uv tool install atgent&lt;/code&gt;. Run &lt;code&gt;atgent init&lt;/code&gt; to enter your Gmail address, sign-in method, project folders, installed agents and default models. The setup writes no secret to the config.&lt;/p&gt;

&lt;p&gt;Turn on IMAP in Gmail. Create a Google app password, or use your own Gmail OAuth desktop client when app passwords are blocked. Keep the app password in your OS keychain or in the &lt;code&gt;AGENT_MAILBOX_PASSWORD&lt;/code&gt; environment variable. Never put it in the config file.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;atgent doctor&lt;/code&gt; to check Gmail over IMAP and SMTP without sending mail. The command also checks that Codex and Claude Code are installed. Run &lt;code&gt;atgent start&lt;/code&gt; to start the runner in the background. Its first check skips old Sent mail, so send your first task after that check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;@gent needs Gmail with IMAP access, macOS or Linux, Python 3.11 or later, uv, and a computer that stays awake and online. You need Codex or Claude Code installed and signed in. Claude Code needs version 2.1.259 or later.&lt;/p&gt;

&lt;p&gt;HTML email, attachments, concurrent projects, approval email replies with both agents, and the login service were tested live on macOS. Linux and Gmail OAuth are unit-tested only.&lt;/p&gt;

&lt;p&gt;@gent is free. Your existing Codex or Claude Code plan and its limits apply.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://atgent.dev" rel="noopener noreferrer"&gt;https://atgent.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>python</category>
      <category>cli</category>
    </item>
    <item>
      <title>An agent tool directory can show the evidence behind each entry</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Thu, 15 Oct 2026 17:12:59 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/an-agent-tool-directory-can-show-the-evidence-behind-each-entry-10jj</link>
      <guid>https://dev.to/kyisaiah47/an-agent-tool-directory-can-show-the-evidence-behind-each-entry-10jj</guid>
      <description>&lt;p&gt;&lt;a href="https://agentwire.thecompound.tech" rel="noopener noreferrer"&gt;agentwire.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AgentWire is an index of shipped agent tooling, and each entry can carry a curated list, a Hacker News thread, or repository velocity as evidence. Engineers use it to find repositories that exist, were released, and can be inspected before choosing a tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;A repository can collect four hundred stars for two years without anyone revisiting it. A single Hacker News thread can come from the author's friends.&lt;/p&gt;

&lt;p&gt;Announcements, roadmaps, specifications without implementations, placeholders, and abandoned archives all attract attention. None proves that somebody can clone the repository today.&lt;/p&gt;

&lt;p&gt;AgentWire keeps those signals attached to the entry instead of treating one popular signal as enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  How AgentWire works
&lt;/h3&gt;

&lt;p&gt;AgentWire currently brings together New tools, Context Window, ToolDrift, and StillShipping. The site uses Next.js, React, TypeScript, and Supabase, with committed JSON files as fallbacks for the main index.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;AgentWire reads agentwire_posts from Supabase in pages of up to 1,000 rows. If the database read fails, it uses src/data/posts.json.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AgentWire reads ctxwindow_posts, tooldrift_tools, tooldrift_changelog, tooldrift_leaderboard, and stillshipping_tools in parallel. A failed read returns an empty list for that section.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AgentWire converts each source row into a shared record with a section, type, title, detail, date, status, and searchable text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The front page merges the four section records by date and keeps 24 rows per section list.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The board reads the verification record for each New tools entry. Its score uses the last commit, commits in 90 days, last release, issue close time, licence, and the first install command in the README.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;check-verified.mjs rejects records with impossible values, missing source URLs, stale readings, or a score that does not match its band.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The index keeps the source description and the operational reading separate. The first comes from the repository owner, while the second records what the health check read and where it read 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%2Ftquhgx1xgu33azt4fxnx.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%2Ftquhgx1xgu33azt4fxnx.png" alt="AgentWire turns source tables into shared records for the front page and search." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A worked example
&lt;/h3&gt;

&lt;p&gt;The health record for KnockOutEZ/wigolo records npx wigolo as a resolved npm install command. The record also keeps the registry source URL, the package name, the version, and whether the repository has an examples directory.&lt;/p&gt;

&lt;p&gt;That gives an entry two different kinds of information. The index can show why the repository appeared, while the verification record can show whether its documented install package resolved when AgentWire checked 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%2F4fszai5xbmanhohsbx8g.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%2F4fszai5xbmanhohsbx8g.png" alt="The verification record preserves the install command and the registry result together." width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it compares
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://agentindex.app/" rel="noopener noreferrer"&gt;AgentIndex&lt;/a&gt; is a directory for AI agents, MCP servers, and .cursorrules. It offers category search, install commands, daily updates, editor picks, and a comparison view. Pick AgentIndex when you want to search a broad catalogue and copy an install command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mcpHQ/awesome-mcp-servers" rel="noopener noreferrer"&gt;Awesome MCP Servers&lt;/a&gt; is a hand-curated, link-checked catalogue focused on Model Context Protocol servers. It keeps structured data in data/servers.json, publishes a JSON API, and lists client configurations for hosted servers.&lt;/p&gt;

&lt;p&gt;AgentWire covers MCP servers alongside coding-agent harnesses, agent frameworks, and related tooling. Its own entry rule requires two independent signals, while its health record stays explicit about what it did not test.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits
&lt;/h3&gt;

&lt;p&gt;AgentWire does not run, benchmark, or review the tools it shares. It does not state that an entry works or holds up.&lt;/p&gt;

&lt;p&gt;The index reflects what its source accounts published. A reader still needs the repository, documentation, and tests for a technical evaluation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;Start with AgentWire's search page and enter a repository name. The result can lead you to the entry, its signals, and the verification record.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agentwire.thecompound.tech" rel="noopener noreferrer"&gt;agentwire.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Next up: Tools worth trying
&lt;/h2&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%2Fm5yiazsfmnf1tu8xj35n.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%2Fm5yiazsfmnf1tu8xj35n.png" alt="The Compound Labs week: Monday free product, Tuesday and Friday tools worth trying, Wednesday paid product, Thursday AI updates, Saturday tech updates, Sunday weekly roundup." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Friday's edition is next.&lt;/strong&gt; 🔗 &lt;a href="https://thecompound.tech/blog" rel="noopener noreferrer"&gt;Explore the editions →&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>Compound Lab's Infrastructure Cost Calculator: web app cost estimates, built on Next.js</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Tue, 13 Oct 2026 17:16:41 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/compound-labs-infrastructure-cost-calculator-web-app-cost-estimates-built-on-nextjs-54gb</link>
      <guid>https://dev.to/kyisaiah47/compound-labs-infrastructure-cost-calculator-web-app-cost-estimates-built-on-nextjs-54gb</guid>
      <description>&lt;p&gt;&lt;a href="https://stacktab.thecompound.tech" rel="noopener noreferrer"&gt;https://stacktab.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Compound Lab's Infrastructure Cost Calculator is a web cost calculator built on Next.js and React. It lets a developer price a database, auth service, payment provider, and host against the same user profile.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;A web app bill depends on more than a plan's base fee. The estimate also depends on storage, egress, requests, paid conversion, transaction volume, and the allowances that a plan will not exceed.&lt;/p&gt;

&lt;p&gt;Compound Lab's Infrastructure Cost Calculator prices those inputs together. Its default stack returns $367.38 a month at 10,000 users, with Neon, Clerk, Polar, and Vercel contributing separate lines to the statement.&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%2Fqxu3mcopq6m97bp1hj47.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%2Fqxu3mcopq6m97bp1hj47.png" alt="The console shows service choices, user scales, and the resulting bill." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How Compound Lab's Infrastructure Cost Calculator works
&lt;/h3&gt;

&lt;p&gt;Compound Lab's Infrastructure Cost Calculator keeps a catalogue of vendor plans, meters, allowances, source pages, verification dates, and notes. The live catalogue records 269 plans across 77 services, with each rate tied to the page where it was read.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The server reads the catalogue and the latest re-read status from Supabase. The manifest includes &lt;code&gt;@supabase/supabase-js&lt;/code&gt; for that connection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The browser parses the selected stack and user count from the URL. The &lt;code&gt;Console&lt;/code&gt; component keeps those selections in React state and mirrors them back into the query string.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;profileForUsers&lt;/code&gt; turns the user count into a usage profile. The default profile includes 5 GB of database use, 10 GB of storage, 200 GB of egress, 2 million requests, and 0.5 million function invocations at 10,000 users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;estimatePlan&lt;/code&gt; checks plan restrictions and hard caps before calculating charges. A plan that publishes an allowance but sells no overage becomes a blocker when the profile exceeds that allowance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;estimateService&lt;/code&gt; calculates the eligible plans and &lt;code&gt;priceStack&lt;/code&gt; combines the selected services. The statement keeps each charge's label, working, amount, verification status, and source URL beside the total.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A missing rate stays unknown. &lt;code&gt;formatUsd(null)&lt;/code&gt; prints &lt;code&gt;price not published&lt;/code&gt;, and the total remains withheld until the missing figure is resolved.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9oocueqwtp12a6ba9fs0.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%2F9oocueqwtp12a6ba9fs0.png" alt="The method page shows vendor-page sources, nightly re-reads, unknown rates, and hard-cap rules." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A worked example
&lt;/h3&gt;

&lt;p&gt;Select Neon, Clerk, Polar, and Vercel, then choose 10,000 users. Compound Lab's Infrastructure Cost Calculator returns a total of $367.38.&lt;/p&gt;

&lt;p&gt;Neon contributes $77.38 from 730 compute hours at $0.106. Polar contributes $270 from its $20 base, 3.8% of $4,000 in revenue, 200 transactions at $0.40, and 1.5% of $1,200 in international-card revenue. Vercel contributes its $20 base, while Clerk contributes $0 on its Free plan.&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%2Fgxvw4yzaaz8of3in7dv5.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%2Fgxvw4yzaaz8of3in7dv5.png" alt="The console shows the selected stack and the $367.38 monthly statement." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it compares
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.infracost.io/docs/" rel="noopener noreferrer"&gt;Infracost&lt;/a&gt; parses Terraform, CloudFormation, and AWS CDK projects to estimate resource costs and surface cost changes in pull requests. Its pricing page lists a free CI/CD plan, a $250 monthly Starter plan, and a $1,000 monthly Cloud plan. Choose Infracost when the input is infrastructure code and the review belongs in CI/CD.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cloudzero.com/platform/" rel="noopener noreferrer"&gt;CloudZero&lt;/a&gt; ingests AI, cloud, and SaaS billing with telemetry, allocates spend across business dimensions, and sends the result to dashboards, alerts, reports, and engineering surfaces. Its pricing page offers a single subscription with a custom price quote. Choose CloudZero when the input is observed spend and the question is cost per outcome.&lt;/p&gt;

&lt;p&gt;Compound Lab's Infrastructure Cost Calculator works earlier in the decision. It uses public vendor rate cards and an editable usage profile to compare a web stack before there is billing telemetry or an infrastructure plan to scan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits
&lt;/h3&gt;

&lt;p&gt;Compound Lab's Infrastructure Cost Calculator models public rate cards. It does not cover negotiated or enterprise pricing, and it does not ingest a company's actual billing data.&lt;/p&gt;

&lt;p&gt;The usage profile is an assumption, not a measurement of a running application. Compound Lab's Infrastructure Cost Calculator prints the assumptions beside the figure and lets the reader edit them in the calculators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;The first step is picking a database, auth service, payment provider, and host in the console. Then choose the user count that matches the estimate you want to inspect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stacktab.thecompound.tech" rel="noopener noreferrer"&gt;https://stacktab.thecompound.tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why Your Brain Does That: behavior explanations on Next.js</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Tue, 13 Oct 2026 16:56:27 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/why-your-brain-does-that-behavior-explanations-on-nextjs-2j1n</link>
      <guid>https://dev.to/kyisaiah47/why-your-brain-does-that-behavior-explanations-on-nextjs-2j1n</guid>
      <description>&lt;p&gt;&lt;a href="https://whyyourbrain.thecompound.tech" rel="noopener noreferrer"&gt;whyyourbrain.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why Your Brain Does That is a searchable index of named experiences and the reasons behind them, built on Next.js and React. People use it to find a sentence about something they do, then read the explanation on its own entry page.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;A short clip can explain why someone forgets why they entered a room, then disappear from view. Why Your Brain Does That keeps those spoken lines on pages that wait.&lt;/p&gt;

&lt;p&gt;The doorway example makes the boundary clear. The entry says the forgetting is real, while a 2021 study across four experiments found no reliable doorway effect.&lt;/p&gt;

&lt;p&gt;The site also states what it does not do. It does not tell anyone what they have, and it directs larger problems toward a person rather than an archive.&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%2Fd8fv952ynbljoqslg06s.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%2Fd8fv952ynbljoqslg06s.png" alt="The front page shows the searchable index and its image wall." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The product keeps a searchable corpus of titles, spoken lines, captions, images, categories and source findings. A search keeps every entry in place, enlarges matching entries to the width they earned, and reduces the rest to their smallest width.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;You type a word, a room you were in, or a thing you do into the search field. SearchField trims the value, encodes it, and routes it to the whole index with a q parameter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Next.js route reads the query and maps every entry into a tile with its title, still, category, line count and searchable text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SheetBody lowercases the query, checks each tile's hay string, and records matching slugs without removing the other tiles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The live archive layer reads published rows from Supabase, merges them over the committed corpus, and orders the result by publication time.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The app uses Next.js 15.5.25, React 19.1.1, TypeScript, @supabase/supabase-js and posthog-js. The committed corpus comes from phenomena.json, and the derive script writes the rendered corpus to generated/corpus.json.&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%2Fhoweq0qihb6j0a3382wv.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%2Fhoweq0qihb6j0a3382wv.png" alt="The whole index keeps every tile while matching entries receive the accent and their earned width." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A worked example
&lt;/h3&gt;

&lt;p&gt;Search for procrastination. The sheet keeps the whole index and marks the entry titled "procrastination isn't laziness. it's your brain avoiding a feeling" as a match.&lt;/p&gt;

&lt;p&gt;Opening that entry returns four spoken lines. The second line names boredom, judgment and the chance of failing as emotions attached to the task. The page also carries the entry's still and its caption, "it was never about discipline."&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%2Fig0od5guaq6fg21387of.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%2Fig0od5guaq6fg21387of.png" alt="The entry page shows the title, spoken explanation, still and caption." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it compares
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.theschooloflife.com/articles/" rel="noopener noreferrer"&gt;The School of Life&lt;/a&gt; publishes articles organised around themes such as Calm, Relationships, Self-Knowledge and Work. Pick it when you want a longer article library organised by subject rather than a searchable entry with spoken lines and a still.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.headspace.com/app" rel="noopener noreferrer"&gt;Headspace&lt;/a&gt; provides guided meditations, expert-led exercises, sleep content and AI-powered support. Its listed plans include a 14-day trial, $69.99 annual access and $12.99 monthly access. Pick it when you want guided practice for stress, sleep or mindfulness instead of an explanation archive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://preveal.life/" rel="noopener noreferrer"&gt;Preveal&lt;/a&gt; moves through Notice, Understand and Consider What Comes Next, then keeps reflection history in local storage without requiring an account. Pick it when you want to reflect on a body signal and choose your own next action. Why Your Brain Does That gives you a named experience and its explanation instead.&lt;/p&gt;

&lt;p&gt;Why Your Brain Does That keeps the input small and the output fixed: a phrase goes into the index, matching entries stay visible, and an entry page holds the explanation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits
&lt;/h3&gt;

&lt;p&gt;Why Your Brain Does That is not therapy, diagnosis or a personal assessment. It does not assign a label to a body signal, and it does not replace professional help.&lt;/p&gt;

&lt;p&gt;The site also does not promise that every explanation is established. Its register includes findings where a source differed from the entry, including the doorway explanation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;Type a word you remember, a room you were in, or a thing you do. Then choose Ask the index.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://whyyourbrain.thecompound.tech" rel="noopener noreferrer"&gt;whyyourbrain.thecompound.tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>StackTab: whole-stack cost estimates, built on Next.js</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Mon, 12 Oct 2026 11:42:38 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/stacktab-whole-stack-cost-estimates-built-on-nextjs-57o0</link>
      <guid>https://dev.to/kyisaiah47/stacktab-whole-stack-cost-estimates-built-on-nextjs-57o0</guid>
      <description>&lt;p&gt;&lt;a href="https://stacktab.thecompound.tech/dv/zuqn3o" rel="noopener noreferrer"&gt;stacktab.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;StackTab prices a database, an auth service, a payment provider and a host together, using a Next.js and React web console. Builders use it to compare a stack at 1,000, 10,000 and 100,000 users.&lt;/p&gt;




&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;Pricing pages usually answer for one vendor at a time. A builder choosing Neon, Clerk, Polar and Vercel has to open each page, translate different billing units, and add the results.&lt;/p&gt;

&lt;p&gt;The missing rate creates a worse problem than a missing row. Firebase publishes a free quota and then defers to Google Cloud pricing, while Auth0 places higher usage behind a slider. StackTab records those cases as unknown instead of turning them into $0.&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%2F4pf1rws0rmg07gxfgawd.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%2F4pf1rws0rmg07gxfgawd.png" alt="StackTab, The main console: THE STATEMENT · 10,000 USERS · RATES AS READ 12 OCT 2026 Neon, Clerk, Polar and Vercel come to $ a month at 10,000 users" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;StackTab keeps a catalogue of plans, meters, allowances, restrictions, source pages and verification dates. It calculates a bill from that catalogue and an explicit usage profile.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The console accepts a stack made from database, auth, payment and hosting services. The selected services and user count are mirrored in the query string.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;readCatalogue&lt;/code&gt; reads the service catalogue and refresh run from Supabase through &lt;code&gt;@supabase/supabase-js&lt;/code&gt;. The page and the JSON API use the same catalogue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;profileForUsers&lt;/code&gt; turns the selected user count into usage assumptions. The profile includes database storage, file storage, egress, requests, transactions, seats and other meter quantities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;blockersFor&lt;/code&gt; removes plans that cannot carry the usage. It excludes a plan when an allowance is exceeded and no overage meter exists. It also excludes plans marked as non-commercial.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;estimatePlan&lt;/code&gt; applies base fees, percentage charges, fixed transaction fees and tiered meters. If a required rate is unknown and usage exceeds the included amount, the estimate total becomes &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;formatUsd&lt;/code&gt; renders that null as &lt;code&gt;price not published&lt;/code&gt;. The React console then renders the statement with &lt;code&gt;@number-flow/react&lt;/code&gt;, including the working behind each charge.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The catalogue is checked against literal strings from each vendor pricing page. A nightly re-read marks a plan as drifted when those strings disappear, and the verification date stops advancing. StackTab does not rewrite the price after a drift.&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%2F4y1yo3kdx688ar5sng4n.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%2F4y1yo3kdx688ar5sng4n.png" alt="StackTab, Method: 5. The usage is an assumption, and it is always shown Rates are facts. How much database, egress and traffic a given num" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A worked example
&lt;/h3&gt;

&lt;p&gt;The default stack uses Neon, Clerk, Polar and Vercel at 10,000 users. StackTab calculates a $367 monthly total, with Neon at $77.38, Clerk at $0, Polar at $270 and Vercel at $20.&lt;/p&gt;

&lt;p&gt;The result is a statement rather than a single unexplained total. Each service carries its selected plan, charge lines, source page, verification status and assumptions.&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%2Fn7xxa66whs0fj2njeezs.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%2Fn7xxa66whs0fj2njeezs.png" alt="StackTab, Merchant of record for SaaS: Merchant of record for SaaS, priced against Stripe This page compares Paddle, Polar, Lemon Squeezy, Creem, Dodo Payments" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it compares
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/pricing-calculator/latest/userguide/getting-started.html" rel="noopener noreferrer"&gt;Amazon Web Services Pricing Calculator&lt;/a&gt; estimates AWS services by region and configuration. It is the better choice when the question is how much a specific AWS workload will cost, because its catalogue is AWS's own service catalogue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.infracost.io/docs/faq/" rel="noopener noreferrer"&gt;Infracost&lt;/a&gt; parses Terraform, CloudFormation or CDK, retrieves prices from its Cloud Pricing API, and evaluates the cost of a code change. It is the better choice when the input is infrastructure code or a pull request.&lt;/p&gt;

&lt;p&gt;StackTab takes a different input from both. It prices managed developer services across database, auth, payments and hosting categories from vendor pricing pages, without requiring a repository or a cloud account. Its output is withheld when a public rate cannot support a defensible calculation.&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%2Fl2bzeedzdcahylctpaza.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%2Fl2bzeedzdcahylctpaza.png" alt="StackTab, Best auth for Next.js: The best auth for Next.js, priced Clerk, WorkOS, Better Auth, Kinde, Auth0, Stytch and PropelAuth compared for a Next.js" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits
&lt;/h3&gt;

&lt;p&gt;StackTab does not price an existing cloud bill, parse infrastructure code or apply an organisation's private discounts. AWS Pricing Calculator handles AWS workload estimates, and Infracost handles infrastructure-as-code cost changes.&lt;/p&gt;

&lt;p&gt;StackTab also cannot resolve a vendor rate that the vendor does not publish. The product prints &lt;code&gt;price not published&lt;/code&gt; and keeps the reason beside the unresolved line.&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%2Fwsq9xchi7kdwgd6pew5p.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%2Fwsq9xchi7kdwgd6pew5p.png" alt="StackTab, Cloud cost calculators compared: What is the difference between a cloud cost calculator and a FinOps platform? A cloud cost calculator prices a stack you" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;Choose a database, auth service, payment provider and host, then set the user count in StackTab's calculator. The first result is the stack total with each service's plan and charge working.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>aws</category>
      <category>database</category>
      <category>cloud</category>
    </item>
    <item>
      <title>KitGrade: starter-kit scores from public evidence</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Sun, 11 Oct 2026 22:22:07 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/kitgrade-starter-kit-scores-from-public-evidence-279h</link>
      <guid>https://dev.to/kyisaiah47/kitgrade-starter-kit-scores-from-public-evidence-279h</guid>
      <description>&lt;p&gt;&lt;a href="https://kitgrade.thecompound.tech" rel="noopener noreferrer"&gt;kitgrade.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;KitGrade scores SaaS starter kits from public evidence, using a Next.js application and a captured read API. Developers use it to compare maintenance, completeness, transparency, documentation, and support before choosing a starting point.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;Starter-kit directories usually put names, stacks, prices, and feature badges beside each other. That helps with discovery, but it does not show whether a repository builds cleanly or whether a claim came from a file anyone can inspect.&lt;/p&gt;

&lt;p&gt;KitGrade keeps those facts separate. A score can cite a commit history, dependency manifest, pricing page, documentation index, or repository path, and the product labels evidence it could not measure instead of treating it as zero.&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%2Fbe4dd3rexruur1k9qfjn.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%2Fbe4dd3rexruur1k9qfjn.png" alt="The main scorecard shows the ranked kits and the five scoring components." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How KitGrade works
&lt;/h3&gt;

&lt;p&gt;KitGrade keeps a scorecard with five components worth a full hundred points. The data layer reads four captured JSON files, and the capture refuses to write a set whose component figures do not add back to the stored totals.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The capture script reads the public API for statistics, method rules, the ranked kit list, and each kit detail record.&lt;/li&gt;
&lt;li&gt;The score resolves maintenance, completeness, transparency, documentation, and support from the stored evidence fields.&lt;/li&gt;
&lt;li&gt;The product records whether evidence came from a clean checkout or from reading the repository, manifest, and documentation.&lt;/li&gt;
&lt;li&gt;The Next.js routes expose the same data through &lt;code&gt;/api/stats&lt;/code&gt;, &lt;code&gt;/api/method&lt;/code&gt;, &lt;code&gt;/api/kits&lt;/code&gt;, &lt;code&gt;/api/kits/&amp;lt;slug&amp;gt;&lt;/code&gt;, and &lt;code&gt;/api/compare&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The console draws measured components as filled spans and unmeasurable components as dotted caution tracks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The distinction between "We ran it" and "Read, not run" is part of every score. A clean-checkout run keeps every command, exit status, and duration with the kit.&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%2Fdm4ne5mvi8whm6ur4ubu.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%2Fdm4ne5mvi8whm6ur4ubu.png" alt="The method view shows the five scoring components and the dotted treatment for evidence the method cannot measure." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A worked example
&lt;/h3&gt;

&lt;p&gt;A kit detail record can include its homepage, repository, stack, licence, price evidence, score breakdown, fourteen capability signals, and an install transcript. The transcript records commands such as cloning a repository and running &lt;code&gt;pnpm install --frozen-lockfile&lt;/code&gt;, with the result and duration attached.&lt;/p&gt;

&lt;p&gt;The product also keeps an explicit boundary. If a closed kit has no public repository, KitGrade marks maintenance as unmeasurable and keeps those points in the denominator.&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%2Ffzpcl6ab648t9ukpm2ft.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%2Ffzpcl6ab648t9ukpm2ft.png" alt="The kit view shows the score breakdown, evidence sources, capability signals, and install transcript." width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it compares
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://boilerplates.directory/" rel="noopener noreferrer"&gt;Boilerplates Directory&lt;/a&gt; compares SaaS starter kits by stack and uses open-source and price badges on listings. It is a better first stop when the job is broad discovery across stacks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://boilerplatelist.com/" rel="noopener noreferrer"&gt;BoilerplateList&lt;/a&gt; lists boilerplates and starter kits with stack, pricing, and licence information on detail pages. It fits a reader who wants catalogue metadata before opening a repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://boilerplatehub.com/compare" rel="noopener noreferrer"&gt;BoilerplateHub&lt;/a&gt; compares boilerplates through feature filters such as payments, authentication, databases, documentation, and support. Its deals page also lists pricing from free options to premium kits.&lt;/p&gt;

&lt;p&gt;KitGrade differs by attaching a published rule and evidence source to each scored component, then separating clean-checkout runs from documented-only records. The result is a scorecard about what the method could verify, not only what a listing claims.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits
&lt;/h3&gt;

&lt;p&gt;KitGrade does not infer evidence that a public surface does not expose. It also does not turn a failed build into a lower score, because the method records the run result separately from the score.&lt;/p&gt;

&lt;p&gt;A reader who needs a feature catalogue should use BoilerplateHub or Boilerplates Directory. A reader who needs repository evidence and a reproducible scoring method should use KitGrade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;The first step is to put a kit on the bench. KitGrade then shows the score, the evidence behind each component, and the parts the method could not measure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kitgrade.thecompound.tech" rel="noopener noreferrer"&gt;kitgrade.thecompound.tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>KitGrade: SaaS starter kits scored with visible evidence</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Sun, 11 Oct 2026 10:31:54 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/kitgrade-saas-starter-kits-scored-with-visible-evidence-5bb</link>
      <guid>https://dev.to/kyisaiah47/kitgrade-saas-starter-kits-scored-with-visible-evidence-5bb</guid>
      <description>&lt;p&gt;&lt;a href="https://kitgrade.thecompound.tech/dv/xk7wff" rel="noopener noreferrer"&gt;kitgrade.thecompound.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;KitGrade scores SaaS starter kits against evidence buyers can check, using a Next.js application and frozen JSON data. Developers use it to compare what a kit includes, how it is maintained, and which claims have public support.&lt;/p&gt;




&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;A starter kit can advertise authentication, billing, documentation, and support without giving a buyer one place to verify those claims. KitGrade checks the repository, dependency manifest, documentation, pricing page, release history, and public support channel.&lt;/p&gt;

&lt;p&gt;The distinction between "We ran it" and "Read, not run" matters. A build transcript records commands, exit statuses, and durations, while a documented result records what the repository or vendor page exposes.&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%2Ft3jaodzzstzirxtcj8g6.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%2Ft3jaodzzstzirxtcj8g6.png" alt="KitGrade, The main console: KitGrade scores SaaS starter kits based on what a buyer can check before paying. A kit earns points out of a full 100, a" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;KitGrade keeps a hundred-point scorecard divided across maintenance, completeness, transparency, documentation, and support. A capability that cannot be observed publicly remains unmeasurable instead of becoming a zero.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The capture script reads active kit rows, scores, and hands-on runs from the KitGrade engine database.&lt;/li&gt;
&lt;li&gt;It joins each kit to its score and run transcript, then checks that the component figures add back to the stored total.&lt;/li&gt;
&lt;li&gt;It writes &lt;code&gt;stats.json&lt;/code&gt;, &lt;code&gt;method.json&lt;/code&gt;, &lt;code&gt;kits.json&lt;/code&gt;, and &lt;code&gt;kit-detail.json&lt;/code&gt; into the repository.&lt;/li&gt;
&lt;li&gt;The Next.js data layer reads those files through &lt;code&gt;src/lib/data.ts&lt;/code&gt;, while &lt;code&gt;src/lib/derive.ts&lt;/code&gt; turns stored breakdowns into score spans, evidence labels, and capability rows.&lt;/li&gt;
&lt;li&gt;The console renders each score beside the evidence source, the measurement state, and any recorded install transcript.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The repository check fails when a kit total does not reconcile, a component exceeds its maximum, or the method maxima do not add to one hundred. The capture also refuses to write a set with inconsistent figures.&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%2Frtu6psff2j92eoxcawr6.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%2Frtu6psff2j92eoxcawr6.png" alt="KitGrade, How we score: Maintenance 30 points Whether the code is still moving, and whether more than one person is moving it. HOW THE POINTS AR" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A worked example
&lt;/h3&gt;

&lt;p&gt;KitGrade records Bullet Train as a Rails, Ruby, PostgreSQL, Stripe, and Hotwire kit with MIT licensing. Its stored score is 92.2, with 30 points for maintenance, 23.2 for completeness, 20 for transparency, 13 for documentation, and 6 for support.&lt;/p&gt;

&lt;p&gt;The hands-on transcript records a clean clone, a successful frozen Yarn install, and a failed build because configuration is still required before the application runs.&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%2Ff9570ijvlos750w2g3os.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%2Ff9570ijvlos750w2g3os.png" alt="KitGrade, Best boilerplates: How can I tell whether a starter kit is actually maintained? Check the date the vendor publishes for its own latest upda" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it compares
&lt;/h3&gt;

&lt;p&gt;ShipFast presents a Next.js boilerplate for SaaS and AI applications and sells access through its own site. Pick ShipFast when you want a commercial Next.js starting point with the vendor's included feature set.&lt;/p&gt;

&lt;p&gt;Bullet Train describes itself as an MIT-licensed Rails-based framework with authentication, teams, permissions, billing, and other application features. Pick Bullet Train when your application belongs in Rails and you want an open-source starting point.&lt;/p&gt;

&lt;p&gt;SaaS Pegasus is a Python and Django SaaS boilerplate with flat pricing and no recurring subscription fees. Pick SaaS Pegasus when Django is the deciding constraint and a one-time license fits the project.&lt;/p&gt;

&lt;p&gt;KitGrade differs by recording the evidence behind each comparison. Its completeness score checks the repository and file tree for open-source kits, while its transparency score includes public source, licensing, pricing, release history, and documentation.&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%2F8e2r4to2yos1bio6n96h.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%2F8e2r4to2yos1bio6n96h.png" alt="KitGrade, Free and open source: How many of these has KitGrade actually run 16 KitGrade installed and ran 16 of the 22 free kits on this page. Each of t" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits
&lt;/h3&gt;

&lt;p&gt;KitGrade does not replace reading the source repository or testing a kit in the application you plan to build. Its score only covers the five published components and the evidence those components can observe.&lt;/p&gt;

&lt;p&gt;A missing public surface is recorded as unmeasurable when the method cannot inspect it. That state is separate from a measured zero.&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%2F9oigo3ufqtt222llrz6t.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%2F9oigo3ufqtt222llrz6t.png" alt="KitGrade, ShipFast alternatives: Questions about this 4 How much does ShipFast cost? ShipFast lists Starter at $199. The page lists $299 struck through a" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;Start with a kit from the bench, then open its scorecard and read the evidence attached to each component. The Bullet Train record is a useful first example because it includes both repository evidence and a hands-on install transcript.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>react</category>
      <category>documentation</category>
      <category>database</category>
    </item>
    <item>
      <title>Four consumer tools: ScriptProbe, ListRun, MatchLine and BreachProbe</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Fri, 09 Oct 2026 09:44:25 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/four-consumer-tools-scriptprobe-listrun-matchline-and-breachprobe-1fdm</link>
      <guid>https://dev.to/kyisaiah47/four-consumer-tools-scriptprobe-listrun-matchline-and-breachprobe-1fdm</guid>
      <description>&lt;p&gt;This issue carries consumer tools for checking package install scripts, directory submissions, resume evidence, and app security. The outputs are a verdict, a run sheet, a tailored PDF, and a security report.&lt;/p&gt;

&lt;h2&gt;
  
  
  This issue
&lt;/h2&gt;

&lt;p&gt;These products turn narrow tasks into concrete results you can inspect.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://scriptprobe.thecompound.tech/dv/kef8wt" rel="noopener noreferrer"&gt;ScriptProbe&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ScriptProbe
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxowekqdsttxwbhfxvusa.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fcrosspost%2Fdevto-digest%2Ffounder-devto%2Ffour-consumer-tools-scriptprobe-listrun-matchline-and-breachprobe-scriptprobe-hero-1791539057623.png" alt="ScriptProbe, screenshot of the landing page" width="800" height="450"&gt;&lt;/td&gt;
&lt;td&gt;ScriptProbe checks an npm package before you install it. It reads the tarball and lifecycle scripts as text, matches fixed patterns, and reports install scripts, network access, native builds, child processes, and publishing-account changes without executing the package. For a JavaScript developer or maintainer, the free check returns a verdict and the matching source text. You pay $15 once for a 30-day watch that rechecks a package.json or repository daily and emails changes.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;a href="https://listrun.thecompound.tech/dv/d1kxd9" rel="noopener noreferrer"&gt;ListRun&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ListRun
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxowekqdsttxwbhfxvusa.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fcrosspost%2Fdevto-digest%2Ffounder-devto%2Ffour-consumer-tools-scriptprobe-listrun-matchline-and-breachprobe-listrun-hero-1791539058856.png" alt="ListRun, screenshot of the landing page" width="800" height="450"&gt;&lt;/td&gt;
&lt;td&gt;ListRun is a directory-submission run sheet for a product owner who wants to see where a listing qualifies and what each submission requires. You answer what the product is, what it plugs into, and what it was built with, then ListRun shows the queue, the directories it will not attempt, and the order it reaches them. Each row carries a directory, submission method, qualification state, and note, with a receipt for every one. You pay $9 once for the Launch run or $19 once for the Full list.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;a href="https://matchline.thecompound.tech/dv/dr6ha1" rel="noopener noreferrer"&gt;MatchLine&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  MatchLine
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxowekqdsttxwbhfxvusa.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fcrosspost%2Fdevto-digest%2Ffounder-devto%2Ffour-consumer-tools-scriptprobe-listrun-matchline-and-breachprobe-matchline-hero-1791539059696.png" alt="MatchLine, screenshot of the landing page" width="800" height="450"&gt;&lt;/td&gt;
&lt;td&gt;MatchLine checks a resume against a job posting, line by line. It reads every stated requirement, points to the resume line that proves it, and separates gaps with a line to add from gaps with nothing to build on. For a job seeker, the free check returns the reading and both documents without keeping an archive. You pay $5 for a tailored PDF.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;a href="https://breachprobe.thecompound.tech/dv/o0t5xl" rel="noopener noreferrer"&gt;BreachProbe&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  BreachProbe
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxowekqdsttxwbhfxvusa.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fcrosspost%2Fdevto-digest%2Ffounder-devto%2Ffour-consumer-tools-scriptprobe-listrun-matchline-and-breachprobe-breachprobe-hero-1791539060460.png" alt="BreachProbe, screenshot of the landing page" width="800" height="450"&gt;&lt;/td&gt;
&lt;td&gt;BreachProbe checks whether a shipped app keeps one signed-in user's rows away from another. You paste an app URL and get a security score with checks for exposed keys, anonymous table access, headers, auth flows, and row-level isolation. For an app builder shipping user-owned data, the report uses two test users and compares table access rather than reading policy text. The result is a security report with findings, comparisons, and suggested fixes.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;One issue a week, and one shipped product taken apart every month.&lt;/strong&gt; What each product does, what it cost to build, what the pipeline behind it looks like, and what the numbers did, read off the repository and the live site, not written from memory. &lt;a href="https://thecompound.tech/list" rel="noopener noreferrer"&gt;Join the list&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>security</category>
      <category>product</category>
      <category>javascript</category>
      <category>startup</category>
    </item>
    <item>
      <title>OpenCal puts shared free time on one link</title>
      <dc:creator>kyisaiah47</dc:creator>
      <pubDate>Wed, 07 Oct 2026 17:40:26 +0000</pubDate>
      <link>https://dev.to/kyisaiah47/opencal-puts-shared-free-time-on-one-link-4ho2</link>
      <guid>https://dev.to/kyisaiah47/opencal-puts-shared-free-time-on-one-link-4ho2</guid>
      <description>&lt;h2&gt;
  
  
  One link for open time
&lt;/h2&gt;

&lt;p&gt;OpenCal shows open times from connected calendars on one link. Visitors can view available times up to 90 days ahead. Visitors can switch between Week, 2 weeks, and Month views. Visitors see the account name and selected profile details. Visitors never see event titles, places, or guests. OpenCal reads busy times instead of event details.&lt;/p&gt;

&lt;p&gt;OpenCal is free to use. You get a link by signing in with Google or Microsoft and selecting Get your link. Settings lets you change the link handle and choose which calendars count as busy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maya sends one link
&lt;/h2&gt;

&lt;p&gt;Maya is a designer at Northwind. Sam is a recruiter at Brightpath Talent. Sam needs a 30-minute call with Maya during the current week or the next week.&lt;/p&gt;

&lt;p&gt;Before OpenCal, Sam emails Maya for available times. Maya checks Google Calendar, the company Teams calendar, and iCloud. Maya types free times into the reply. Maya checks Teams again after finding one incorrect time.&lt;/p&gt;

&lt;p&gt;With OpenCal, Maya connects Google and iCloud. Maya signs in with Google and connects iCloud with an Apple Account. OpenCal reads only busy times from those calendars. Event titles stay in the connected calendars.&lt;/p&gt;

&lt;p&gt;Maya sends one OpenCal link to Sam. The link shows free time across the connected calendars.&lt;/p&gt;

&lt;h2&gt;
  
  
  Teams from the screen
&lt;/h2&gt;

&lt;p&gt;Most companies block outside apps from reading Teams calendars. OpenCal reads a company Teams calendar from the screen when a direct calendar connection cannot work.&lt;/p&gt;

&lt;p&gt;Maya opens the Teams week view. Maya presses Read from screen and selects the Teams window. OpenCal reads one frame in the browser. The screenshot never leaves the browser. OpenCal saves only busy times and stores those times encrypted. Maya checks the times before OpenCal saves them.&lt;/p&gt;

&lt;p&gt;OpenCal can also read an Outlook desktop calendar from the screen. The Chrome and Edge extension reads Outlook on the web while the account stays signed in. A private .ics feed can provide another calendar source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Times for both people
&lt;/h2&gt;

&lt;p&gt;Sam opens Maya's link and signs in with Google or Microsoft. OpenCal compares Maya's calendars with Sam's calendar. OpenCal sends Sam only times that work for both people.&lt;/p&gt;

&lt;p&gt;Sam books Thursday at 11:00. OpenCal saves the booking for Maya and Sam. OpenCal keeps the booking in OpenCal by default. Maya and Sam can turn on calendar booking in Settings under Booking. Google or Outlook then adds the meeting to the selected calendar and sends the invite.&lt;/p&gt;

&lt;p&gt;The link lets anyone book when the owner selects Anyone can book. The owner can create one-time links that allow one booking. The owner can also turn booking off while keeping the free times visible. A visitor must sign in before booking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calendars that connect
&lt;/h2&gt;

&lt;p&gt;OpenCal connects several Google accounts, personal and work Microsoft accounts, and an iCloud account. OpenCal can read Teams and Outlook calendars from the desktop screen. The browser extension can read Outlook on the web. OpenCal can read any calendar with a private .ics address.&lt;/p&gt;

&lt;p&gt;OpenCal checks connected calendars when a page or link opens. OpenCal subtracts busy times from the hours and days selected in Settings. OpenCal ignores events marked free, canceled, or declined. OpenCal counts tentative events as busy.&lt;/p&gt;

&lt;p&gt;OpenCal gives each person one link for shared availability and booking. Get a free link at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opencal.link" rel="noopener noreferrer"&gt;https://opencal.link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>calendar</category>
      <category>scheduling</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
