I'd say when it feels usable to you. Eating your own dog food is a classic piece of advice. When you can make use of the product and the experience isn't painful then it's (hopefully) going to be valuable to someone else. Design-wise, it doesn't have to be the most beautiful thing in the world, as long as it has a consistent personality. Maybe someone else can tackle the promotion question (its been covered here a bunch in the past). Promotion is an art in and of itself, that you should probably research as deeply as the coding side if you want to do it yourself.