The question you ask is not possible to answer with any amount of accuracy, IMO.
It takes at least a few days (sometimes a month if the project is big enough) to flesh out all the detail required to even begin an estimate.
This is where many developers (myself included) go wrong, we wing it and upset ourselves and our clients when things go sour. The problem is, no clients are really willing to pay a week salary just for a quote, so small/medium business are naturally frustrating to work with.
Read up on programming methodologies, XP, Agile, Scrum. Learn about TDD and BDD. You absolutely need to break your project into finite specifications (which is why I prefer BDD).
Decompose the application into components, just as Joomla does.
List the CRUD-S functionality and estimate each one to within an hour's accuracy.
For instance, I can say without fail, that I can create a simple form with a 1:1 mapping to it's database table (and profit) approximately $5 per field. So if a form has 10 fields (all of which are stored in a single table) I can create the form (not-stylized) for $50 and implement the required actions (CRUD) at approximately 2 hour a peice (including unit tests) at my hourly rate, so a simple contacts component would cost:
(4 CRUD actions * 2 hours) * 40/hr = $320
That is how I calculate the base cost, now as I sit with the client I begin performing a more detailed system analysis, figuring out what business logic is required and charging accordingly per behavior specified in my tests.
- Does the contact have any required unique fields to prevent duplication?
If there are 2 or 3 fields which MUST be unique I need to likely perform 3 validations
- Does the contact require client verification, such as an email notification when the account is created/updated?
Anyway, as you break the system into components, you can begin to further divide and conquer a complex a task into many smaller more estimate-friendly tasks. This takes time, but if you do this in conjunction with a BDD framework you and your client reap the benefits.
BDD promotes a human friendly specification language which you can present to your clients and request a manager sign off on specifications to avoid feature creep or he said, she said arguments.
Any time a feature is requested, you break it into specifications first, estimate the time and factor that into the specs document and adjust your price accordingly.