It's not necessary to have a recurring revenue stream to get a good price for the business, but it helps.
If you want to sell in 3-4 years, my top tips are:
1. Ensure you show regular growth over this period as buyers are going to project that performance into the future and value your business based on that. Hit a plateau and buyers will project flat earnings going forward, they won't believe any projections involving a sudden jump in growth post-sale!
2. If you show little profit in your accounts you pay less tax but that will damage your sale price. An additional $100K in profit on the books could result in half a million more at the time of sale (assuming a multiple of 5) but will cost you a fraction of that in tax.
3. Get size. For buyers there's security in size. Security = lower perceived risk. Lower risk = higher price.
4. Have a good management team in place and make sure the business is not dependent on you ...or on any one or two key people as that severely damages price. (You could research "key person discount").
5. Have a good accounting package and demonstrate not only that you're on top of your accounts but also that you understand and have easy access to key "management accounts" information and intelligence.
6. Keep good records - from employee contracts to online services you're signed up for. Keep copies of contracts, emails, website traffic logs, everything.
7. Create manuals to document your procedures, processes etc. And keep updating them. Buyers really like to see good documentation of business knowledge and operations.
8. Run the business separate to your personal finances. For example, avoid signing personal guarantees on business debts where possible.
9. Hire a good adviser to assist with the sale ... and hire them early. It's never too early.
10 It's worth investing the time to find the right expert / firm as there are many charlatans about. Once you've found the right person/people, pay them well and keep them close. Good advisers can add enormous value i.e. many, many multiples of the fees you pay them.