reaptor/elmish-land
64.8
Adequate · 3 October 2026
4.1k
lines of production code
F#
with JavaScript
2
measurements over time
What this system is
Elmish Land is a .NET CLI tool that scaffolds and manages Fable-based Elmish web applications. It automates project initialization, page generation, and layout configuration while handling dependency resolution and build process visibility. The system also provides upgrade utilities for migrating between major library versions and ensures backward compatibility with existing project structures.
Features
Added shell scripts for running Elmish Land in a test project
Added \el.ps1\ (PowerShell) and \el.sh\ (Bash) scripts to the \quicktest\ directory. These scripts allow users to initialize a \TestProject\ directory and run the \elmish-land\ command against it, facilitating quick testing of the tool.
quicktest · high confidence
New CLI scaffolding and project validation logic
The src directory now contains the core implementation for the ElmishLand CLI, including commands for init, server, build, restore, upgrade, and adding pages or layouts. It introduces a new validation step that automatically reorders Compile entries in the .fsproj file to ensure Page.fs files are placed last within their directories, with support for auto-accept, auto-decline, or interactive prompting. The tooling also adds robust dependency resolution for NuGet and npm packages, ensuring the latest major versions are used during initialization, and includes comprehensive error handling for missing SDKs, Node.js, Vite, or project files.
src · high confidence
Behavioural changes
CLI commands now support auto-accept/decline prompts and configurable build options
The CLI commands (init, add-page, build, server, restore) now accept a prompt behavior mode that allows users to automatically accept or decline interactive prompts, such as adding new pages to the project file or choosing a routing mode during initialization. The build and server commands also support a no-cache option for Fable to bypass caching, and the server command displays all process output after the development server is ready, improving visibility into the build process.
src/Commands · high confidence
Major overhaul of CLI scaffolding, layout system, and upgrade tooling
The \elmish-land\ CLI has been significantly restructured to support a new layout system based on naming conventions, allowing nested layouts (e.g., \src/Pages/Products/Layout.fs\) to automatically update page files and project references. The \upgrade\ command now includes specific source-level transformations for migrating from Feliz 2 to Feliz 3 (e.g., \React.fragment\ to \React.Fragment\) and detects manual migration needs for \React.memo\ and \React.lazy\. Additionally, the tooling now supports typed path and query parameters, configurable render methods (batched vs. synchronous), and improved error detection for layout mismatches in Fable output.
elmish-land · high confidence
New layout system based on naming convention
The template engine now generates a new layout system based on naming conventions. This includes new templates for layouts (AddLayout.template), pages (AddPage.template), and a new NotFound page. The App.template has been updated to support layouts, including layout props and the ability to send messages from layouts to pages. The Router.template has been updated to support path routing and typed path/query parameters. The Command.fs.template has been updated to support shared and layout messages. The Routes.template has been updated to support typed path/query parameters and a new isEqualWithoutPathAndQuery function. The elmish-land.json template has been updated to support the new layout system and path routing.
src/templates · high confidence
Test coverage
Added integration test infrastructure and regression tests; Added integration tests for shared module commands and v1.0.4 compatibility; Initial test suite for CLI commands and template engine.
Dependencies
Migrate to .NET 10 and adopt Central Package Management
The Elmish Land CLI tool has been upgraded to target .NET 10.0, requiring a compatible .NET SDK to run. To improve dependency consistency across the project and its generated templates, the build system now uses .NET's Central Package Management (via \Directory.Packages.props\) instead of individual version specifications in project files. This change also updates the documentation site to use Docusaurus 3.10.1 and introduces integration tests to verify backward compatibility with version 1.0.4 and support for newer dependencies like React 19.
(dependencies) · high confidence
Housekeeping
Initial project scaffolding and tooling configuration
The repository has been initialized with core project infrastructure, including solution files (elmish-land.sln), build properties (Directory.Build.props), and SDK constraints (global.json targeting .NET SDK 10.0.103). Development workflow is established via .editorconfig for Fantomas formatting, .gitignore for build artifacts, and packtest scripts (packtest.sh, packtest.ps1) to validate the NuGet package. Documentation is structured with a comprehensive CHANGELOG.md, README.md, and CONTRIBUTING.md, while the project license has been updated to 2026.
(repo-wide) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 65 → 65 (+0.1)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 75 → 75 (+0.0)
- Architecture 97 → 100 (+2.7)
- Maturity 67 → 67 (-0.0)
- Readiness 56 → 56 (+0.0)
- Security 75 → 75 (+0.0)
Resolved (3)
- Duplicated block (22–23 lines × 2) (src/Commands/AddLayout.fs)
- Duplicated block (24–25 lines × 2) (src/Commands/AddLayout.fs)
- Near-duplicate member pair (103 shared lines) (src/Commands/AddPage.fs)
New (16)
- Documentation: no architecture or design documentation (docs/docs/api-reference/app-config.md)
- Documentation: no architecture or design documentation (docs/docs/api-reference/cli.md)
- Duplicated block (22–23 lines × 2) (src/Commands/AddLayout.fs)
- Duplicated block (24–25 lines × 2) (src/Commands/AddLayout.fs)
- Near-duplicate member pair (103 shared lines) (src/Commands/AddLayout.fs)
- Outdated (npm): @types/ws
- Outdated (npm): bundle-name
- Outdated (npm): mdast-util-gfm-strikethrough
- Outdated (npm): mdast-util-to-markdown
- Outdated (npm): micromark
- Outdated (npm): micromark-core-commonmark
- Outdated (npm): micromark-factory-space
- Outdated (npm): micromark-util-types
- Outdated (npm): regenerate-unicode-properties
- Outdated (npm): regexpu-core
- Outdated (npm): source-map-js
Architecture
- Unchanged — 0 containers · 2 contexts · 1 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
reaptor/elmish-land was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit b338d52aef9032f146f956bbab9cf32770be446c — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.