BenjaminBest/StockTradingAnalysisWebsite
34.9
Weak · 21 September 2026
28.9k
lines of production code
JavaScript
with C#
4
measurements over time
What this system is
Features
Added domain events for aggregate saving and event replay completion
The EventSourcing module introduces two new domain events: AggregateSavedEvent, which signals when an aggregate has been saved, and ReplayFinishedEvent, which indicates that the event store initialization has completed its replay process. These events allow the system to react to specific lifecycle stages within the event sourcing pipeline.
StockTradingAnalysis.EventSourcing · medium confidence
Initial release of the Stock Trading Analysis application
The application is now available, providing a platform for managing stock transactions and maintaining a trading diary. Users can track open positions, view security details with transaction history and latest quotes, and utilize a dashboard with key performance indicators. The system supports CQRS and Event Sourcing patterns, integrates with Hangfire for scheduled jobs, and includes a test data generation feature for administration.
(repo-wide) · high confidence
Introduces CQRS command and query dispatchers with performance measurement
The application now uses a CommandDispatcher and QueryDispatcher to route commands and queries to their respective handlers via dependency injection. This change introduces a structured approach to handling commands and queries, improving the separation of concerns. Additionally, the system now tracks performance metrics for these operations, allowing for better monitoring and optimization of the application's behavior.
StockTradingAnalysisWebsite · high confidence
New domain model for calculations and transactions
The domain layer now includes a new event-sourcing architecture for tracking calculations and transactions. This introduces aggregate roots for managing calculation states (including properties like name, WKN, multiplier, strike price, and order costs) and transaction states (covering buying, selling, dividends, and splits). The changes ensure that all relevant financial data, such as position size and order costs, are correctly captured and persisted through domain events.
StockTradingAnalysis.Domain · high confidence
Behavioural changes
Added DomainEvent base class for event serialization
A new DomainEvent class has been introduced in the StockTradingAnalysis.Interfaces project to serve as a base for domain events. This class includes properties for timestamp, aggregate ID and type, event ID, name, and version, and is designed to support JSON serialization via a protected parameterless constructor. This change ensures that domain events are correctly serialized, addressing previous issues with event data handling.
StockTradingAnalysis.Interfaces · medium confidence
Fixes
Updated SignalR client library
The SignalR client library (signalr.js) in the wwwroot directory has been updated to a new version, introducing a complete rewrite of the browser build. This update includes a newer implementation of the HubConnection, DefaultHttpClient, and related protocol classes, which may alter how real-time connections are established and maintained in the application.
StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot · high confidence
Dependencies
Migrated to ASP.NET Core and modernized project structure
The project has been migrated from a legacy .NET Framework structure to ASP.NET Core, updating all .csproj files to use the modern SDK-style format with netcoreapp2.2 and netstandard2.0 target frameworks. This includes adding dependencies for Hangfire, Application Insights, ReactJS.NET, and AutoMapper, while consolidating test projects with MSTest and Moq.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 37 → 35 (-2.4)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 80 → 67 (-13.1)
- Architecture 77 → 77 (+0.0)
- Maturity 47 → 51 (+4.8)
- Readiness 33 → 33 (-0.4)
- Security 29 → 36 (+6.4)
- Domain Modelling 100 → 69 (-31.0)
- Accessibility 40 → 27 (-13.3)
Resolved (32)
- Bounded contexts not declared
- Duplicated block (10 lines × 2) (StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionPerformanceService.cs)
- Duplicated block (15 lines × 2) (StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs)
- Duplicated block (15 lines × 2) (StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs)
- Duplicated block (15 lines × 2) (StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs)
- Duplicated block (18 lines × 2) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/QuotationController.cs)
- Duplicated block (8 lines × 2) (StockTradingAnalysisWebsite/StockTradingAnalysis.Services.External/Providers/QuotationDownloadBoerseDuesseldorf.cs)
- High CVE: Microsoft.NETCore.App 2.2.0
- High CVE: Microsoft.NETCore.App 2.2.0
- High CVE: System.Security.Cryptography.Xml 4.4.0
- High CVE: System.Security.Cryptography.Xml 4.4.0
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- LLM evaluation failed
- Medium CVE: Microsoft.AspNetCore.App 2.2.0
- …and 12 more
New (359)
- (anonymous)::(anonymous)::translate (cognitive 23) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 28) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 28) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 32) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 34) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 56) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 56) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cognitive 61) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 23) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 27) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 27) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 27) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 34) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 39) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 39) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::(anonymous)::translate (cyclomatic 42) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::addTimeToArrayFromToken (cognitive 22) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::addTimeToArrayFromToken (cyclomatic 59) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::checkOverflow (cognitive 26) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- (anonymous)::checkOverflow (cyclomatic 22) (StockTradingAnalysisWebsite/StockTradingAnalysis.Web/wwwroot/js/moment-with-locales.js)
- …and 339 more
API surface
- Unchanged — 2 HTTP endpoints
Architecture
- Unchanged — 1 containers · 3 contexts · 3 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
BenjaminBest/StockTradingAnalysisWebsite 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 21 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 0ebdc9f9a9890a4a50c44e096adbde6ed5167660 — 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.