Advice for the freelancer
As a freelance developer, it’s imperative that you design for re-useability. Why take 3 months to build a product when you can take 2 weeks to install, configure and customize a product you’ve built in the past?
Often, general solutions won’t fit a situation 100%. So it’s up to you to either
1) Convince your client that the solution you have is exactly what they need OR
2) Offer them a discounted price for your premade solution.
Avoid developing form scratch unless there’s a real profit benefit to be reaped. Or if you just love the project so much that you’re willing to do it for free.