Invoice Creator
A powerful and user-friendly tool for generating invoices, built with C# and WPF using an N-tier architecture for clean separation of concerns and maintainability.
Project Overview

The Invoice Creator is a WPF desktop application designed to help my parents quickly and easily generate invoices. Built with C# and following an n-tier architecture, the application provides a user-friendly interface that simplifies the process of creating consistent, professional invoices.
I developed this project during my second year at Windesheim University, where the explanation of n-tier architecture in the coursework was limited. This project served both as a practical solution for my parents and a learning opportunity to deepen my understanding of layered software architecture. It demonstrates my skills in C#, application development, and clean architectural design.
Key Features
Invoice Generation
Quickly create professional invoices and allows for an simple workflow.
Data Layer Separation
Utilizes an N-layer architecture for clean separation between UI, business logic, and data access.
Client Management
Manage invoice information, Customer information effortlessly.
Technical Architecture
The Invoice Creator follows an N-tier architecture, which clearly separates functionality across layers and allows for easy replacement of components that don't fit specific needs. For example, the WPF presentation layer could be swapped out for a MAUI-based interface without affecting the core business logic or data access layers.

Core Components
- UI Layer (UI Framework): The presentation layer built with WPF, responsible for all user interactions. It allows users to create, view, and manage invoices in a clear and user-friendly interface.
- Business Logic Layer: Contains the core rules and functionality of the application, such as calculating totals, applying tax rules, managing customer data, and handling invoice logic.
- Testing Layer: Implemented with NUnit, this layer tests the business logic independently by mocking the data layer. It ensures the reliability and correctness of core operations without requiring a live database.
- Data Layer: Manages data storage and retrieval, including saving invoices, customer records, and product information. It abstracts the database or storage system used by the application.
Implementation Process
Requirements & basic design
Initial requirements gathering and creating an basic design.
C# Application Development
Development of the application with WPF for the user interface
User Tests
Testing with my parents for getting more understanding of their needs
C# Application refinement
Refinining the results of the tests.
Testing
Thorough testing with unit and user tests.
Interested in this project?
Check out the source code on Gitlab or mail me about it at timme.albert.kingma@gmail.com.
View on Gitlab