Skip to content

Commit 1feeb0d

Browse files
committed
Upgrade from .NET 9 to .NET 10 and fix transparent PNG lightbox
- Update TargetFramework to net10.0 in all 5 .csproj files - Update NuGet packages to latest .NET 10 compatible versions - Update Dockerfile and CI workflow to .NET 10 SDK/runtime - Add white background to product lightbox for transparent PNGs - Fix ProductDetailDto test constructor to use object initializer
1 parent f66c133 commit 1feeb0d

10 files changed

Lines changed: 33 additions & 25 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
- uses: actions/checkout@v4
1414
- uses: actions/setup-dotnet@v4
1515
with:
16-
dotnet-version: '9.0.x'
16+
dotnet-version: '10.0.x'
1717
- name: Restore
1818
run: dotnet restore
1919
- name: Build

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# FitSpec — Vehicle Parts Fitment Finder
22

3-
Full-stack automotive parts fitment application built with **Angular 19**, **ASP.NET Core 9**, **SQL Server**, and **MongoDB**. Provides verified compatibility data for aftermarket parts, accessories, and modifications across 150+ products and 30 brands.
3+
Full-stack automotive parts fitment application built with **Angular 19**, **ASP.NET Core 10**, **SQL Server**, and **MongoDB**. Provides verified compatibility data for aftermarket parts, accessories, and modifications across 150+ products and 30 brands.
44

55
## Tech Stack
66

77
| Layer | Technology |
88
|-------|-----------|
99
| Frontend | Angular 19 (standalone components, signals, Material 3) |
10-
| Backend | ASP.NET Core 9, Dapper + EF Core, API versioning |
10+
| Backend | ASP.NET Core 10, Dapper + EF Core, API versioning |
1111
| SQL Database | SQL Server 2022 (vehicles, products, fitment mappings, orders) |
1212
| Document Store | MongoDB 7 (reviews, product catalog, Q&A) |
1313
| ML | ML.NET (product recommendations) |
@@ -110,7 +110,7 @@ fitspec/
110110
├── infra/
111111
│ └── seed/ # SQL + MongoDB seed scripts
112112
├── src/
113-
│ ├── FitSpec.API/ # ASP.NET Core 9 API
113+
│ ├── FitSpec.API/ # ASP.NET Core 10 API
114114
│ │ ├── Controllers/ # REST endpoints (versioned)
115115
│ │ ├── Hubs/ # SignalR hubs
116116
│ │ ├── Middleware/ # Exception handling

src/FitSpec.API/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
1+
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
22
WORKDIR /app
33
EXPOSE 5062
44

5-
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
5+
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
66
WORKDIR /src
77
COPY ["src/FitSpec.API/FitSpec.API.csproj", "src/FitSpec.API/"]
88
COPY ["src/FitSpec.Core/FitSpec.Core.csproj", "src/FitSpec.Core/"]

src/FitSpec.API/FitSpec.API.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
</PropertyGroup>
88

99
<ItemGroup>
1010
<PackageReference Include="Asp.Versioning.Mvc" Version="8.1.1" />
1111
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.1" />
12-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.13" />
13-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.*">
12+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.3" />
13+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.3">
1414
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1515
<PrivateAssets>all</PrivateAssets>
1616
</PackageReference>
17-
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.9.0" />
17+
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.4" />
1818
</ItemGroup>
1919

2020
<ItemGroup>

src/FitSpec.Core/FitSpec.Core.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
</PropertyGroup>

src/FitSpec.Data/FitSpec.Data.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
</ItemGroup>
66

77
<ItemGroup>
8-
<PackageReference Include="Dapper" Version="2.1.66" />
9-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.*">
8+
<PackageReference Include="Dapper" Version="2.1.72" />
9+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.3">
1010
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1111
<PrivateAssets>all</PrivateAssets>
1212
</PackageReference>
13-
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.*" />
13+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.3" />
1414
<PackageReference Include="MongoDB.Driver" Version="3.7.0" />
1515
</ItemGroup>
1616

1717
<PropertyGroup>
18-
<TargetFramework>net9.0</TargetFramework>
18+
<TargetFramework>net10.0</TargetFramework>
1919
<ImplicitUsings>enable</ImplicitUsings>
2020
<Nullable>enable</Nullable>
2121
</PropertyGroup>

src/FitSpec.ML/FitSpec.ML.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
</ItemGroup>
66

77
<ItemGroup>
8-
<PackageReference Include="Dapper" Version="2.1.66" />
8+
<PackageReference Include="Dapper" Version="2.1.72" />
99
<PackageReference Include="Microsoft.ML" Version="5.0.0" />
1010
<PackageReference Include="Microsoft.ML.Recommender" Version="0.23.0" />
1111
</ItemGroup>
1212

1313
<PropertyGroup>
14-
<TargetFramework>net9.0</TargetFramework>
14+
<TargetFramework>net10.0</TargetFramework>
1515
<ImplicitUsings>enable</ImplicitUsings>
1616
<Nullable>enable</Nullable>
1717
</PropertyGroup>

src/fitspec-ui/src/app/features/product-detail/product-detail.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ import { PriceAlertComponent } from '../price-alert/price-alert.component';
298298
.lightbox-image {
299299
max-width: 90vw; max-height: 90vh;
300300
object-fit: contain; border-radius: 8px;
301+
background: white;
302+
padding: 16px;
301303
animation: lightboxScaleIn 0.25s ease-out;
302304
}
303305
@keyframes lightboxScaleIn {

tests/FitSpec.Tests/Controllers/ProductsControllerTests.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,14 @@ public ProductsControllerTests()
2020
[Fact]
2121
public async Task GetProduct_Found_ShouldReturnOk()
2222
{
23-
var product = new ProductDetailDto(1, "TOW-CURT-001", "CURT Class III Hitch", "Fits most trucks",
24-
"CURT", 249.99m, null, 5, "Trailer Hitches", true, 45.5m, DateTime.UtcNow, null);
23+
var product = new ProductDetailDto
24+
{
25+
Id = 1, SKU = "TOW-CURT-001", Name = "CURT Class III Hitch",
26+
Description = "Fits most trucks", Brand = "CURT", Price = 249.99m,
27+
ImageUrl = null, CategoryId = 5, CategoryName = "Trailer Hitches",
28+
IsVerified = true, Weight = 45.5m, CreatedAt = DateTime.UtcNow,
29+
ExtendedSpecs = null
30+
};
2531
_productRepo.GetProductByIdAsync(1).Returns(product);
2632

2733
var result = await _controller.GetProduct(1);

tests/FitSpec.Tests/FitSpec.Tests.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<IsPackable>false</IsPackable>
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="coverlet.collector" Version="6.0.2" />
12-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
13-
<PackageReference Include="xunit" Version="2.9.2" />
14-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
15-
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.*" />
11+
<PackageReference Include="coverlet.collector" Version="8.0.0" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
13+
<PackageReference Include="xunit" Version="2.9.3" />
14+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
15+
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.3" />
1616
<PackageReference Include="NSubstitute" Version="5.*" />
1717
<PackageReference Include="FluentAssertions" Version="8.*" />
1818
</ItemGroup>

0 commit comments

Comments
 (0)