Skip to main content
ANVISoftware Solutions

Employee Portal (Blazor)

Intermediate20-25 hours

The Blazor course project: an internal portal with forms, validation, routing, API integration and protected routes.

The brief

What the finished thing needs to do.

  • List employees with search and filtering
  • View and edit an employee through a validated form
  • Create a new employee
  • Route between list and detail views
  • Authentication, with some actions restricted by role
  • Honest loading and error states on every data operation

How to structure it

Components split by responsibility: a list, a row, a form, and a shared layout. The form is used for both creating and editing, since the difference is whether it starts populated.

API calls live in a service injected into components, not in the components themselves. That keeps components focused on presentation and makes the service replaceable in tests.

Validation rules are defined on the model, which is the main advantage of sharing C# between client and server — the same rules can run in both places without being written twice.

Why these technologies

Shared C# model with validation attributes
One definition of the rules for both client and server.
Injected API service
Keeps HTTP concerns out of components and allows substitution in tests.
One form component for create and edit
Avoids two nearly identical forms drifting apart.

Build it in this order

Each stage produces something that works. That matters — a project that only runs at the very end is a project people abandon.

  1. Static list

    Render fixed data and get the layout right.

  2. API service

    Fetch real data through an injected service, with loading and error states.

  3. Routing

    Navigate to a detail view by identifier.

  4. Edit form

    Bind to the model, show validation messages, save changes.

  5. Create

    Reuse the form component with an empty model.

  6. Search and filter

    Applied without a full page reload.

  7. Authentication

    Protect routes and hide actions the user may not perform.

Done means

How to know it is finished

Check each of these before moving on. If one fails, the project is not done yet — and that is useful information rather than a setback.

  • Every data operation shows a loading state and handles failure visibly
  • Validation messages appear per field and prevent invalid saves
  • One form component serves both create and edit
  • Unauthenticated users cannot reach protected routes
  • Components contain no direct HTTP calls

If you want to go further

Extensions worth attempting

Only once the core build meets every criterion above.

  • Add optimistic updates with rollback on failure
  • Add a confirmation dialog before destructive actions
  • Add pagination for large employee lists
  • Add an audit view of recent changes

Have a project worth talking through?

Tell us what you're building or what's slowing your current system down. We'll give you a direct read on scope and approach.