@l3rittany Most app logic is around the use of PKHeX.Core which is usable as a C# package. This required a lot of time digging in PKHeX code understanding how the tool works since there is no documentation at all. So most PKVault logic is just using PKHeX actions on saves.
When you're transfering pkm from save to PKVault storage, pk file is generated (in storage/ dir) and its metadata is stored in json files (in db/ dir).
Create pkm version, for instance generation 3 from generation 7, makes a stored copy of source pkm file and try to convert it to given generation using PKHeX tool & more specific actions.
Beyond that, I'm using Pokeapi for embedded data (for what is not given by PKHeX) & sprites.