Updated currency handling to use dynamic symbols, defaulting to "€". Adjusted UI components to reflect these changes. Introduced `GetCurrencySymbol` and `NormalizeCurrencySymbol` methods for consistency. Reintroduced QR code parsing/serialization methods. Updated models and services to align with the new currency symbol logic.
Refactored UI to consolidate purchase and contribution actions into dynamic buttons. Added modals for managing purchases and contributions with admin-specific functionality. Introduced new properties and methods in `RegistryPublic.razor.cs` for state management and user filtering.
Updated `RegistryService` with methods for handling contributions and purchases, including admin-specific logic, validation, and logging. Improved database operations for robust handling of item totals and user actions. Added utility methods for generating unique codes and managing admin invites.
Refactored user filtering and display logic for admin actions, ensuring dynamic population of selectable users. Optimized handling of user actions and logs for consistency.
Introduced `RegistryItemCategory` entity for grouping and ordering items within registries. Updated `RegistryItem` and `Registry` entities to support categorization. Added database migrations for `RegistryItemCategories` and updated `RegistryItems` with `CategoryId` and `SortOrder`.
Implemented drag-and-drop functionality for reordering categories and items using JavaScript and Blazor. Enhanced `RegistryAdmin` and `RegistryPublic` components to manage and display categories with collapsible sections.
Updated `RegistryService` to handle category operations, including adding, renaming, removing, and reordering. Added new view models and updated CSS for category styling. Refactored logic to ensure proper ordering and fallback for unassigned items.
Added `FirstName`, `LastName`, and `Address` fields to `ApplicationUser` for extended user profiles. Updated `Index.razor` to include these fields in the profile form with validation. Introduced `ProfileCompletionService` to check profile completeness and added a prompt in `TopBar.razor` for incomplete profiles.
Created migration `20260518213355_AddUserProfileFields` to update the database schema. Updated `RegistryService` to use new fields for user display names. Registered `ProfileCompletionService` and `DbContextFactory` in `Program.cs`. Styled the profile completion banner in `TopBar.razor.css`.
- Added support for single and amount-specific QR codes.
- Updated `RegistrySettings` model and database schema.
- Enhanced `RegistryAdmin` to configure payment options.
- Introduced `RegistryContributionAmount` for partial fulfillment.
- Updated `RegistryPublic` to display contribution progress.
- Added new models for payment methods and QR code handling.
- Improved privacy by limiting contributor visibility.
Added middleware for authentication and authorization to secure
the application pipeline. Enforced HTTPS redirection for improved
security. Adjusted middleware order to ensure proper handling of
static files and antiforgery tokens.
Introduced a `PUBLIC_URL` environment variable to configure the
public URL for OAuth callbacks and reverse proxy scenarios. Updated
`Program.cs` to rewrite request scheme and host based on `PublicUrl`.
Replaced `Microsoft.AspNetCore.Components.Authorization` with
`Microsoft.AspNetCore.Components.Authentication`. Added `PublicUrl`
to `appsettings.json` with a default empty value.
- Introduced `UserActionLog` entity to track user actions.
- Replaced `CanBeSecondHand` with `PreferSecondHand` property.
- Added `ShowBankAccountName` to `RegistrySettings`.
- Updated models and migrations for new properties.
- Enhanced `RegistryService` with user action logging and item details.
- Redesigned `Home.razor` with a grid layout and modal for registries.
- Added `RegistryActionLog.razor` for admin action logs.
- Improved `RegistryPublic.razor` with purchaser/contributor details.
- Replaced sidebar with `TopBar.razor` for responsive navigation.
- Updated CSS for new components and improved responsiveness.
- Updated `ExternalLoginPicker.razor` to add Google and Microsoft login buttons with SVG icons and improved styling.
- Added new styles in `ExternalLoginPicker.razor.css` for layout and accessibility.
- Configured `ForwardedHeadersOptions` and enabled `UseForwardedHeaders` middleware in `Program.cs` for reverse proxy support.
- Added `AddCascadingAuthenticationState` for better authentication state management.
- Included `microsoft-identity-association.json` for Microsoft app association.
- Added `google-signin.svg` and `microsoft-signin.svg` assets for login buttons.
- Show current admins in RegistryAdmin using new RegistryAdminDisplayModel and backend support
- Improve RegistryMetadataService: better normalization, Amazon-specific extraction for images/prices, and URL normalization
- Use normalized product URLs and improved metadata logic in RegistryAdmin
- Add error handling for Blazored.TextEditor interop issues
- Switch healthchecks in portainer-stack.yml to process checks (pidof)
- Remove appsettings.Development.json contents from source control
- Add RegistryAdminDisplayModel and NormalizedUrl to models
Implemented a Blazor Web App (.NET 8) for a public-by-link birth registry platform, following project guidelines. Added domain entities, EF Core context, and Blazor components for authentication, registry management, and public views. Introduced core services for registries, theming, user context, platform owner bootstrapping, and SMTP email. Included static assets (Bootstrap, favicon), launch settings, Dockerfile, CI workflow, and deployment configs. Added bootstrap.min.css.map for improved CSS debugging.