Work
Case Study Financial Software

Accounting Desktop Application

Delivered modular WPF desktop accounting software with Crystal Reports migration, REST API integrations and multi-platform extensibility for growing businesses.

Overview

Our client's accounting platform is a feature-rich financial management solution for growing businesses. The engagement covered full-cycle development of a Windows Presentation Foundation (WPF) desktop application, including new module delivery, a reporting infrastructure migration and REST API development to extend the platform's reach to mobile and web store integrations.

The codebase was an established .NET application with active users, which meant every change needed to coexist with production deployments and maintain backward compatibility across client configurations.

What We Built

Module development (WPF / MVVM)

We implemented several new functional modules: Workshop Management for service-based businesses, a Control Panel for system-wide configuration and Sales Management workflows covering the order-to-invoice cycle. Each module followed the existing MVVM architecture pattern - ViewModels exposed observable properties bound to XAML views, with a service layer mediating all data access.

The module boundaries were designed to minimise coupling with existing screens, allowing new functionality to be enabled or disabled per client configuration without affecting other areas of the application.

Crystal Reports to Active Reports migration

The legacy reporting stack used Crystal Reports. Active Reports was selected as the target for its superior runtime deployment model - Crystal Reports requires a specific runtime distributed with the installer, while Active Reports compiles report definitions into assemblies that deploy cleanly with the application.

We migrated the report library incrementally, maintaining parallel output from both systems during a validation period and removing Crystal dependencies once each report was confirmed equivalent. This approach meant no disruption to clients during the migration period.

REST API layer for mobile and web integrations

A new REST API was built to expose core accounting workflows to external platforms - specifically a mobile application and a web-based store integration. The API was designed around the existing domain model, wrapping service-layer calls and enforcing the same business rules that governed the desktop application.

Authentication used API keys scoped to integration type, with rate limiting applied at the API gateway layer.

Technical Decisions Worth Noting

The MVVM structure already in place made module additions straightforward - the pattern clearly defined where new code belonged. We took care not to introduce new patterns or abstractions inconsistent with the existing codebase, prioritising long-term maintainability over novelty.

The incremental migration approach for Crystal Reports was slower than a big-bang replacement but eliminated the risk of releasing a broken reporting stack to a production user base. Financial reports need to be exactly right - the dual-verification period was worth the added timeline.

Outcome

New modules shipped into the production installer with no disruption to existing client deployments. The reporting migration was completed with full feature parity and the Crystal Reports runtime dependency was removed from the installer, simplifying deployment and reducing installation friction for new clients. The API layer enabled two external integrations to go live, extending the platform's reach without changes to the desktop application code.