NET migartion #9

Merged
bpeskiewicz merged 23 commits from feature/cs into main 2026-04-21 20:37:20 +00:00
Owner
No description provided.
Replaces the previous Node.js-based structure with a full .NET 9 Blazor
solution including Razor components, built-in authentication, and updated
project/tooling configuration. Removes legacy middleware and rate limiting
in favor of framework-integrated patterns.
Update CI pipelines, README, .env.example, and project settings to
reflect the migration from Node.js to ASP.NET Core 9 / Blazor.
Modernize middleware, services, and test classes with C# primary
constructors and Microsoft.Extensions.Logging source generators for
high-performance logging. Suppress CA1515 for shared model types and
CA1031 for the global exception handler where catching all exceptions
is intentional.
Remove IAuthService, IFileService, and IDownloadTokenService interfaces
in favor of direct concrete type injection. Add InternalControllerProvider
to support internal controller discovery. Move analyzer settings to
Directory.Build.props and add .editorconfig files for consistent formatting.
refactor: apply analyzer fixes to AppException and test files
Some checks failed
Run Tests / test (pull_request) Failing after 1m21s
Run Tests / lint (pull_request) Failing after 1m22s
7dd665f8a5
Adopt primary constructor for AppException with CA1032 suppression,
add ConfigureAwait(true) to async test calls, seal RateLimitingTests,
and register tests/.editorconfig in solution.
refactor: extract configuration from Program.cs to AppConfiguration class
Some checks failed
Run Tests / lint (pull_request) Failing after 1m12s
Run Tests / test (pull_request) Failing after 1m12s
ec3bc772b1
- Move configuration loading and database setup from Program.cs
- Create AppConfiguration class to centralize configuration logic
- Simplify Program.cs by delegating configuration management
- Maintain E2E test factory changes
fix: resolve exitcode 127 in Docker test workflow
Some checks failed
Run Tests / lint (pull_request) Successful in 1m8s
Run Tests / test (pull_request) Failing after 1m8s
6879f1133b
Replace pwsh with dotnet exec for Playwright browser installation
to ensure compatibility with Docker containers
refactor: fix Playwright.NET installation in test workflow
Some checks failed
Run Tests / test (pull_request) Failing after 1m10s
Run Tests / lint (pull_request) Successful in 1m11s
d5307d5753
- Update to use official Playwright CLI instead of .NET SDK equivalent
- Install Playwright browsers using playwright install command
- Add Playwright.NET tool installation step before browser installation
fix: use full path for playwright CLI in test workflow
Some checks failed
Run Tests / test (pull_request) Failing after 1m11s
Run Tests / lint (pull_request) Successful in 1m11s
0fcc834b25
fix: specify project path for playwright install in test workflow
Some checks failed
Run Tests / lint (pull_request) Successful in 1m13s
Run Tests / test (pull_request) Failing after 1m13s
12b954041a
fix: use full .csproj path for playwright install
Some checks failed
Run Tests / lint (pull_request) Successful in 1m14s
Run Tests / test (pull_request) Failing after 1m15s
5effdb816b
fix: use build output playwright.sh instead of deprecated global CLI
Some checks failed
Run Tests / lint (pull_request) Successful in 1m13s
Run Tests / test (pull_request) Failing after 1m14s
60646da8e0
fix: use pwsh to run playwright.ps1 from build output
Some checks failed
Run Tests / lint (pull_request) Successful in 1m11s
Run Tests / test (pull_request) Failing after 1m11s
f783618eaa
fix: install PowerShell before running playwright.ps1
Some checks failed
Run Tests / lint (pull_request) Successful in 1m11s
Run Tests / test (pull_request) Failing after 1m13s
54ba75ccbd
fix: install PowerShell via dotnet tool for ARM64 compatibility
Some checks failed
Run Tests / test (pull_request) Failing after 1m8s
Run Tests / lint (pull_request) Successful in 1m9s
7750c1fa38
fix: use npx to install Playwright browsers directly
Some checks failed
Run Tests / lint (pull_request) Successful in 1m22s
Run Tests / test (pull_request) Failing after 1m59s
d4f3009ac7
Skips the broken PowerShell/dotnet tool approaches. Playwright browsers
are shared between Node.js and .NET packages, so npx installs the same
browsers the .NET package needs.
fix: removed windows hardcoded root path
All checks were successful
Run Tests / lint (pull_request) Successful in 1m10s
Run Tests / test (pull_request) Successful in 1m56s
ff36c4ae35
- Add structured logging for login events with remote IP tracking
- Implement pagination for file listing endpoints with configurable limits
- Add logging for file downloads and link generation
- Configure session duration via AuthOptions instead of hardcoded value
- Add input validation for pagination parameters
- Improved download token service with better error handling and logging
- Updated files controller to use async stream reading for better performance
- Added null checks and improved exception handling
Convert all DTO classes to records with inline constructor parameters for better immutability guarantees and reduced boilerplate. Updated all instantiations to use constructor syntax.

- ApiErrorResponse: record with Error and Message properties
- NavBreadcrumbItem: record with Title, Path, and Disabled properties
- FileItem: record with Name, Path, Type, Size, and Modified properties
- HealthResponse: record with Status and Uptime properties
- LoginRequest: record with Username and Password properties

All E2E tests pass (11/11).
feat: implement Result/Monad pattern for error handling
All checks were successful
Run Tests / lint (pull_request) Successful in 1m22s
Run Tests / test (pull_request) Successful in 2m0s
eb621169f7
Add Result<T> type and related infrastructure to provide consistent error handling across controllers and services. Includes Result filter for MVC integration and updates to auth flows.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bpeskiewicz/file-gateway!9
No description provided.