<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AI Predictions Dev</title>
    <description>The latest articles on DEV Community by AI Predictions Dev (@aipredictions_dev).</description>
    <link>https://dev.to/aipredictions_dev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3848303%2F8503f0f9-4dcb-4185-aba1-b79b8d72714b.png</url>
      <title>DEV Community: AI Predictions Dev</title>
      <link>https://dev.to/aipredictions_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aipredictions_dev"/>
    <language>en</language>
    <item>
      <title>2 Years of .NET 8 in Production — Building AI Prediction Platforms with Blazor Server + ML.NET</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Sat, 28 Mar 2026 21:36:45 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/2-years-of-net-8-in-production-building-ai-prediction-platforms-with-blazor-server-mlnet-1hk4</link>
      <guid>https://dev.to/aipredictions_dev/2-years-of-net-8-in-production-building-ai-prediction-platforms-with-blazor-server-mlnet-1hk4</guid>
      <description>&lt;p&gt;I've been running two AI prediction platforms on .NET 8 for the past 2 years now, and wanted to share what the stack looks like and what I've learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Projects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1X2.TV&lt;/strong&gt; (&lt;a href="https://1x2.tv" rel="noopener noreferrer"&gt;https://1x2.tv&lt;/a&gt;) — football match predictions. The system analyzes 500+ matches daily across 100+ leagues. It predicts match results, both teams to score, over/under goals, correct score — basically all the major betting markets. Models retrain continuously on fresh match data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Stock Predictions&lt;/strong&gt; (&lt;a href="https://ai-stock-predictions.com" rel="noopener noreferrer"&gt;https://ai-stock-predictions.com&lt;/a&gt;) — stock market forecasts for S&amp;amp;P 500, NASDAQ, NYSE. Same ML infrastructure, different domain. Models process 50+ features per stock: price action, volume patterns, sector momentum, sentiment signals.&lt;/p&gt;

&lt;p&gt;Both support 30+ languages and have native iOS/Android/Windows apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Clean Architecture with Domain → Application → Infrastructure layers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Blazor Server with MudBlazor components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; ASP.NET Core, MediatR (CQRS pattern), FluentValidation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ML:&lt;/strong&gt; ML.NET gradient boosting models with daily retraining pipeline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; EF Core + MSSQL, Selenium/Playwright for data collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time:&lt;/strong&gt; SignalR for notifications and live updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth:&lt;/strong&gt; JWT with refresh tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Windows Server + IIS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i18n:&lt;/strong&gt; 30+ languages via server-side .resx resources + client JSON files&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Worked Well
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Blazor Server&lt;/strong&gt; turned out great for this kind of project. Fast development cycle, real server-side rendering, and MudBlazor gives you a solid component library out of the box. The SignalR connection model means you get real-time updates almost for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ML.NET&lt;/strong&gt; is honestly underrated. For gradient boosting classification and regression tasks it's solid, and the integration with the rest of the .NET ecosystem is seamless. Retraining daily is just a background service that runs on a schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EF Core&lt;/strong&gt; with the Specification pattern made complex queries manageable. Migrations just work. The combination with MSSQL has been rock-solid in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pain Points
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Blazor Server memory&lt;/strong&gt; — with many concurrent users, each holding a SignalR circuit, memory adds up fast. Had to be careful with component lifecycle and disposal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selenium/Playwright stability&lt;/strong&gt; — scraping is inherently fragile. Sites change layouts, add captchas, go down. Built a retry/fallback system but it still needs regular maintenance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EF Core complex LINQ&lt;/strong&gt; — some queries that looked simple in C# generated terrible SQL. Had to drop to raw SQL in a few hot paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Numbers
&lt;/h2&gt;

&lt;p&gt;The football platform processes around 500 matches per day across 100+ leagues. The stock platform covers all S&amp;amp;P 500 and NASDAQ 100 stocks daily. Both run on a single Windows Server instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Blazor Server, MudBlazor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;ASP.NET Core 8, MediatR, FluentValidation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ML&lt;/td&gt;
&lt;td&gt;ML.NET (gradient boosting)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;MSSQL + EF Core 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scraping&lt;/td&gt;
&lt;td&gt;Selenium, Playwright, AngleSharp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time&lt;/td&gt;
&lt;td&gt;SignalR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Windows Server, IIS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apps&lt;/td&gt;
&lt;td&gt;iOS, Android, Windows (native)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Happy to answer questions about any part of the stack or architecture decisions. What would you do differently?&lt;/p&gt;

</description>
      <category>dotnet</category>
    </item>
  </channel>
</rss>
