Skip to content

Developer Architecture

HAKAMIQ edited this page Jun 12, 2026 · 1 revision

This page summarizes the high-level architecture direction of Hakamiq CHD Tool.

Hakamiq CHD Tool is a Windows x64 WPF desktop application built around safe local CHD workflows, clear user feedback, and maintainable separation between UI, workflow logic, and infrastructure services.

Project direction

Hakamiq CHD Tool is currently WPF-only.

The project does not target Avalonia, web UI, cloud conversion, or server-side conversion in the current architecture.

Main architectural goals

The application architecture focuses on:

  • Clear separation between UI and workflow logic
  • Minimal code-behind in WPF windows
  • ViewModel-driven interaction
  • Conservative input classification
  • Safe queue execution
  • Explicit conversion result states
  • Local-only processing
  • Predictable release packaging
  • Arabic and English UI support
  • RTL layout with LTR technical text where needed

UI layer

The UI layer is responsible for presentation only.

WPF windows and dialogs should act as lightweight shells. They should avoid heavy parsing, formatting, conversion decisions, or business logic.

A healthy WPF window should normally contain only UI initialization, DataContext setup, basic window behavior, and dialog closing behavior.

ViewModel layer

ViewModels coordinate user-facing state and commands.

They may prepare display text, expose command state, handle user interaction flow, and communicate with services through clear interfaces.

ViewModels should not directly perform heavy file conversion, storage inspection, Redump database logic, or release packaging work.

Service layer

Services contain application behavior that is not UI-specific.

Examples include:

  • Input inspection
  • Conversion planning
  • Queue execution
  • Output safety checks
  • Redump metadata access
  • Storage advisory logic
  • File system operations
  • Release verification support
  • Logging and diagnostics

Services should be testable without requiring WPF windows.

Workflow layer

The workflow layer coordinates the conversion lifecycle.

A conversion item should have a clear result state such as:

  • Success
  • Failed
  • Skipped because output already exists
  • Canceled by the user

User cancellation should not be reported as a normal conversion failure.

Input safety

Hakamiq CHD Tool should avoid unsafe assumptions about unknown or incomplete inputs.

Standalone BIN files, missing companion files, damaged sources, unsupported layouts, and uncertain console identity should be handled conservatively.

When the application cannot classify an input safely, it should stop, skip, or warn instead of continuing blindly.

PS3 experimental architecture

Sony PlayStation 3 support is experimental.

PS3-related inputs may be inspected, classified, warned, skipped, or refused depending on detected structure and safety checks.

Detection does not imply full conversion support.

The architecture should keep PS3-specific inspection and planning separated from general disc conversion behavior so experimental support does not destabilize stable workflows.

Redump integration

Redump-related functionality should remain informational and verification-oriented.

Redump metadata may help identify disc information and verification context, but it should not override local safety checks or imply that a damaged source is valid.

Storage advisory

Storage advisory logic should be separated from UI rendering.

The application may report storage, topology, or temperature-related warnings when available, but unavailable readings should be represented clearly instead of guessed.

Localization and layout

The application supports Arabic and English UI behavior.

General UI may use RTL layout, while technical values such as paths, filenames, hashes, command output, and logs should remain readable as LTR technical islands where appropriate.

Release architecture

End-user release packages should be generated from the official publish workflow.

A clean release should not contain source code, repository metadata, CI files, local build artifacts, or developer-only scripts.

The final package should feel like a finished desktop application, not a copy of the development repository.

Testing and verification

The project should use verification steps to protect architecture and release quality.

Verification may include:

  • Repository convention checks
  • Debug build validation
  • Release build validation
  • Publish output validation
  • Release manifest generation
  • End-user package safety checks

Design principle

Hakamiq CHD Tool should prefer predictable behavior, clear warnings, and safe refusal over automatic behavior that may damage output quality or mislead the user.

The architecture should make correct behavior easier to maintain than unsafe shortcuts.

Clone this wiki locally