Commit Graph

15 Commits

Author SHA1 Message Date
poprhythm 9668ec162d Add Event Calendar feature with event occurrences service integration
Introduced a new Event Calendar component that displays scheduled events using the Heron.MudCalendar. Implemented IEventOccurrenceService to fetch event occurrences, and added mock data for initial testing. Updated navigation menu to include a link to the Event Calendar.
2025-12-27 13:25:17 -05:00
poprhythm 1c7e704ad3 Add comprehensive validation system with runtime configuration
Implements a flexible validation framework for student rankings, team assignments, and team composition with administrator-configurable rules and thresholds.

Validation System:
- Reflection-based rule discovery eliminates manual registration
- Base classes (RequiredEventTypeRuleBase, EventCountThresholdRuleBase) reduce code duplication by ~250 lines
- 12 validation rules covering event requirements, counts, and team constraints
- Configurable severity levels (Warning/Error) per rule type
- ValidationService with caching for optimal performance
- Rules apply contextually (StudentRanking, StudentAssignment, TeamComposition)

Configuration & Admin UI:
- ValidationSettings admin page for editing thresholds and severity levels
- ChapterSettings admin page for editing chapter information
- Settings stored in Data/appsettings.json for runtime configuration
- JSON config works in both development and production environments
- Auto-creates Data directory and config template on first run

User Experience:
- ValidationWarnings component displays inline warnings/errors
- Integrated in Event Ranking, Registration, and Team Assignment pages
- Color-coded severity indicators (warning yellow, error red)
- Includes "Too Many Regional Events" rule (max 3 recommended)

Technical Improvements:
- Template Method pattern for rule base classes
- Singleton rule instances with lazy initialization
- Configuration loaded via IConfiguration with fallback to defaults
- Safe JSON updates preserve other appsettings sections
2025-12-13 22:15:16 -05:00
poprhythm b465235096 Add some local storage to save settings between
page reloads.
2025-12-12 12:48:44 -05:00
poprhythm 27dc995bb8 Improvements for home page and formatting 2025-12-11 14:17:33 -05:00
poprhythm abd4840ec1 Improve home page layout 2025-12-06 23:47:27 -05:00
poprhythm 56dbd549fd Update settings for production deployment 2025-12-05 14:28:23 -05:00
poprhythm bd04483bed Database migrations are now checked in production. 2025-12-03 15:20:43 -05:00
poprhythm a0313687da 1. Fixed Misleading Property Names
- File: WebApp/ChapterSettings.cs
  - Change: Renamed StateContainer.UserId to ScheduledTeams
  - Impact: Property name now accurately reflects what it stores

  2.  Added Structured Logging with Serilog

  - Packages Added:
    - Serilog.AspNetCore
    - Serilog.Sinks.Console
    - Serilog.Sinks.File
  - Files Modified:
    - Program.cs - Added Serilog configuration with console and file logging
    - appsettings.json - Added Serilog minimum log levels
    - appsettings.Development.json - Added Debug level logging for development
  - Benefits:
    - Structured log output for better parsing/analysis
    - Automatic file rotation (daily, 30 days retention)
    - Logs stored in logs/webapp-.txt
    - Better formatted console output

  3.  Added Global Error Handling

  - File Created: WebApp/Components/Shared/AppErrorBoundary.razor
  - File Modified: WebApp/Components/App.razor
  - Features:
    - Catches unhandled exceptions throughout the app
    - Shows detailed error info in Development environment
    - Shows user-friendly message in Production
    - Logs errors automatically
    - Provides "Return to Home" button

  4.  Enhanced Input Validation

  - File Modified: WebApp/Components/Login.razor
  - Validations Added:
    - Email: Required, valid email format, max 100 chars, regex validation
    - Password: Required, min 8 chars, max 100 chars
  - Benefits:
    - Client-side validation before submission
    - Clear error messages for users
    - Prevents invalid data submission
2025-12-03 14:10:08 -05:00
poprhythm 54875e970c Add more secure form handling 2025-12-02 22:36:41 -05:00
poprhythm a2857d56e0 Auth configuration in docker 2025-11-30 23:55:34 -05:00
poprhythm e5bf3692f6 Authentication implementation 2025-11-30 23:48:58 -05:00
poprhythm 87be3e9c68 Refinements to auth 2025-11-23 11:04:20 -05:00
poprhythm d188d4fbd1 Add simple auth 2025-11-11 14:41:51 -05:00
poprhythm ea21406309 Meeting schedule updates
including copy to clipboard
2025-10-27 10:13:54 -04:00
poprhythm 3daa3b81b3 Add Blazor WebApp and rework data handling to utilize Entity Framework 2025-09-11 11:49:48 -04:00