You can use the SDK generated by Factori to write scenarios for your smart contracts. This is useful at all stages of a smart contract's life: prototyping, testing, Dapp development, and deployment.
When you are developing a smart contract, you are bound to make many
design changes, each of which might slightly change the interface of
your contract. Instead of manually modifying storage and entrypoint
parameter encodings each time you add or remove a field, you can just
regenerate the interface (it's instantaneous, because Factori is
really fast). Because our interfaces are statically typed, if your
scenario is no more up to date with respect to the contract, instead
of cryptic error from a Tezos node, you will get localized, easily
understandable and fixable errors. For instance, if you just added the
admin (of type
address to your storage, and your scenario
deploys an initial storage without the field
admin, you will get an
error saying precisely this. In contrast, if you were deploying by
hand, you might get an error from the node telling you that it expects
Pair int (Pair address (Pair (Pair int string) (big_map address int)))
and got a
Pair int (Pair (Pair int string (big_map address int)))
It should be easy and fast to write and execute a scenario in Factori, on any Tezos blockchain (from Flextesa to ghostnet to mainnet). Using Flextesa, you can run it as fast as one block per second, which makes it easy to try out quick changes and adjust.
Each contract imported from a blockchain comes with a its downloaded storage from the blockchain, so that you can quickly deploy it using the same storage with sensible defaults. Typically, you might deploy a contract with the same initial storage and change the admin to an address you control.