<?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: Shreyas</title>
    <description>The latest articles on DEV Community by Shreyas (@seneca02).</description>
    <link>https://dev.to/seneca02</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%2F4222627%2Fe280e701-4091-44fd-a8e1-4ff3fa50f9ea.jpg</url>
      <title>DEV Community: Shreyas</title>
      <link>https://dev.to/seneca02</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seneca02"/>
    <language>en</language>
    <item>
      <title>Building OrderCraft: A Local-First Financial Charting Terminal in a Single ~14MB Go Binary</title>
      <dc:creator>Shreyas</dc:creator>
      <pubDate>Mon, 02 Nov 2026 15:11:08 +0000</pubDate>
      <link>https://dev.to/seneca02/building-ordercraft-a-local-first-financial-charting-terminal-in-a-single-14mb-go-binary-cmd</link>
      <guid>https://dev.to/seneca02/building-ordercraft-a-local-first-financial-charting-terminal-in-a-single-14mb-go-binary-cmd</guid>
      <description>&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%2Flrpozas9atdwgpqals3y.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%2Flrpozas9atdwgpqals3y.png" alt="OrderCraft Terminal" width="800" height="469"&gt;&lt;/a&gt;&lt;br&gt;
Modern financial charting platforms have converged on the same frustrating cloud SaaS model: lock basic technical analysis behind $15 to $60/month subscriptions, restrict free users to 2 indicators per chart, paywall multi-chart split-screen layouts, and force all your watchlists and layouts into their cloud.&lt;/p&gt;

&lt;p&gt;On the flip side, developers who try to build hosted open-source alternatives hit two massive walls almost immediately:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;IP Rate Limits:&lt;/strong&gt; Public exchange APIs (like Binance or Yahoo Finance) ban central server IPs within hours when multiple users request market data through a shared backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Market Data Redistribution Licensing:&lt;/strong&gt; Exchanges demand thousands of dollars per month the moment a central server redistributes market feeds to third-party users.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To solve both problems at the root, I built and open-sourced &lt;strong&gt;OrderCraft&lt;/strong&gt; (&lt;code&gt;v0.1.0&lt;/code&gt;, MIT License) — a high-performance, &lt;strong&gt;100% local-first&lt;/strong&gt; financial charting and technical analysis terminal built with &lt;strong&gt;Go&lt;/strong&gt;, &lt;strong&gt;React 19&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt;, and &lt;strong&gt;Lightweight Charts&lt;/strong&gt; (Apache-2.0).&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ordercraft-hq" rel="noopener noreferrer"&gt;
        ordercraft-hq
      &lt;/a&gt; / &lt;a href="https://github.com/ordercraft-hq/terminal" rel="noopener noreferrer"&gt;
        terminal
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      High-performance, local-first financial charting &amp;amp; technical analysis terminal built with Go, React, and Lightweight Charts.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ordercraft-hq/terminal/logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fordercraft-hq%2Fterminal%2FHEAD%2Flogo.png" alt="OrderCraft Logo" width="96" height="96"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;OrderCraft&lt;/h1&gt;
&lt;/div&gt;
  &lt;p&gt;&lt;strong&gt;High-Performance Open-Source Financial Charting &amp;amp; Market Analysis Workstation&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://github.com/ordercraft-hq/terminal/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aea3dea1c237581607766ee7f0bcfb8ab26ac9b3c44d4082b8583eca9b1034e3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6f7264657263726166742d68712f7465726d696e616c3f636f6c6f723d303839393831266c6162656c3d72656c65617365" alt="Release"&gt;&lt;/a&gt;
    &lt;a href="https://golang.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ebae0469a0913ac2ed0c1cdafc0d0f3c4a1657a6c417c45d76e9afded53f0ad8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f676f2d312e32332b2d3030414444383f6c6f676f3d676f266c6f676f436f6c6f723d7768697465" alt="Go Version"&gt;&lt;/a&gt;
    &lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/839c99d812f77c1725556d35890f4393c929dfa719cee13a8c71e82dc146715d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f747970657363726970742d352e782d3331373843363f6c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465" alt="TypeScript"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/ordercraft-hq/terminal/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/ordercraft-hq/terminal/pulls" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dd0b24c1e6776719edb2c273548a510d6490d8d25269a043dfabbd38419905da/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667" alt="PRs Welcome"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;

&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/116744812/691427045-3111b68c-1158-4f48-a2c8-5e79d2252362.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM2MzI1NzAsIm5iZiI6MTc5MzYzMjI3MCwicGF0aCI6Ii8xMTY3NDQ4MTIvNjkxNDI3MDQ1LTMxMTFiNjhjLTExNTgtNGY0OC1hMmM4LTVlNzlkMjI1MjM2Mi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMTAyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTEwMlQxNTExMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MGE5ZTg3N2UyMWYzYmRjMWIyM2NiMmFkOTlkY2M0ZGI3Yzg1OWI3ZjRiOGIxZDdhYWM5NGZhYzUzOTBhNGM5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.jnxl8N7TdxAOENrPc-LEm-0VzLW5w0M_um0KIBxfna8"&gt;&lt;img width="1680" height="984" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F116744812%2F691427045-3111b68c-1158-4f48-a2c8-5e79d2252362.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM2MzI1NzAsIm5iZiI6MTc5MzYzMjI3MCwicGF0aCI6Ii8xMTY3NDQ4MTIvNjkxNDI3MDQ1LTMxMTFiNjhjLTExNTgtNGY0OC1hMmM4LTVlNzlkMjI1MjM2Mi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMTAyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTEwMlQxNTExMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MGE5ZTg3N2UyMWYzYmRjMWIyM2NiMmFkOTlkY2M0ZGI3Yzg1OWI3ZjRiOGIxZDdhYWM5NGZhYzUzOTBhNGM5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.jnxl8N7TdxAOENrPc-LEm-0VzLW5w0M_um0KIBxfna8" class="js-gh-image-fallback"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚡ What is OrderCraft?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;OrderCraft&lt;/strong&gt; is a 100% original, permissive open-source financial charting workstation built from first principles with &lt;strong&gt;Go&lt;/strong&gt;, &lt;strong&gt;React 19&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt;, and &lt;strong&gt;Lightweight Charts v5&lt;/strong&gt; (Apache-2.0).&lt;/p&gt;
&lt;p&gt;Designed for active discretionary traders, quantitative developers, and financial analysts, OrderCraft runs as a &lt;strong&gt;single standalone binary with an embedded high-speed frontend&lt;/strong&gt; (&lt;code&gt;//go:embed&lt;/code&gt;), a local &lt;strong&gt;Docker container&lt;/strong&gt;, or a &lt;strong&gt;PWA app&lt;/strong&gt;. It features sub-millisecond multi-exchange WebSocket streams, multi-chart synchronized workspaces, pixel-perfect drawing primitives, vectorized indicator math, and complete local SQLite persistence.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Key Features&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Highlights&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-Provider Data Feeds&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Zero-config out-of-the-box public streams (&lt;strong&gt;Binance Spot &amp;amp; Futures&lt;/strong&gt;, &lt;strong&gt;Bybit v5&lt;/strong&gt;, &lt;strong&gt;Coinbase Advanced&lt;/strong&gt;) and BYOK broker integrations (&lt;strong&gt;Alpaca Markets&lt;/strong&gt;, &lt;strong&gt;OANDA v20&lt;/strong&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unified Single Binary&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Go backend embeds the React SPA (&lt;code&gt;//go:embed&lt;/code&gt;) and runs standalone with &lt;code&gt;--app-mode&lt;/code&gt;, &lt;code&gt;--port&lt;/code&gt;,&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ordercraft-hq/terminal" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  🏗️ How It Works: The Single-Binary Local-First Architecture
&lt;/h2&gt;

&lt;p&gt;Instead of running in the cloud, OrderCraft compiles into a single standalone ~14.8MB executable (&lt;code&gt;CGO_ENABLED=0&lt;/code&gt;) that runs directly on your machine (&lt;code&gt;127.0.0.1&lt;/code&gt;). Because &lt;em&gt;your&lt;/em&gt; machine connects directly to public market data feeds or your own brokerage API keys, there is no middleman server, zero telemetry, and no exchange redistribution bottleneck.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Zero-Dependency &lt;code&gt;//go:embed&lt;/code&gt; Packaging
&lt;/h3&gt;

&lt;p&gt;The entire frontend (React 19, TypeScript, Vite) compiles down into static assets and is embedded directly into the Go binary using &lt;code&gt;//go:embed&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Node.js, Python, or external database installation required for end-users.&lt;/li&gt;
&lt;li&gt;Cross-compiles cleanly to standalone binaries for &lt;strong&gt;Windows (&lt;code&gt;amd64&lt;/code&gt;)&lt;/strong&gt;, &lt;strong&gt;macOS (&lt;code&gt;arm64&lt;/code&gt; / Apple Silicon &amp;amp; &lt;code&gt;amd64&lt;/code&gt;)&lt;/strong&gt;, and &lt;strong&gt;Linux (&lt;code&gt;amd64&lt;/code&gt; / &lt;code&gt;arm64&lt;/code&gt;)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Running &lt;code&gt;./ordercraft --app-mode&lt;/code&gt; automatically detects Chromium, Brave, or Edge and launches the terminal inside a native, frameless desktop application window.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Concurrent Go WebSocket Fan-In / Fan-Out Coordinator
&lt;/h3&gt;

&lt;p&gt;Financial charting requires sub-second tick updates across multiple symbols and timeframes simultaneously. In &lt;code&gt;internal/server/hub.go&lt;/code&gt; and &lt;code&gt;internal/datafeed/&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Go backend manages upstream WebSocket streams and REST polling across &lt;strong&gt;Binance&lt;/strong&gt;, &lt;strong&gt;Yahoo Finance&lt;/strong&gt;, &lt;strong&gt;OANDA v20&lt;/strong&gt;, &lt;strong&gt;Alpaca&lt;/strong&gt;, and &lt;strong&gt;TwelveData&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Incoming ticks are normalized, aggregated into live OHLCV bars in memory, and fanned out over a local WebSocket hub to all subscribed chart panes in the browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Pure-Go SQLite Persistence (&lt;code&gt;0600&lt;/code&gt; Permissions)
&lt;/h3&gt;

&lt;p&gt;All historical OHLCV candle caches, multi-pane workspace layouts, custom chart drawings, indicator templates, and BYOK (Bring Your Own Key) brokerage credentials are stored in a local SQLite database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Historical bars are cached locally so switching timeframes or scrolling back in history is instantaneous.&lt;/li&gt;
&lt;li&gt;API keys (OANDA, Alpaca, TwelveData) are stored strictly on your local disk with &lt;code&gt;0600&lt;/code&gt; file permissions (&lt;code&gt;0700&lt;/code&gt; directory permissions) and are masked (&lt;code&gt;AKIA••••••••1234&lt;/code&gt;) across all status endpoints so raw secrets are never exposed back to the browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Custom Canvas 2D Drawing Primitives (&lt;code&gt;ISeriesPrimitive&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;While &lt;code&gt;lightweight-charts&lt;/code&gt; (Apache-2.0) provides fast HTML5 Canvas candlestick rendering, it does not ship with interactive drawing tools out of the box. We built a custom Canvas 2D drawing engine from scratch supporting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trendlines, Rays &amp;amp; Extended Lines&lt;/strong&gt; (with OHLC magnet snapping)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fibonacci Retracements&lt;/strong&gt; with customizable levels&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallel Channels &amp;amp; Shaded Rectangles&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long &amp;amp; Short Risk-Reward Position Calculators&lt;/strong&gt; with interactive Entry, Take-Profit, and Stop-Loss drag handles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Pane Synchronized Workspaces:&lt;/strong&gt; Split your screen into &lt;code&gt;1x1&lt;/code&gt;, &lt;code&gt;2V&lt;/code&gt;, &lt;code&gt;2H&lt;/code&gt;, &lt;code&gt;3&lt;/code&gt;, or &lt;code&gt;4&lt;/code&gt;-pane grids with synchronized crosshairs, symbols, and timeframes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Hardening a &lt;code&gt;127.0.0.1&lt;/code&gt; Server Against Cross-Tab Browser Attacks
&lt;/h3&gt;

&lt;p&gt;One overlooked attack surface in local-first web apps is &lt;strong&gt;Localhost CSRF &amp;amp; Cross-Site WebSocket Hijacking&lt;/strong&gt;. If a local server sets &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; or skips WebSocket &lt;code&gt;Origin&lt;/code&gt; checks, any malicious website open in another browser tab can query &lt;code&gt;[http://127.0.0.1:3000/api/](http://127.0.0.1:3000/api/)*&lt;/code&gt; and read user data.&lt;/p&gt;

&lt;p&gt;Before releasing &lt;code&gt;v0.1.0&lt;/code&gt;, we hardened the Go HTTP/WebSocket server to enforce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strict loopback &lt;code&gt;Origin&lt;/code&gt; validation (&lt;code&gt;localhost&lt;/code&gt;, &lt;code&gt;127.0.0.1&lt;/code&gt;, &lt;code&gt;[::1]&lt;/code&gt;) on both REST preflight/mutation handlers and the WebSocket upgrader.&lt;/li&gt;
&lt;li&gt;Upstream URL path and query escaping (&lt;code&gt;url.PathEscape&lt;/code&gt; / &lt;code&gt;url.QueryEscape&lt;/code&gt;) across all provider adapters to prevent SSRF/path traversal.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http.MaxBytesReader&lt;/code&gt; payload caps and Slowloris connection timeouts (&lt;code&gt;ReadHeaderTimeout&lt;/code&gt;, &lt;code&gt;ReadTimeout&lt;/code&gt;, &lt;code&gt;WriteTimeout&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ Try It Out in 10 Seconds
&lt;/h2&gt;

&lt;p&gt;You can grab the prebuilt &lt;code&gt;v0.1.0&lt;/code&gt; binary for Windows, macOS, or Linux directly from our &lt;strong&gt;&lt;a href="https://github.com/ordercraft-hq/terminal/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;&lt;/strong&gt; page, or build from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ordercraft-hq/terminal.git
&lt;span class="nb"&gt;cd &lt;/span&gt;terminal
&lt;span class="c"&gt;# Run in native frameless desktop window mode:&lt;/span&gt;
./ordercraft &lt;span class="nt"&gt;--app-mode&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Out of the box, it streams live crypto (&lt;code&gt;BINANCE:BTCUSDT&lt;/code&gt;, &lt;code&gt;ETHUSDT&lt;/code&gt;, etc.) and equity data (&lt;code&gt;AAPL&lt;/code&gt;, &lt;code&gt;NVDA&lt;/code&gt;, &lt;code&gt;SPY&lt;/code&gt;) with zero configuration or API keys required.&lt;/p&gt;

&lt;p&gt;I'd love for you to check out the repository, give it a ⭐ on GitHub if you find local-first tools useful, and let me know in the comments (or in &lt;a href="https://github.com/ordercraft-hq/terminal/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;) what indicators or market data providers (IBKR, Polygon, local CSV/Parquet backtest replay) you'd like to see in &lt;code&gt;v0.2.0&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/ordercraft-hq/terminal" rel="noopener noreferrer"&gt;https://github.com/ordercraft-hq/terminal&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>go</category>
      <category>react</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
