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.

C#

Project Overview

Main page of the invoice application.

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.

Architecture Diagram

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 .

View on Gitlab