JordanMarr/fable-lit-fullstack-template
69.4
Adequate · 3 October 2026
1.3k
lines of production code
F#
primary language
2
measurements over time
What this system is
This system is a full-stack F\# development template that provides a unified structure for building web and cross-platform desktop applications. It integrates an ASP.NET Core backend with a Fable.Lit frontend, utilizing Serde.FS for typed RPC communication and Photino for native desktop hosting. The template includes a FAKE-based build system for packaging and deployment, along with built-in validation, logging, and testing utilities to streamline the development workflow.
Features
Add cross-platform Desktop host using Photino
Users can now run the application as a native desktop client on Windows, macOS, and Linux via a new Photino-based host. This change introduces a new Desktop entry point that embeds an in-process Kestrel server within a native window, serving the web interface locally. In development, the desktop app proxies requests to the Vite dev server for hot module replacement, while in production it serves the static client files directly from the executable's directory on a dynamic loopback port.
Template/Desktop, WebApi · high confidence
Fullstack template now supports cross-platform desktop apps via Photino
The template has been updated to version 3.2.0, introducing a new Desktop project that allows you to deploy your application as a cross-platform desktop app using the Photino framework, in addition to the existing web deployment options. The solution structure now includes a dedicated Desktop.fsproj alongside the WebApi, Shared, and WebLit projects, and the build process is managed via FAKE tasks in the Build project rather than npm scripts.
Template · high confidence
Initial build system with FAKE targets for server, client, and desktop packaging
The Template/Build directory now contains the initial FAKE-based build scripts (Program.fs, Files.fs, Retry.fs, Setup.fs, Swag.fs, Tools.fs) that define targets for cleaning, restoring, building, and testing both the WebApi server and WebLit client, as well as packaging them into a distributable format via 'Pack' and 'PackNoTests'. It also introduces specific targets for building and packaging a cross-platform Desktop application ('Desktop', 'PackDesktop') and an Azure Web App deployment task ('AzDeployWeb'), providing a unified command-line interface for the full stack development and deployment workflow.
Template/Build · high confidence
Initial build-time analyzer installation logic added
The build system now includes a new F\# module (Template/Build/Analyzers.fs) that handles downloading and installing NuGet packages containing F\# analyzers. This logic fetches packages from the NuGet registry, extracts them, and installs them into a specified directory, supporting target frameworks netcoreapp2.0 and netcoreapp2.1.
Build · high confidence
Initial release of the WebLit template with a cat facts demo app
The WebLit template is now available, providing a starter project built on Fable.Lit, Vite, and the Fable.Lit.Dsl. It includes a complete demo application for managing and viewing cat facts, featuring a multi-page router, a validation framework for forms, and a toast notification system. The UI leverages Shoelace and Fluent UI components, with a dark theme and pagination support for the fact list.
Template/WebLit · high confidence
Behavioural changes
Initial WebApi template with ASP.NET Core and Serilog
The WebApi template now uses ASP.NET Core with Serilog for logging and includes a debug route that auto-redirects to the local dev server at localhost:3000. It implements the IServerApi protocol to fetch cat facts from an external API, with a fix that prevents the HttpClient from being disposed prematurely and replaces periods in fact text to avoid router issues.
Template/WebApi · medium confidence
Migrated RPC communication to Serde.FS and added client-side validation framework
The Shared layer now uses Serde.FS for client-server communication, replacing the previous Fable.Remoting implementation. This change introduces a new RPC interface (IServerApi) that drives code generation for both the server dispatch and the typed Fable client proxy. Additionally, a new validation framework (Validation.fs) has been added to the shared codebase, providing reusable rules (such as required, maxLen, and isTrue) and a ValidationResult type, which is now utilized by entities like CatInfo to enforce data integrity on the client side before submission.
Shared · high confidence
Test coverage
Added HTTP client scripts and basic test runner; Added UI tests for the Todo application.
Dependencies
Upgrade to .NET 10 and Fable 5 with updated F\# libraries
The template now targets .NET 10.0 and Fable 5.0.0, upgrading the F\# runtime to FSharp.Core 10.0.x across all projects. This includes updates to the build system (Nuke.Common 6.0.2, Fake 5.22.0), the desktop host (Photino.NET 4.0.16), and the web stack (Serde.FS 1.0.0-beta.4, Fable.Lit 1.4.2, Fable.LitRouter 1.0.0). The frontend dependencies have also been updated to use Lit 3.1.3, Shoelace 2.15.0, and Vite 4.5.3.
(dependencies) · 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 66 → 69 (+3.8)
- Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 76 → 76 (+0.0)
- Architecture 61 → 67 (+6.0)
- Maturity 82 → 82 (+0.0)
- Readiness 67 → 67 (+0.0)
- Security 68 → 74 (+6.5)
Resolved (3)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no usage examples (README.md)
API surface
- Unchanged — 2 HTTP endpoints
Architecture
- Unchanged — 0 containers · 3 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
JordanMarr/fable-lit-fullstack-template 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 a2d2e47dc8be4601fc91d237ccf57959e0b8a21e — 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.