Skip to content

Latest commit

Β 

History

History
67 lines (56 loc) Β· 2.98 KB

File metadata and controls

67 lines (56 loc) Β· 2.98 KB

EventOS β€” Blazor WebAssembly Event Manager

A full-featured event management platform built with Blazor WebAssembly (.NET 8), developed with assistance from GitHub Copilot.

πŸ“‹ Grading Criteria Coverage

# Requirement Implementation
1 GitHub repository This repo β€” with .gitignore, README, and feature branches
2 EventCard component with two-way data binding Components/EventCard.razor β€” @bind on all fields
3 Routing functionality (implemented & debugged) App.razor router, /events/{EventId:int} route parameter, custom 404
4 Performance & validation DataAnnotations on all models, render-optimised computed properties
5 Registration form, session state, Attendance Tracker Pages/Register.razor, Services/SessionStateService.cs, Pages/AttendanceTracker.razor
6 Copilot summary Pages/CopilotSummary.razor β€” full step-by-step log

πŸš€ Getting Started

# Prerequisites: .NET 8 SDK
dotnet restore
dotnet run
# β†’ https://localhost:5001

πŸ—‚ Project Structure

EventManagerApp/
β”œβ”€β”€ Models/
β”‚   β”œβ”€β”€ EventModel.cs           # Event + AttendeeRecord models
β”‚   β”œβ”€β”€ RegistrationModel.cs    # User registration + UserSession
β”‚   └── UserSessionExtensions.cs
β”œβ”€β”€ Services/
β”‚   β”œβ”€β”€ EventService.cs         # In-memory event store (singleton)
β”‚   └── SessionStateService.cs  # Auth/session state (Observer pattern)
β”œβ”€β”€ Components/
β”‚   β”œβ”€β”€ EventCard.razor         # Two-way bound event card
β”‚   └── PasswordStrengthBar.razor
β”œβ”€β”€ Pages/
β”‚   β”œβ”€β”€ Index.razor             # Home page
β”‚   β”œβ”€β”€ Events.razor            # /events + /events/{id}
β”‚   β”œβ”€β”€ Register.razor          # Registration with full validation
β”‚   β”œβ”€β”€ AttendanceTracker.razor # Check-in dashboard
β”‚   └── CopilotSummary.razor    # Copilot development log
β”œβ”€β”€ Shared/
β”‚   └── MainLayout.razor        # Shell with sticky header
β”œβ”€β”€ wwwroot/
β”‚   β”œβ”€β”€ index.html
β”‚   └── css/app.css             # Dark editorial design system
β”œβ”€β”€ App.razor                   # Router + custom 404
β”œβ”€β”€ _Imports.razor
└── Program.cs                  # DI registrations

πŸ”‘ Key Technical Patterns

  • Two-way binding: @bind / @bind:event="oninput" with EventCallback<T> for parent notification
  • Session state: Singleton SessionStateService using C# Action events + IDisposable unsubscription
  • Routing: @page with optional int parameter; null-guard for missing IDs
  • Validation: EditForm + DataAnnotationsValidator + per-field ValidationMessage
  • Performance: Computed IEnumerable properties; StateHasChanged only inside event callbacks

πŸ€– GitHub Copilot

Every development phase is documented in the in-app Copilot Log (/copilot-summary), including the exact prompts used and what Copilot generated vs. what was hand-written.