Desktop application for payroll management in Switzerland built with C#, .NET 8, Avalonia, SQLite, and Entity Framework Core.
The project follows a layered architecture with a clear separation between domain model, business logic, infrastructure, and UI. It is designed as a local, maintainable foundation for small to medium-sized teams with around 40 employees and can later be extended for PostgreSQL and additional payroll rules.
The application is intended to support monthly payroll processing in a Swiss business context and provide a solid technical base for future functional growth.
Planned core features:
- Employee master data management
- CSV import for working hours
- Payroll calculation including Swiss deductions such as AHV and ALV
- Expense management with manual adjustments
- Monthly payslip generation as PDF
src/Payroll.Domain: Core business entities and rulessrc/Payroll.Application: Use cases, queries, and business orchestrationsrc/Payroll.Infrastructure: EF Core, SQLite, and technical implementationssrc/Payroll.Desktop: Avalonia desktop UI and view modelsdocs: Architecture notes and project planning
The project follows a few non-negotiable implementation rules:
- business logic should exist only once and not be duplicated
- the same kind of data should always be presented consistently
- UI behavior should remain predictable across all screens
- UI must not contain business logic
- existing code should be reused before creating parallel structures
See docs/development-principles.md for the full project rules.
- Language: C#
- Framework: .NET 8
- UI: Avalonia
- Database: SQLite
- ORM: Entity Framework Core
- IDE: VS Code
dotnet build Lohnabrechnung.slnx
dotnet run --project src/Payroll.Desktop/Payroll.Desktop.csprojThe repository currently contains a minimal starter project with:
- a clean layered architecture
- initial domain models for employees, work time, expenses, and payroll runs
- an EF Core SQLite data context
- a minimal Avalonia desktop UI with seeded sample employees
The current state is intended as a technical foundation for the next functional milestones.
- CSV import for working hours
- configurable payroll deduction rates
- PDF generation for payslips
- preparation for future PostgreSQL support