Skip to content

mu88/BlazorFotoManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

260 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

BlazorFotoManager (FotoFlipper)

A Windows desktop application for managing photo exports. Load images, assign the number of copies per photo, and export all copies in one step โ€” ideal for printing workflows. Built with Blazor Server hosted inside an Electron shell via ElectronNET.

Combined CI / Release Mutation Testing Reliability Rating Security Rating Maintainability Rating Bugs Vulnerabilities Code Smells Coverage Mutation testing badge

Features

  • ๐Ÿ“‚ Load individual images or multi-select batches via native file dialogs
  • ๐Ÿ”ข Set the number of copies per image using +/- controls
  • โฌ…๏ธโžก๏ธ Navigate forward and backward through loaded images
  • ๐Ÿ’พ Save and load projects as JSON files for later continuation
  • ๐Ÿ“ค Export all copies to a target folder with a live progress bar
  • ๐ŸŒ Localized UI (German)

Architecture

The project follows an Onion Architecture (Clean Architecture) with two projects:

Project Layer Responsibility
FotoManagerLogic Domain / Business Entities (Project, Image), interfaces, DTOs โ€” no infrastructure dependencies
FotoManager Application / UI Blazor pages, ProjectService, ElectronNET integration

Dependencies always point inward: FotoManager โ†’ FotoManagerLogic.

Infrastructure concerns (file I/O, Electron dialogs) are wrapped behind interfaces using the Humble Object pattern, keeping business logic fully unit-testable.

Prerequisites

Getting Started

cd FotoManager
electronize start

The first start takes a while as Electron downloads its binaries. Subsequent starts are faster.

Running Tests

dotnet test --filter Category=Unit
dotnet test --filter Category=Integration

For mutation testing (requires the tool to be installed first via dotnet tool restore):

dotnet tool run dotnet-stryker

Building a Release

The CI pipeline builds the Windows installer automatically via GitHub Actions on every push. For a local build:

dotnet publish FotoManager\FotoManager.csproj /p:PublishProfile=win-x64

The output EXE (FotoFlipper_<version>.exe) is placed under FotoManager/publish/Release/.

Releasing

This project uses Versionize and Conventional Commits. A release is triggered automatically when a commit with the message chore(release): X.Y.Z is pushed to the default branch.

License

Do No Harm

Features

  • ๐Ÿ“‚ Load individual images or multi-select batches via native file dialogs
  • ๐Ÿ”ข Set the number of copies per image using +/- controls
  • โฌ…๏ธโžก๏ธ Navigate forward and backward through loaded images
  • ๐Ÿ’พ Save and load projects as JSON files for later continuation
  • ๐Ÿ“ค Export all copies to a target folder with a live progress bar
  • ๐ŸŒ Localized UI (German)

Architecture

The project follows an Onion Architecture (Clean Architecture) with two projects:

Project Layer Responsibility
FotoManagerLogic Domain / Business Entities (Project, Image), interfaces, DTOs โ€” no infrastructure dependencies
FotoManager Application / UI Blazor pages, ProjectService, ElectronNET integration

Dependencies always point inward: FotoManager โ†’ FotoManagerLogic.

Infrastructure concerns (file I/O, Electron dialogs) are wrapped behind interfaces using the Humble Object pattern, keeping business logic fully unit-testable.

Prerequisites

Getting Started

cd FotoManager
electronize start

The first start takes a while as Electron downloads its binaries. Subsequent starts are faster.

Running Tests

dotnet test --filter Category=Unit

For mutation testing (requires the tool to be installed first via dotnet tool restore):

dotnet tool run dotnet-stryker

Building a Release

The CI pipeline builds the Windows installer automatically via GitHub Actions on every push. For a local build:

dotnet publish FotoManager\FotoManager.csproj /p:PublishProfile=win-x64

The output EXE (FotoFlipper_<version>.exe) is placed under FotoManager/publish/Release/.

Releasing

This project uses Versionize and Conventional Commits. A release is triggered automatically when a commit with the message chore(release): X.Y.Z is pushed to the default branch.

License

Do No Harm

About

Rewrite of FotoManager in Blazor

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors