Skip to content

Repository files navigation

XafMaui - Project Administration MVP

XafMaui Architecture

A project administration system combining DevExpress XAF Blazor Server (back-office) with a .NET MAUI mobile companion app.

What is this?

A realistic MVP for a consulting/services firm:

  • Clients - company info, contacts, addresses
  • Projects - tasks, team assignments, hour budgets
  • Time Tracking - consultants log hours against project tasks
  • Reporting - project progress, budget burn, weekly hours

Current Status

Phase 9 in progress (deployment & final polish).

  • Backend deployed to Docker (compose: app + SQL Server 2022, self-seeding on first boot)
  • DevExpress XAF upgraded to 26.1.4 (MAUI controls stay on 25.2)
  • Reports render on Linux (cross-platform DXFont instead of System.Drawing.Font)
  • User-scoped reports: consultants only see their own data, server-side and non-bypassable
  • MAUI manager approval screen: PMs approve/reject submitted time entries on the phone
  • Remaining: on-device test of the approval screen

Architecture

Architecture

Component Technology Purpose
XafMaui.Blazor.Server DevExpress XAF, Blazor Server, .NET 9 Full back-office: CRUD, user management, approvals
XafMaui.Module EF Core, SQL Server Shared business objects and data access
XafMaui (MAUI app) .NET MAUI, DevExpress MAUI, .NET 10 Mobile: time entry, client lookup, reports

The MAUI app communicates with XAF via its built-in OData Web API with JWT authentication. SQLite provides offline storage.

Prerequisites

  • .NET 9 SDK (for XAF)
  • .NET 10 SDK (for MAUI)
  • DevExpress NuGet feed configured
  • Docker Desktop (for SQL Server)
  • Android SDK / Xcode (for MAUI)

Getting Started

Option A: Run the whole backend in Docker

DevExpress packages restore from a local disk feed, so publish runs on the host first:

dotnet publish XafMaui.Blazor.Server/XafMaui.Blazor.Server.csproj -c Debug -o publish
docker compose up -d --build

App on http://localhost:5080 with its own SQL Server (volume-backed). First boot creates the schema and seeds demo users/data automatically. docker compose down stops it; data survives in the sqldata volume.

Option B: Local development

1. Start the database

docker run -d --name xafmaui-sql \
  -e "ACCEPT_EULA=Y" \
  -e "MSSQL_SA_PASSWORD=XafMaui@2026" \
  -p 1434:1433 \
  mcr.microsoft.com/mssql/server:2022-latest

2. Run the XAF Blazor Server app

dotnet build XafMaui.Xaf.slnx
dotnet run --project XafMaui.Blazor.Server

The app auto-creates the database and seeds test users on first run (Admin, Manager, Consultant, Office - all with empty passwords).

API docs are available at /scalar.

3. Run the MAUI app

dotnet build XafMaui/XafMaui.csproj -f net10.0-android

Deploy to an Android emulator or device.

Roles

Role App Access
Admin Blazor Full system access
Project Manager Both Manage projects, approve time entries
Consultant MAUI Log time, view projects, lookup clients
Back Office Blazor Client management, reporting

Project Structure

XafMaui.slnx               # MAUI-only solution
XafMaui.Xaf.slnx           # XAF Blazor Server solution
XafMaui/                   # .NET MAUI mobile app
XafMaui.Blazor.Server/     # XAF Blazor Server host
XafMaui.Module/            # Shared business objects (EF Core)
docs/plans/                # Design docs and implementation plans

Tech Stack

  • DevExpress XAF 26.1.4 - application framework with built-in security, Web API, Blazor UI
  • DevExpress MAUI 25.2 - DataGrid, Charts, Gauges, CollectionView, Editors
  • Entity Framework Core - SQL Server (server), SQLite (mobile)
  • Scalar - API documentation UI

License

MIT license. DevExpress licenses required.

About

Project Administration MVP: DevExpress XAF Blazor Server + .NET MAUI mobile companion

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages