There are some simple functions that could benefit from automated testing, let's add some of those, and make sure to include sbt test on the CI pipeline.
When the application runs under the JVM, it performs correctly. My images are moved to the organized/ directory. If I run it in its native image, my images are moved to invalid/ directory. I am using GraalVM CE 20.0.0 Java 11 for both in Windows and Linux.
Right now, there is a ToDo on the build.sbt, such execution could be done automatically before the nativeImage command, which allows to have such file up to date.
The FileOrganizerService#safeMove/FileOrganizerService#safeMove#organizeByDate methods end up renaming duplicated files to IMG.jgp_(1) instead of IMG_(1).jpg.
I took your implementation and added Cats Effect for my own exploration to compare the implementations and implications. You can view them at the repository I have forked from yours.
This project looks real nice, I actually want to use it!
One thing that kinda bugs me a bit is the license; there is no indication of the license (with a license file, a file header, or being specified in build.sbt), in which case, the software is proprietary.
Could the author of the project set a FOSS license, so I can hack on it/run it with peace of mind? ๐