desenvolvedor-io/dev-store
41.1
Weak · 20 September 2026
7.4k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a .NET 9-based e-commerce platform structured as a microservices architecture, featuring distinct services for identity, catalog, customers, shopping cart, billing, and orders. It provides a web frontend and a checkout BFF that orchestrate interactions between these backend services, handling user authentication, product browsing, cart management, and payment processing. The infrastructure supports containerized deployment with Nginx, resilient HTTP clients, and multi-database compatibility, while a dedicated status page monitors overall system health.
Features
Add OrderDto model for checkout payment details
A new OrderDto class has been introduced in the BFF Checkout models to capture order metadata (code, status, date, amount, discount, voucher) and payment information. The model includes validation attributes for credit card details, enforcing required fields for the card number, holder name, and security code, while also validating the expiration date format (MM/YY) and ensuring the card is not expired.
src/api-gateways/DevStore.Bff.Checkout/Models · high confidence
Add default MVC static assets and Font Awesome icons
The application now includes the default ASP.NET Core MVC static files, specifically \site.css\ (providing base styles, sticky footer, and contrast fixes), \responsive.css\ (handling layout adjustments for tablets and mobile devices), and \ui.css\ (importing the Inter font and defining UI component classes). Additionally, Font Awesome Free 5.8.2 icon styles are added to \wwwroot/fonts/fontawesome/css/\, enabling the use of icon classes throughout the UI.
src/web/DevStore.WebApp.MVC/wwwroot · high confidence
Add order and transaction view models for checkout flow
The application now includes dedicated view models to structure data for order display and payment processing. OrderViewModel exposes order details including code, status, date, amount, discount, voucher usage, and associated items and address. TransactionViewModel captures payment information such as card number, holder name, expiration date, and security code, with built-in validation attributes to ensure required fields are present and the expiration date follows the MM/YY format.
src/web/DevStore.WebApp.MVC/Models · high confidence
Added DatabaseNotFoundException exception class
A new DatabaseNotFoundException class has been introduced in the DevStore.Core.Exceptions namespace. This exception inherits from the standard Exception type and provides constructors for initializing the exception with or without a message, and with or without an inner exception, allowing application code to explicitly signal when a requested database cannot be found.
src/building-blocks/DevStore.Core/Exceptions · high confidence
Added database seed data helpers for development environments
The Catalog API now includes a \DbMigrationHelpers\ utility that automatically ensures the database schema is created and populates it with initial sample products (such as T-shirts and mugs) when running in Development or Docker environments. This simplifies local setup and testing by providing immediate, realistic data without requiring manual database initialization.
src/services/DevStore.Catalog.API/Configuration · high confidence
Added gRPC service for retrieving shopping cart details
A new gRPC service implementation (ShoppingCartGrpcService) has been introduced to handle shopping cart retrieval requests. This service exposes a GetShoppingCart method that authenticates the user, fetches the current cart data from the database (including items and voucher details), and maps the result to a protocol buffer response.
src/services/DevStore.ShoppingCart.API/Services/gRPC · high confidence
Added health check infrastructure and database connection resilience
The application now includes built-in health monitoring and improved database connectivity handling. Generic health checks are automatically registered for the API itself and the configured database provider (SQL Server, MySQL, PostgreSQL, or SQLite), exposing results at /healthz and /healthz-infra endpoints. A new DbHealthChecker utility provides retry logic with exponential backoff to handle transient database connection failures during startup, and a new health check for RabbitMQ messaging infrastructure has been added to monitor message queue availability.
src/building-blocks/DevStore.WebAPI.Core/Configuration · high confidence
Automated database initialization and seed data for development environments
A new DbMigrationHelpers component has been added to the API configuration layer to manage database setup. In development and Docker environments, this helper automatically ensures the database schema is created and seeds initial voucher data (specifically '30-OFF' and '50-OFF' discount codes) before the application starts, removing the need for manual database preparation during local development or containerized deployment.
src/services/DevStore.Orders.API/Configuration · high confidence
Automatic database initialization in development and Docker environments
The Identity API now includes a helper to ensure the database schema is created and seed data is applied at startup. This process is automatically triggered in Development and Docker environments, ensuring the application starts with a valid database state without manual intervention, while remaining disabled in other environments to prevent accidental schema changes in production.
src/services/DevStore.Identity.API/Configuration · high confidence
Automatic shopping cart cleanup after order completion
A new integration handler has been added to automatically remove a customer's shopping cart from the database once their order is finalized. This ensures that completed orders do not leave behind stale cart data, keeping the user's cart state accurate for future shopping sessions.
src/services/DevStore.ShoppingCart.API/Services · high confidence
Initial Docker and configuration setup for the MVC web app
The DevStore.WebApp.MVC project is initialized with a multi-stage Dockerfile targeting .NET 9.0, enabling containerized builds and runtime. Configuration files are added for Development, Docker, and Production environments, establishing Serilog logging with Seq sinks and defining service URLs for Auth, Catalog, Customer, and Checkout BFF APIs. A bundle configuration is also included to minify payment JavaScript assets.
src/web/DevStore.WebApp.MVC · high confidence
Initial MVC view structure and UI components
The application now includes the core MVC view hierarchy, starting with a shared layout (\_Layout.cshtml) that provides the main page structure, navigation, search bar, login partial, and footer. This layout integrates Bootstrap and FontAwesome for styling and icons, along with specific favicon assets. The entry also adds a home page (Index.cshtml) and a privacy policy page, a shared view start configuration, and validation scripts. Additionally, it introduces reusable view components for displaying a shopping cart icon with a badge count and a pagination control for catalog listings.
src/web/DevStore.WebApp.MVC/Views · high confidence
Initial configuration setup for the ShoppingCart API
This change introduces the foundational configuration files for the ShoppingCart API service. It establishes dependency injection registrations for the shopping cart context and user services, configures gRPC support with CORS policies, and sets up database seed data logic that ensures the database is created in development or Docker environments. Additionally, it integrates Swagger/OpenAPI documentation for API discovery and configures the message bus infrastructure.
src/services/DevStore.ShoppingCart.API/Configuration · high confidence
Initial database context and gRPC contract for the shopping cart service
The shopping cart service now includes its foundational data access layer and communication contract. A new \ShoppingCartContext\ (Entity Framework Core) defines the database schema for \CartItem\ and \CustomerShoppingCart\ entities, configuring specific column types (varchar), indexes, and cascade delete behaviors. Additionally, a gRPC protocol buffer (\shoppingcart.proto\) is introduced, defining the \ShoppingCartOrders\ service with a \GetShoppingCart\ RPC and associated message structures for cart items and vouchers.
src/services/DevStore.ShoppingCart.API/Data · high confidence
Initial database schema and domain models for the shopping cart service
The shopping cart API now includes the foundational data layer, introducing the \CartItem\, \CustomerShoppingCart\, and \Voucher\ domain models along with the corresponding Entity Framework Core migration (\20210908035300\_Initial\). This change establishes the database structure for storing cart items, customer associations, and voucher discounts (supporting both percentage and fixed-value types), enabling the core shopping cart functionality to persist state.
src/services/DevStore.ShoppingCart.API/Model · high confidence
Initial database schema for Identity API
The Identity API now includes the initial Entity Framework Core migration files, establishing the database schema for user and role management. This migration creates the standard ASP.NET Identity tables (AspNetRoles, AspNetUsers, AspNetUserClaims, AspNetUserLogins, AspNetUserRoles, AspNetUserTokens, AspNetRoleClaims) and a new SecurityKeys table for managing cryptographic keys, along with the corresponding model snapshot for the current state.
src/services/DevStore.Identity.API/Migrations · high confidence
Initial database schema for Orders service
The Orders service now includes its initial Entity Framework Core migration, establishing the foundational database structure. This migration creates the Orders, OrderItems, and Vouchers tables, along with a database sequence for generating order codes. It defines the relationships between orders and vouchers, and embeds address details directly within the Orders table, providing the necessary data persistence layer for the service.
src/services/DevStore.Orders.Infra/Migrations · high confidence
Initial project configuration and test visibility setup
The application now includes standard ASP.NET Core project configuration files. A launch profile named 'SelfHosting - Dev' is configured to run the app on HTTPS port 5401 and HTTP port 5400, with Razor runtime compilation enabled for the Development environment. Additionally, the assembly is configured to expose internal members to the 'DevStore.Tests' assembly, facilitating unit and integration testing.
src/web/DevStore.WebApp.MVC/Properties · high confidence
Initial release of Billing and Orders APIs with .NET 9 and EF Core migrations
This change introduces the initial versions of the Billing and Orders API services. The Billing API now includes database migration helpers and initial EF Core migrations for the Payment and Transaction entities, ensuring the database schema is created and seeded on startup. Both services are configured to run on .NET 9 via new Dockerfiles and include environment-specific settings (Development, Docker, Production) for Serilog logging, database connections, and JWT authentication.
src/services/DevStore.Billing.API · high confidence
Initial release of the Customers API service
This change introduces the new Customers API service, establishing the foundational infrastructure for managing customer data. It includes the initial Entity Framework Core database migrations to create the Customer and Address tables, a Dockerfile configured to build the application using the .NET 9.0 SDK, and environment-specific configuration files (Development, Docker, Production) that set up Serilog logging with Seq sinks and define connection strings for SQL Server. The service entry point (Program.cs) is configured to register core dependencies, including JWT authentication, Swagger, and MediatR, and automatically ensures the database schema is created and seeded during startup in development or Docker environments.
src/api-gateways/DevStore.Bff.Checkout, src/services/DevStore.Catalog.API, src/services/DevStore.Customers.API · high confidence
Initial release of the Identity API service with .NET 9 and Docker support
This change introduces the DevStore Identity API service, providing the core identity management capabilities for the platform. The service is built on .NET 9.0 and includes a Dockerfile for containerized deployment, exposing ports 80 and 443. It features centralized logging via Serilog with sinks for Console and Seq, configurable connection strings for multiple database providers (SQL Server, PostgreSQL, MySQL, SQLite), and integration with RabbitMQ for message bus communication. The API also includes Swagger configuration for documentation and seed data initialization.
src/services/DevStore.Identity.API · high confidence
Introduce DevStore Status Page for centralized health monitoring
A new status page application has been added to provide a centralized view of system health. It integrates HealthChecks UI to monitor endpoints for services such as the Frontend Web, Shopping Cart API, Identity API, and others, with storage support for SQL Server, MySQL, PostgreSQL, and SQLite. The service is configured for .NET 9.0 via a new Dockerfile and includes environment-specific settings for development, Docker, and production deployments.
src/web/DevStore.WebApp.Status · high confidence
Introduction of core domain base classes and value objects
The \DevStore.Core.DomainObjects\ namespace now includes foundational types for the application's domain layer. This adds an abstract \Entity\ base class that manages unique identifiers and a collection of domain events, an \IAggregateRoot\ marker interface, a \DomainException\ for error handling, and an \Email\ value object that enforces format validation and length constraints.
src/building-blocks/DevStore.Core/DomainObjects · high confidence
New checkout service for shopping cart and order management
Added a new \CheckoutBffService\ that acts as a client for the checkout backend, enabling users to manage their shopping cart (add, update, remove items, apply vouchers) and complete orders. This service exposes methods to retrieve cart details, finalize transactions, and fetch recent order history, effectively bridging the MVC application with the checkout microservices.
src/web/DevStore.WebApp.MVC/Services · high confidence
Nginx configuration for main app and status page with SSL support
The Nginx configuration now includes a dedicated setup for the main application and a separate status page service. The main app is configured to redirect HTTP to HTTPS and serves content over TLS 1.2/1.3, proxying to the web-mvc service. Additionally, the status page is exposed on both HTTP (port 8080) and HTTPS (port 4443), proxying to the web-status service. Development SSL certificates and keys for localhost have been added to support these secure connections.
docker/nginx · high confidence
Support for multiple database providers via configuration
The application now supports configuring the database provider (SQL Server, MySQL, PostgreSQL, or SQLite) at runtime via the 'AppSettings:DatabaseType' configuration key. New classes in the DatabaseFlavor namespace handle provider selection, connection string detection, and Entity Framework Core context registration, allowing the system to dynamically switch between supported database engines without code changes.
src/building-blocks/DevStore.WebAPI.Core/DatabaseFlavor · high confidence
Behavioural changes
10 commits (1 fix) modifying src/api-gateways/DevStore.Bff.Checkout/Controllers
A change to existing behaviour in src/api-gateways/DevStore.Bff.Checkout/Controllers — 10 commits (1 fix), 2 files.
(repo-wide) · medium confidence · unverified
4 commits (0 fixes) modifying src/services/DevStore.Catalog.API/Controllers, src/services/DevStore.Catalog.API/Models
A change to existing behaviour in src/services/DevStore.Catalog.API/Controllers, src/services/DevStore.Catalog.API/Models — 4 commits, 4 files.
(repo-wide) · medium confidence · unverified
Configures resilient HTTP client services with circuit breaking and retry policies
The application now registers HttpClient-based services (AuthService, CatalogService, CheckoutBffService, and CustomerService) with automatic retry and circuit-breaker resilience. These clients will retry transient failures up to three times with increasing delays (1, 5, and 10 seconds) and open the circuit after five consecutive errors for 30 seconds, improving stability when communicating with backend APIs.
src/web/DevStore.WebApp.MVC/Configuration · high confidence
Migrate to ASP.NET 9 and modernize .NET project structure
The application has been upgraded to target ASP.NET 9, with the SDK version pinned to 9.0.302 in global.json. The solution structure has been updated to use the new .NET 9 .slnx format, replacing the legacy .sln file, and the repository now includes a .dockerignore file to optimize container builds by excluding unnecessary files like build artifacts and IDE settings.
(repo-wide) · high confidence
Shopping Cart API restructured as .NET 9 Minimal API with Docker support
The ShoppingCart service has been rewritten to use the .NET 9 Minimal API pattern, replacing the previous controller-based architecture with direct endpoint mappings for shopping cart operations (get, add, update, remove items, and apply vouchers). The service now runs on the .NET 9.0 runtime via a new Dockerfile, enabling containerized deployment. Configuration has been standardized across development, Docker, and production environments using Serilog for structured logging with Seq integration, and the API now supports multiple database providers (SQL Server, PostgreSQL, MySQL, SQLite) via configurable connection strings.
src/services/DevStore.ShoppingCart.API · high confidence
Test coverage
Added integration test infrastructure and initial Catalog API tests
Added a new test suite for the Catalog API, including an \IntegrationTest\ base class that manages the \WebApplicationFactory\ lifecycle and provides helper methods for executing database operations in scope. This infrastructure supports new integration tests for the Catalog API, specifically verifying the \GET /products\ endpoint returns the expected list of products.
src/tests · high confidence
Dependencies
Upgrade to .NET 9 and update core dependencies
The project has been upgraded to target .NET 9.0 across all components, including the core building blocks, billing service, shopping cart API, status web app, and test suite. This migration brings in updated versions of key libraries such as Microsoft.Extensions packages (9.0.7), FluentValidation (12.0.0), MediatR (13.0.0), and gRPC tools (2.71.0/2.72.0), ensuring compatibility with the new runtime and leveraging the latest features and security patches available in these dependencies.
(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 43 → 41 (-1.5)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 55 → 49 (-5.3)
- Architecture 82 → 82 (+0.0)
- Maturity 54 → 54 (+0.0)
- Readiness 33 → 36 (+3.5)
- Security 54 → 40 (-14.1)
- Domain Modelling 55 → 52 (-3.2)
- Event-Driven 85 → 85 (+0.0)
- Accessibility 44 → 43 (-1.4)
Resolved (9)
- Address data is modeled as a ViewModel in the WebApp but as a Command in the Customers API. While different layers may have different models, the naming 'AddressViewModel' vs 'AddAddressCommand' suggests a lack of shared contract or consistent naming for address data transfer.
- Bounded contexts not declared
- Build did not complete in the analyzer
- No exposed public API
- Paging/Listing functionality is represented by 'IPagedList' in the WebApp and 'PagedResult' in the Catalog API. These are likely equivalent concepts with different names.
- The README has no Getting Started or Build instructions for running the project locally.
- The concept of a shopping cart is represented by a ViewModel in the WebApp and a DTO in the Bff/Checkout layer. This inconsistency in suffix (ViewModel vs Dto) across layers indicates a lack of a unified cart representation.
- The concept of a shopping cart item is represented by two different types in different layers: a ViewModel in the WebApp and a DTO in the Bff/Checkout layer.
- dormant codebase — no living knowledge left to concentrate
New (131)
- CommentedOutCode (src/services/DevStore.Customers.API/Data/CustomerContext.cs)
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (src/api-gateways/DevStore.Bff.Checkout/Models/OrderDto.cs)
- Duplicated block (11 lines × 2) (src/services/DevStore.Billing.API/Data/BillingContext.cs)
- Duplicated block (11 lines × 2) (src/services/DevStore.Customers.API/Data/CustomerContext.cs)
- Duplicated block (20 lines × 2) (src/api-gateways/DevStore.Bff.Checkout/Models/OrderDto.cs)
- Duplicated block (31 lines × 5) (src/services/DevStore.Catalog.API/Configuration/DbMigrationHelpers.cs)
- Duplicated block (5 lines × 2) (src/services/DevStore.ShoppingCart.API/Services/gRPC/ShoppingCartGrpcService.cs)
- Duplicated block (7 lines × 2) (src/services/DevStore.Catalog.API/Models/Product.cs)
- Duplicated block (7 lines × 3) (src/services/DevStore.Billing.API/Data/BillingContext.cs)
- Duplicated block (7 lines × 4) (src/api-gateways/DevStore.Bff.Checkout/Models/AddressDto.cs)
- Duplicated block (8 lines × 3) (src/api-gateways/DevStore.Bff.Checkout/Models/AddressDto.cs)
- Duplicated block (9 lines × 2) (src/api-gateways/DevStore.Bff.Checkout/Models/AddressDto.cs)
- Duplicated block (9 lines × 2) (src/services/DevStore.Identity.API/Models/UserViewModels.cs)
- End-of-life runtime: .NET net9.0
- High IaC: DS-0002 (src/api-gateways/DevStore.Bff.Checkout/Dockerfile)
- High IaC: DS-0002 (src/services/DevStore.Billing.API/Dockerfile)
- High IaC: DS-0002 (src/services/DevStore.Catalog.API/Dockerfile)
- …and 111 more
API surface
- Unchanged — 28 HTTP endpoints
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
desenvolvedor-io/dev-store 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 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 8e88a0c4b836d7f43f2c11bb47bab5650ce74763 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.