API
ASP.NET Core controllers expose authentication, database status, and user endpoints.
PDF documentation and project overview
A .NET user management system with an ASP.NET Core API, EF Core SQLite persistence, a WPF desktop client, and NUnit automated tests.
The solution separates API, contracts, data access, WPF UI, and automated tests.
ASP.NET Core controllers expose authentication, database status, and user endpoints.
DTOs, enums, models, and interfaces keep shared contracts independent.
EF Core services use SQLite through AppDbContext and migrations.
The WPF client uses simple MVVM-style view models and API clients.
NUnit tests cover services, API endpoints, and database behavior.
Admin create, update, and delete requests use X-User-Id.
The desktop app is a WPF client. It uses API clients instead of direct database access.
Users sign in with username and password. The password can be shown or hidden.
Admins open the admin dashboard. Regular users open the profile dashboard.
Admins can refresh, create, edit, and delete users through API calls.
Login, admin, user, and form windows support light and dark theme switching.
Implemented endpoints in the current codebase.
/api/auth/login/api/database/status/api/users/api/users/{id}/api/users/api/users/{id}/api/users/{id}POST /api/users
X-User-Id: <admin-user-id>
{
"userName": "new-user",
"email": "new-user@test.com",
"password": "123456",
"role": "RegularUser",
"firstName": "New",
"lastName": "User"
}
The implemented test project uses NUnit, FluentAssertions, API clients, and test data helpers.
Service tests cover AuthService and UserService behavior.
HTTP tests cover login, database status, user CRUD, and permission cases.
Database tests cover EF Core model behavior and persistence rules.
Commands used by the current solution.
dotnet restore
dotnet ef database update \
--project UserManagementApp.Data \
--startup-project UserManagementApp.Api \
--context AppDbContext
dotnet run --project UserManagementApp.Api
dotnet run --project UserManagementApp.Desktop
dotnet test
# API base URL
http://localhost:5236
# Swagger in Development
http://localhost:5236/swagger