I don’t want to sound rude but I think that you should be confident enough to design the electronics of the product with ease before you commercialize it. I would not feel comfortable purchasing the product after your post.
I’m no pro but I have designed the electronics for few a products. Some flopped and some did good.
Don’t rush the product, there will be problems and your company/product will get bad reputation.
Always do a lot research about the parts, don’t look at modules/parts from eBay/aliexpress, the quality is unknown, there is no testing so you don’t know if it’s going to last and you never know if you get the same parts as you ordered last time, it depends on the batch and what was cheaper that day in the market.
I’m not really sure if the BYJ48 geared stepper motor is a good choice, it feels like you took the first best stepper motor from eBay. The motor is geared, not all have the same gear ratio (My previous point). There are "nylon" gears that strip really easily if anything gets jammed; it also makes a lot of noise compared to an ungeared stepper.
The ULN2003 is a terrible alternative to a stepper driver, it’s just a Darlington array and just because you can use it for the porpoise doesn’t mean it should be used for it. Like you said you can use FET's instead.
I’m assuming that you are using a µC in the project. Use a proper stepper driver with a uni/bipolar stepper motor without gears. But if you still want to use the BYJ48 then stick some sort of feedback (current sense) on it avoid stripping the teeth of the gears or shredding the tape.
I think that you should go with USB charging. To save cost you could use the µC to protect the cell, there are however loads of IC's that are designed for this use. If you don’t feel comfortable doing it the right way then I suggest waiting and doing more research before you start making money of it.
Whenever I do projects hobby/work I always choose high quality components from DigiKey since that last thing you want to do when doing a complex project is to doubt the components itself or having the randomly break within "spec"
I hope this helps a bit, I’m not trying to be mean!