Edition No. 17 · 11 Sep 2026
Twelve repositories for checking, building and publishing your work
Two of them carry no licence file at all, and both publish on npm declaring MIT.
The web version carries the English / Русский switch. The Russian text of this edition is also in the file radar-2026-09-11-ru.md, delivered into the chat on the day. This archive stays English only.
Two projects in today's edition carry no licence file on GitHub. Both of them publish their package on npm with the word MIT on it. That gap is small, it is easy to miss, and it decides what you are allowed to do with the code. Both are still in the edition, because a licence is a warning for you to read, never a reason to hide a good project. The other ten cover spell checking, broken links, a Postgres database that needs no server, document conversion, newsletters and two tools for testing a trading idea.
We aim for twelve every day. Some candidates fall out while we check them — those are listed at the end, with the reason.
If you only do three things
- crate-ci/typos (#1) — five minutes, one command, nothing left running. It reads your code and your documents and finds real spelling mistakes. It is built to be quiet, so it does not bury you in false alarms. Run it once over Grasppy and once over ScalpingMate today.
- lycheeverse/lychee (#2) — ten minutes. It opens every link on your site and tells you which ones are broken. Dead links cost you readers and they cost you search ranking. This is the cheapest fix on the page.
- electric-sql/pglite (#4) — an hour or two, and it changes how you work. It is a real PostgreSQL database that runs inside your own program. No server, no Docker, no port. Your tests get a fresh clean database in a fraction of a second. ---
Every link in one place
| # | Repository | Website | Stars | Licence |
|---|---|---|---|---|
| 1 | crate-ci/typos | no separate website | 4.0k | MIT or Apache-2.0 |
| 2 | lycheeverse/lychee | lychee.cli.rs | 3.7k | Apache-2.0 or MIT |
| 3 | biomejs/biome | biomejs.dev | 25.7k | MIT or Apache-2.0 |
| 4 | electric-sql/pglite | pglite.dev | 16.0k | Apache-2.0 |
| 5 | usebruno/bruno | usebruno.com | 46.3k | MIT |
| 6 | gotenberg/gotenberg | gotenberg.dev | 12.8k | MIT |
| 7 | delucis/astro-og-canvas 💎 | no website listed | 279 | none on GitHub; MIT on npm |
| 8 | opral/inlang 💎 | inlang.com | 2.0k | none on GitHub; MIT on npm |
| 9 | pentacent/keila 💎 | keila.io | 2.2k | AGPL-3.0 |
| 10 | MinishLab/semhash 💎 | minish.ai | 960 | MIT |
| 11 | nautechsystems/nautilus_trader | nautilustrader.io | 24.1k | LGPL-3.0 |
| 12 | stefan-jansen/alphalens-reloaded 💎 | alphalens.ml4trading.io | 644 | Apache-2.0 |
Two of today's twelve have no licence file at all
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.
4.1k stars · Apache-2.0 · v1.50.1 (2026-09-01)
Fast source-code spell checker with low false positives — designed to run on every commit.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line program written in Rust that scans a folder for misspelled words. It was designed for large projects, so it is fast, and it was tuned to almost never complain about something that is correct.What it is good for. Any person who writes both code and words. Spelling mistakes hide inside variable names, comments, commit messages and documentation, and nobody reads those closely enough to catch them. A machine does. For Gennady this is worth running over the Grasppy repository and the ScalpingMate one, and over the text of the website, because English is not his first language and a quiet second pair of eyes costs nothing.
- One command, no configuration needed to start.
- Very few false alarms, which is the whole reason people keep it switched on.
- It can fix the mistakes for you with a single flag.
- Installing it from source needs Rust (the programming language it is written in, which you install once with a script from rust-lang.org). On a Mac, Homebrew is easier.
- It only knows English words. It will flag Russian text as wrong, so keep it away from those files.
- It cannot tell you that a correct word is the wrong word. "Form" and "from" are both real words.
# macOS, easiest: brew install typos-cli # Anywhere, if you have Rust installed: cargo install typos-cli # Then, inside your project folder: typos # list what it found typos --write-changes # fix them
3.9k stars · Apache-2.0 · lychee-v0.24.2 (2026-05-01)
Fast link checker in Rust — ideal for CI on every deploy, including links inside Markdown docs.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line program written in Rust that requests every link it finds and reports the ones that fail. It handles websites, Markdown files, HTML files and plain text, and it checks email addresses too.What it is good for. Anybody who publishes. Broken links annoy readers and search engines treat them as a sign that a site is not looked after. Running this once a week, or on every deploy, turns a slow rot into a short list. For grasppy.com this is the cheapest improvement available: point it at the site and fix whatever it names.
- Checks a whole site, not one page at a time.
- Understands Markdown, so it can check your documentation before you publish it.
- Fast, because it checks many links at the same time rather than one after another.
- Some websites block automated visitors and will answer with an error even though the link is fine. You will see a few false alarms and have to judge them.
- Checking a large site makes many requests quickly, which can get your address temporarily blocked by a service you link to a lot.
- Installing from source needs Rust. Docker (a way to run a program inside its own sealed box, so it cannot touch anything else on your machine) avoids that.
# macOS: brew install lychee # With Docker, no installation at all: docker run --init -it -v "$(pwd)":/input lycheeverse/lychee /input/README.md # Check a live site: lychee --verbose https://grasppy.com
25.7k stars · MIT or Apache-2.0 (dual) · 2.5.13 on registry.npmjs.org (about 2026-09-09)
One fast Rust tool that both formats and checks JavaScript, TypeScript, CSS and JSON, in place of Prettier and ESLint together.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A toolchain for web projects, written in Rust. It formats code and it lints code, which means it points at patterns that are likely to be bugs. It works from the command line and it plugs into editors.What it is good for. Anybody with a React or TypeScript project. The usual setup is Prettier for formatting and ESLint for checking, two tools with two configurations that disagree with each other. Biome is one tool with one configuration, and it is fast enough that you stop noticing it. Grasppy's React front end is exactly the kind of project it was built for, and Claude Code will follow a Biome configuration as happily as any other.
- One tool, one settings file, instead of two that argue.
- Fast enough to run on every file save without waiting.
- It can migrate your existing Prettier and ESLint settings for you.
- It does not cover every language. Markdown and HTML support is still growing, so you may keep Prettier for those.
- Some ESLint rules that depend on type information have no equal here yet. If you rely on those, check before you switch.
- Switching an existing project reformats a lot of files at once, which makes one enormous commit. Do it on its own, not mixed with real work.
npm install --save-dev --save-exact @biomejs/biome npx biome init # writes biome.json npx biome check --write ./src # format and fix in one pass # Coming from Prettier or ESLint: npx biome migrate prettier --write npx biome migrate eslint --write
16.0k stars · Apache-2.0 (parts under the PostgreSQL licence) · @electric-sql/pglite@0.5.8 (2026-08-26), read from /releases/latest and confirmed on registry.npmjs.org
The real PostgreSQL engine compiled to WebAssembly, so it runs inside a JavaScript program or a browser tab with no server at all.
▶Repo detailsthe review · specs · pros & cons · install
What it is
The real PostgreSQL engine, built to run as WebAssembly (a format that lets a program written in another language run inside JavaScript). It runs in Node.js, in Bun, and in a browser tab. Data can live only in memory, or it can be saved to a file or to the browser's own storage.What it is good for. Two jobs, and both are real. The first is testing: instead of starting a database server before your tests, each test gets its own fresh empty database in milliseconds, and no test can leave dirt behind for the next one. The second is demonstrations: a product can run entirely in a visitor's browser with no account and no backend, and that makes a very persuasive front page.For Grasppy there is a genuine use. Grasppy already runs on PostgreSQL. A public demo where a visitor pastes a long chat and sees the map appear, without signing up and without touching the server, would run on this and cost nothing per visitor.
- A fresh database in milliseconds, so tests stop sharing state.
- It is real PostgreSQL, not an imitation, so the same SQL works in production.
- It supports extensions, including pgvector for similarity search.
- One connection at a time. This is not a replacement for your production server.
- The browser version downloads a few megabytes of WebAssembly on first visit. Plan for that on a slow connection.
- It is driven from JavaScript or TypeScript. A Python backend cannot use it directly, so for Grasppy it belongs in the front end and in the JavaScript tests, not in FastAPI.
npm install @electric-sql/pglite
46.3k stars · MIT — the LICENSE file was opened directly on 2026-09-11 and carries no restriction on commercial use and no paid-edition clause · v4.1.0 (2026-08-20), read from /releases/latest
An open-source client for HTTP requests that stores every saved request as a plain file in your own repository.
▶Repo detailsthe review · specs · pros & cons · install
What it is
An open-source client for HTTP requests, in the same family as Postman and Insomnia. Each request is stored as a small text file in a folder you choose, using a simple format the project calls Bru. There is also a command-line version so the same requests can run in automated checks.What it is good for. Anybody building a web service. The saved requests become documentation that cannot go stale, because they sit next to the code and change with it in the same commit. Two people looking at the same repository see the same requests. Nothing is stored in somebody else's cloud account.For Grasppy, a folder of Bruno requests against the FastAPI service is a fast way to check by hand what the front end will see, and the command-line runner can repeat those checks after every deploy.
- Requests live in git, so you can see who changed what and when.
- No account and no sign-in. It works with no internet connection.
- A command-line runner means the same requests can guard a deploy.
- The team-sharing and cloud features of Postman are not the point here. If you need shared workspaces for several people, this is a different shape of tool.
- Some Postman collections do not import cleanly and need editing by hand.
- It is a desktop application, so every machine needs it installed. There is no web version to open in a browser.
# Desktop app: download from https://www.usebruno.com/downloads # macOS: brew install bruno # Command-line runner, for automated checks: npm install -g @usebruno/cli cd my-api-collection bru run --env local
12.8k stars · MIT · v8.37.0 (2026-09-11), read from /releases/latest — published at 14:42 on the day of this edition
One service that turns HTML, Markdown, Word files and spreadsheets into PDF, using a real browser to lay the page out.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Docker image that exposes a simple web address you can post files to. Inside it are Chromium (the browser engine that lays out your HTML) and LibreOffice (which reads Word and spreadsheet files), wrapped so you never have to install or manage either one yourself.What it is good for. Anybody who has to produce a PDF that looks right. Invoices, reports, certificates, contracts and exported documents all end up needing one. Writing the page in HTML and CSS and letting a browser print it gives a far better result than assembling a PDF box by box in code.For Grasppy this is the missing piece of an "export this map as a PDF" button. The map is already HTML, so the export is a single request to this service.
- It uses a real browser to lay out the page, so your CSS, your web fonts and your page breaks behave.
- One service covers HTML, Markdown, Word, spreadsheets and merging PDFs together.
- It is the same in development and in production, because it is the same container.
- You have to run and watch another service. It is one more thing that can be down.
- Chromium is hungry. Give it about 1 GB of memory, and more if several conversions run at once.
- It must never be exposed to the open internet without protection, because anything that can send it a page can make your server fetch things on its behalf.
# Start it: docker run --rm -p 3000:3000 gotenberg/gotenberg:8 # Convert a live page to PDF: curl --request POST http://localhost:3000/forms/chromium/convert/url \ --form url=https://grasppy.com \ -o out.pdf # Convert a Word file: curl --request POST http://localhost:3000/forms/libreoffice/convert \ --form files=@report.docx \ -o report.pdf
279 stars · not shown on the GitHub page · astro-og-canvas@0.13.1 (2026-09-01)
Generates OpenGraph preview images for every page of an Astro site automatically.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small package for Astro (a website framework for content-heavy sites) that generates an image for each page at build time. You give it a background, a font and a logo, and it lays out the page title and description.What it is good for. Anybody publishing many pages who wants each shared link to look deliberate. A blog with eighty posts needs eighty preview images, and nobody draws eighty images. This makes them from text you already have.A warning about the licence. The repository carries no licence file at all. The package published on npm declares MIT, which is the usual permissive licence, but the code on GitHub says nothing. No licence means no permission by default. In practice the npm declaration is what most people rely on, and the author is a well-known Astro maintainer, so the risk is low. It is still a gap, and you should know it is there before you build something commercial on it.
- One small file gives every page its own preview image.
- The images are made when the site is built, so nothing runs at request time and nothing costs money per view.
- You control the background, the font, the logo and the colours.
- No licence file in the repository. The npm package says MIT.
- Astro only. A React or FastAPI site cannot use it.
- It pulls in canvaskit-wasm, a drawing engine of several megabytes. It makes your build slower, though it does not affect your visitors.
npm install astro-og-canvas canvaskit-wasm
2k stars · not shown on the GitHub page · no GitHub releases; 14,304 commits on main; paraglide-js v2.1.0 on npm (~54k weekly downloads)
Compiler-based i18n (Paraglide JS) plus a web editor — the no-server alternative to Tolgee.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A set of tools around a shared file format for translations. The best known part is Paraglide JS, which reads your translation files and writes a small typed function for each message. There is also a web editor for people who translate but do not write code.What it is good for. Anybody running a site in two languages. The compiled approach means a visitor downloads only their own language, so the page stays small, and a missing translation is caught when you build rather than when a reader finds it.Gennady's YouTube channel runs in English and Russian, and Grasppy's marketing site will face the same split. This is the tool that keeps the two versions honest.A warning about the licence. Like #7, the repository has no licence file at its root. The Paraglide JS package on npm declares MIT. This is a large project with an active company behind it and roughly fifty thousand downloads a week, so a missing file at the root is much more likely to be an oversight in a big folder of many packages than a deliberate restriction. Read the individual package's licence field before you commit to it.
- The visitor downloads one language, not all of them.
- A missing translation becomes a build error instead of a blank space on the page.
- There is a separate web editor, so a translator never has to open your code.
- No licence file at the repository root. The npm package says MIT.
- It publishes no releases on GitHub at all, so you have to follow the npm package to know what changed. A missing release is a publishing habit, not a sign of trouble: the last code landed on 7 September 2026.
- The project has renamed and rearranged its parts more than once. Older guides on the internet describe tools that no longer exist.
npx @inlang/paraglide-js@latest init # answer the questions, then: npm run build
2.2k stars · AGPL-3.0 · 0.30.3 (2026-09-06)
Newsletter tool with built-in signup forms and a visual editor — more marketer-shaped than Listmonk out of the box.
▶Repo detailsthe review · specs · pros & cons · install
What it is
An open-source newsletter application written in Elixir, storing its data in PostgreSQL. It handles subscribers, signup forms, campaigns, segmentation and simple statistics.What it is good for. Anybody building an audience who does not want a bill that grows with the list. Paid services start free and become expensive at exactly the moment the list becomes valuable. Keila is the alternative, and it is noticeably more marketer-shaped out of the box than Listmonk, which we covered in Edition 2: the signup forms and the visual editor are built in rather than bolted on.
- Signup forms and a visual editor come with it, so you are not gluing three tools together.
- Your subscriber list stays on your own server.
- It runs well on a small machine. Elixir is modest with memory.
- AGPL-3.0. If you offer a changed version of Keila to other people as a service, you must publish your changes. Running it for your own newsletter is completely fine.
- It writes email but it does not deliver it. You still need a sending service, which is where postalserver/postal from Edition 15 fits.
- Setting it up means Docker, a PostgreSQL database and mail settings. Budget an evening, not ten minutes.
# Simplest start, using the project's docker-compose file: curl -O https://raw.githubusercontent.com/pentacent/keila/main/docker-compose.yml docker compose up -d # then open http://localhost:4000 and read https://keila.io/docs
963 stars · MIT · v0.4.1 (2026-01-20)
Fast semantic deduplication of text datasets — strips near-duplicate chat turns before topic modelling so clusters come out clean.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Python library that turns each text into a list of numbers that represents its meaning, then groups the ones that sit close together and keeps one from each group. It uses small, fast models, so it runs on an ordinary computer without a graphics card.What it is good for. Anybody who processes a pile of text before doing anything clever with it. Support tickets, survey answers, scraped pages and chat logs are all full of near-repeats. Removing them makes every later step faster and the results cleaner.This is directly relevant to Grasppy. A long chat repeats itself constantly: the same question asked twice, the same point restated. Stripping near-duplicates before grouping turns a map with six near-identical branches into one with six distinct ones.
- Fast on a normal laptop. No graphics card needed.
- It can show you which items it considered duplicates, so you can check its judgement rather than trusting it.
- It handles both a single list and a train-and-test pair, which matters if you are training anything.
- "Close in meaning" is a threshold you choose. Set it too tight and you keep repeats; too loose and you delete something you wanted.
- It downloads a small model the first time it runs, so the first run needs an internet connection.
- The version number moves slowly. Judge it by its code, not by its release page: the last code landed on 24 May 2026.
source venv/bin/activate # if you use a virtual environment pip install semhash
28.6k stars · LGPL-3.0 · v1.231.0 (2026-08-02)
Production-grade Rust-native event-driven trading engine with a Python API — the same code backtests and trades live.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A trading platform with its core written in Rust and its strategies written in Python. It processes events in a strict order and can replay historical data at the tick level, which is the most detailed record of what actually happened.What it is good for. Anybody who intends to run a strategy with real money. The usual failure is not a bad idea; it is a test that was kinder than reality. This engine models order queues, partial fills and delays, so the test hurts in the same places the market will.For ScalpingMate the connection is exact. Scalping lives on small margins, which is where a flattering backtest does the most damage, and this is one of the few open engines built to stop that.
- The same strategy code backtests and trades live, so the two cannot drift apart.
- Rust underneath means it is fast enough for tick-level work.
- Many venues are supported, and adding another is a documented job rather than a rewrite.
- LGPL-3.0. You may use it in a closed product, but if you modify the library itself you must publish those modifications. Read the terms before you change its internals.
- The learning curve is real. Expect weeks before your first honest result, and expect to read the source.
- It is still marked Beta, and the interfaces do change between versions. Pin the version you use.
source venv/bin/activate pip install -U nautilus_trader # Documentation: https://nautilustrader.io/docs/
644 stars · Apache-2.0 · 0.4.5 (2025-07-23)
Factor analysis for trading signals: does this feature actually predict returns, before a strategy is built on it.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A maintained continuation of Quantopian's Alphalens, kept alive by Stefan Jansen. It takes a factor — any number you compute per instrument per day — and reports the returns, the ranking, the turnover and the decay that follow from it.What it is good for. Anybody researching trading signals. It sits before the backtester, not after it. A backtest tells you what one set of rules did. This tells you whether the underlying signal carries information at all, which is a cheaper and more honest question to ask first.For ScalpingMate this is the step that belongs before any strategy work on EURUSD. Test the signal, then build.
- Answers the cheap question before you spend weeks on the expensive one.
- Its charts are the standard vocabulary of factor research, so the output is easy to discuss with anybody in the field.
- Apache-2.0, so there is no licence trap in commercial use.
- It was built around daily stock data. Applying it to intraday currency data means reshaping your inputs yourself.
- Version 0.4.6 on PyPI dates from June 2025, and the last code landed on 15 December 2025 — a little over eight months ago. It is a maintained fork of a finished project, not a fast-moving one.
- The output takes some learning. The charts assume you already know what a quantile spread is.
source venv/bin/activate pip install alphalens-reloaded # Documentation: https://alphalens.ml4trading.io
Checked, and left out
These were opened for this edition and did not make it, with the reason.
observablehq/plot
observablehq/plot — UNVERIFIED. An excellent charting library, 5.3k stars, ISC. Its newest release is 0.6.17 (February 2025) and npm agrees, but this sandbox cannot read commit dates, so recent code could not be proven either way. Recorded as unverified with the reason stated; explicitly NOT called dormant. Replaced by biomejs/biome so the edition still had twelve.
usesend/useSend
usesend/useSend — VERIFIED ALIVE, last code 8 September 2026. Left out only because the twelve were full. Stays queued and is near the front of the queue.
d3/d3-hierarchy
d3/d3-hierarchy — VERIFIED ALIVE, but the last code landed 2025-04-08, seventeen months ago and close to the eighteen-month bar. Held for a run that can re-check it rather than published on a date about to expire. Stays queued.
Coming tomorrow