Apostolos Tsiopanos

Email LinkedIn GitHub Larissa, Gr
SortWeave

SortWeave

Coming Soon

Intelligent Rule-Based File Organization

A powerful cross-platform desktop application that automates file management through customizable, rule-based workflows. Built with modern C# and Avalonia UI for seamless performance across Windows, macOS, and Linux.

Windows macOS Linux

My Contributions

Core Architecture

  • Designed and implemented MVVM architecture using CommunityToolkit.Mvvm
  • Built theme persistence system with JSON based read/write stytem
  • Implemented dependency injection for testability and modularity

File Operations System

  • Developed asynchronous file processing with real-time progress reporting
  • Created flexible file grouping system supporting multi-level folder structures (e.g., type/date)
  • Implemented robust error handling and validation for edge-cases

Auto-Update System

  • Integrated Velopack for seamless cross-platform updates
  • Built update UI panel for manual/automatic options
  • Implemented delta patching to minimize download sizes

UI Components & Validation

  • Created TextBox filtering system restricting invalid characters/symbols
  • Developed dynamic filter tag system with visual state indicators (active/inactive)
  • Fixed cross-platform UI inconsistencies and input handling issues

Critical Bug Fixes

  • Resolved file deletion and crash issues with edge-case file paths
  • Fixed file grouping errors and ensured data integrity
  • Refactored legacy code for compatibility and maintainability

Testing & Quality

  • Wrote xUnit tests for critical file operation components
  • Implemented validation to prevent data loss scenarios
  • Conducted extensive cross-platform testing (Windows, macOS, Linux)

Architecture & Design Decisions

Clean layered architecture — each layer only depends on the one below it, keeping concerns separated and the codebase testable.

01

Presentation Layer

Avalonia MVVM views with reactive bindings, custom controls for rule configuration, and a theme system supporting light/dark modes.

↳ Avalonia was chosen for native cross-platform rendering without Electron's overhead — same C# codebase, no web tech.

depends on ↓
02

Application Layer

ViewModels, services, dependency injection container, command handling, and application-level state management.

↳ CommunityToolkit.Mvvm keeps boilerplate minimal while enabling full testability of ViewModel logic in isolation.

depends on ↓
03

Domain Layer

Rule engine, file operation logic, business rules, validation, and domain models — the heart of SortWeave.

↳ Kept framework-free so the core logic can be unit-tested without any UI or I/O dependencies.

depends on ↓
04

Infrastructure Layer

File system access, licensing service, Velopack update service, logging, and JSON settings persistence.

↳ All external concerns are abstracted behind interfaces, making it straightforward to swap implementations or mock in tests.

Technical Stack

Core Technologies

C# 14 .NET 9 Avalonia UI 11

Architecture & Patterns

MVVM Architecture Dependency Injection Reactive Programming

Features & Tools

xUnit Testing Velopack (Auto-Updates) Licensing System Cross-Platform

Results & Key Learnings

What I Accomplished

  • Built fully functional cross-platform desktop application from scratch
  • Implemented complex file grouping system with flexible multi-level organization
  • Created reusable UI components: theme persistence, text validation, filter tags etc..
  • Eliminated critical bugs preventing data loss and application crashes
  • Integrated modern tooling: Velopack updates, xUnit testing, MVVM architecture
  • Achieved stable cross-platform compatibility through extensive testing and fixes
  • Developed clean MVVM architecture with dependency injection for future extensibility

Technical Skills Gained

  • Deep dive into Avalonia UI framework and cross-platform development challenges
  • Learned async/await patterns for responsive UI with data proccessing
  • Cross-platform debugging and resolution of platform-specific issues
  • Practical MVVM architecture with ObservableCollections, reactive data binding and state management
  • Experience implementing update mechanisms (Velopack), settings persistence, and user feedback systems
  • Collaborative development workflows: git & github usage, code reviews, refactoring code, maintaining compatibility