Neural Log is a DevExpress XAF Blazor Server application backed by XPO and SQL Server Express, with one database per radio group. The architecture uses standard XAF modules for authentication, navigation, and UI generation, while custom modules house the radio-traffic domain model and shared operations.
Technology stack#
| Layer | Technology |
|---|---|
| UI | DevExpress XAF Blazor Server (DevExpress 26.1.4/.NET 10) |
| Data access | XPO (eXpress Persistent Objects) |
| Database | SQL Server Express, one database per radio group |
| Security | XAF Permission Policy with role-based access |
| Identity | GUID Oid keys with optimistic locking and deferred deletion |
Solution projects#
The solution is organized into the following projects under src/:
| Project | Purpose |
|---|---|
NeuralLog.Module |
Shared XPO model, controllers, actions, and save rules. Contains BusinessObjects, Billing, Scheduling, Reporting, Ui, Controllers, and Editors. |
NeuralLog.Blazor.Server |
Traditional XAF Blazor Server host and authentication. |
NeuralLog.WebApi |
Planned secured API host (no endpoints implemented). |
NeuralLog.Web |
Planned React/TypeScript frontend (no implementation). |
NeuralLog.Migration |
Planned offline Access-to-XPO importer (gated by migration rules). |
Tests live in tests/NeuralLog.SchemaTests and cover manifest property coverage, association pairing, runtime schema construction, persistence, and decimal/time conversion.
Domain module layout#
NeuralLog.Module is divided into focused directories:
- BusinessObjects: XPO entity classes for traffic, scheduling, billing, A/R, and setup data.
- Billing: Invoice operations, charge logic, trial/final invoice workflows, and tax/fee calculations.
- Scheduling: Log generation, reconciliation, Book-Ends handling, and placement rules.
- Reporting: Report definitions, saved formats, and authenticated download delivery.
- Ui: Navigation configurations and layout definitions.
- Controllers: SimpleAction and PopupWindowShowAction definitions that expose features to the UI.
- Editors: Blazor panel components for specialized entry screens.
Data model conventions#
- Each business entity derives from
BaseObject(GUIDOid, optimistic locking, deferred deletion). - Physical foreign-key columns are nullable for XPO compatibility; required associations are validated on save.
- No
Aggregatedrelationships are used on financial children. Removing a parent does not silently delete invoices, payments, or history. - SHA-256 text properties use
nvarchar(64)storage. - Business inactive/void flags are separate from XPO deferred deletion (
GCRecord).
Authentication and security#
The application uses the XAF Permission Policy with the following components:
PermissionPolicyUserandPermissionPolicyRolebase classes.- An
ApplicationUserclass extending the template user with roles, lockout, and display name. - The Administrators role bootstrapped at initialization with full administrative access.
- Additional roles are site-configured through Setup > Administrator Controls > Users and Passwords.
Planned components#
The following components are planned but not yet implemented:
- React/TypeScript client (
src/NeuralLog.Web) - Secured API host (
src/NeuralLog.WebApi) - Offline Access-to-XPO importer (
src/NeuralLog.Migration)
No API endpoints or migration instructions exist at this time.