Skip to content
CAI
Software that uses CAICheck a score

NitroDevs/FShopOnWeb

57.9

Adequate · 3 October 2026

795

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a .NET 9 web application built in F\# that serves as a catalog browsing and shopping basket interface. It utilizes the Falco framework for HTTP routing and Entity Framework Core with SQLite for data persistence, allowing users to filter products, manage their basket, and access a login page. The application features a paginated product grid, basket management logic, and a styled UI based on Bootstrap 5 and SCSS.

Features

Add Montserrat font, site styles, and UI assets

The web application now uses the Montserrat typeface for its interface, with the font files (SVG, WOFF, TTF, EOT) and the corresponding CSS @font-face declarations added to the wwwroot directory. A new site stylesheet (site.min.css) defines the visual layout, including the header, footer, identity section, and form controls. Additionally, several SVG images (arrow-right, main\_banner\_text, refresh) are included to support the UI components.

src/Microsoft.eShopWeb.Web/wwwroot · high confidence

Add basket page with add and remove item functionality

A new basket page has been introduced, allowing users to view their current basket contents, add items to the basket, and remove specific items. The implementation includes a domain layer for managing basket state (calculating totals, mapping catalog items, and handling database persistence via EF Core) and a UI component that renders the basket items with product details, prices, and a remove action. HTTP handlers are provided to process POST requests for adding items (by ID) and removing items, redirecting the user back to the basket page with status indicators.

src/Microsoft.eShopWeb.Web/Basket · high confidence

Add login page scaffolding

The application now includes a basic login page at the Account/Login route. This page presents a form for users to enter their email and password, with options to remember the session, recover a forgotten password, or register a new account. For demonstration purposes, the page also displays sample credentials ([e-mail redacted] or [e-mail redacted] with password Pass@word1) to allow immediate access without prior registration.

src/Microsoft.eShopWeb.Web/Account · high confidence

Initial F\# web application with SQLite persistence and Falco routing

The web layer is now implemented in F\# using the Falco framework for HTTP routing and Entity Framework Core with SQLite for data persistence. This change introduces domain models for catalog items and baskets, a database context with seeding logic for initial catalog data, and API endpoints for browsing the catalog and managing the shopping basket (including adding and removing items). The application also includes a login page scaffold and a build pipeline configured with PostCSS for SCSS processing and CSS purging.

src/Microsoft.eShopWeb.Web · high confidence

Initial project scaffolding and configuration

The repository has been initialized with the FShopOnWeb solution, establishing the foundational build and development environment. This includes a .NET 9.0 solution structure with F\# support, a global build configuration (Directory.Build.props) enforcing nullable reference types and documentation generation, and a NuGet package lock file pinning dependencies such as FSharp.Core 9.0.202, xUnit 2.9.2, and the .NET Test SDK 17.12.0. Development tooling is configured via .editorconfig for .NET coding standards, Prettier for formatting, and markdownlint, while the .gitignore is updated to exclude SQLite database files and the wwwroot CSS output. The README has been expanded with detailed instructions for running the application via VS Code tasks and interacting with the seeded SQLite database.

(repo-wide) · high confidence

Introduces F\# layout components and SCSS styles for the web application

This change adds new layout structures and styling for the web interface. Specifically, it introduces \AccountLayout\ and \PublicLayout\ modules in F\# to define the HTML structure for authenticated and public pages, including a navigation bar that displays a basket item count and a login link. It also adds SCSS partials (\\_basket.scss\, \\_header.scss\, \\_identity.scss\, \\_index.scss\) to style the header, basket status badge, user identity section, and footer, ensuring a consistent visual theme across the application.

src/Microsoft.eShopWeb.Web/Layout · high confidence

New Home page with catalog browsing, filtering, and paging

The Home page now displays a paginated grid of catalog items, allowing users to filter products by brand and type via dropdowns and add items to the basket using a dedicated button on each product card. This change introduces the \CatalogFilters\, \CatalogGrid\, and \CatalogPager\ components along with their associated SCSS styles, replacing the previous static or non-existent home view with a dynamic, database-backed product listing interface.

src/Microsoft.eShopWeb.Web/Home · high confidence

Behavioural changes

Upgrade to Bootstrap 5 and introduce SCSS-based styling

The web application's styling system has been migrated to use Bootstrap 5, managed via SCSS and PostCSS. This change introduces a new global stylesheet that imports Bootstrap components and custom layout modules for the Home and Basket sections. It also establishes a consistent visual identity by setting the Montserrat font family as the default for the entire site and defining global styles for form inputs, alerts, and links.

src/Microsoft.eShopWeb.Web/src · high confidence

Test coverage

Added unit tests for basket item removal and central package management verification

Added a new test project containing unit tests for the \removeFromBasket\ functionality, verifying that items are correctly removed from the database, that non-existent items return None, and that only the specified item is removed when multiple items are present. Additionally, added tests to verify that Central Package Management is properly configured by checking for the existence of \Directory.Packages.props\ and ensuring project files do not contain inline version attributes.

tests · high confidence

Dependencies

Establish central package management and initial dependency set

The project now uses Central Package Management (via Directory.Packages.props) to define and version dependencies for both the .NET and Node.js layers. .NET packages include EntityFrameworkCore.FSharp (6.0.7), Falco (4.0.6), Microsoft.EntityFrameworkCore.Sqlite (8.0.18), and test tools (xUnit 2.9.2, Microsoft.NET.Test.Sdk 17.12.0, coverlet.collector 6.0.2, Microsoft.EntityFrameworkCore.InMemory 9.0.0). The web layer targets net9.0 and uses Bootstrap 5.3.2 with a PostCSS/Sass toolchain (sass 1.69.5, postcss 8.4.31, autoprefixer 10.4.16, cssnano 6.0.1, purgecss 5.0.0, postcss-cli 10.1.0, env-cmd 10.1.0) for CSS processing.

(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 57 → 58 (+1.0)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 99 → 99 (+0.0)
  • Architecture 65 → 76 (+10.5)
  • Maturity 53 → 55 (+2.1)
  • Readiness 50 → 52 (+2.6)
  • Security 75 → 75 (+0.0)
  • Accessibility 60 (new)

Resolved (2)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

NitroDevs/FShopOnWeb 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 ee218442177f80ec907a964bfe3f5568906db5c1 — 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.