You dont need to set shelf life before the expiry per the user below. You can set the expiry and it will enter the shelf life itself Seems like a good app
Async0x42 about Freshbox, v1.3.5