Cal. Civil Code 3300 provides, "For the breach of an obligation arising from contract, the measure of damages, except where otherwise expressly provided by this Code, is the amount which will compensate the party aggrieved for all the detriment proximately caused thereby, or which, in the ordinary course of things, would be likely to result therefrom."
Typically, in order to hold a developer to compensate for damages caused by the developer's delay, the contract must provide notice of the likely damages caused by that delay.
You state that there were delay penalties. Penalties are generally not recoverable on a contract, because they are considered punitive, and punitive damages require proof of fraud (intent to injure through deceiption) before they can be awarded.
However, if the substance of what are called penalties on the contract is to recover for an ascertainable loss of revenue, then that could be deemed compensation for the lost revenue.
The main issue for you is proving your loss in some ascertainable way. You can't just claim that you would have made $X, if the website were running sooner -- you have to prove it with credible evidence, such as through actual orders from a test website, etc. Otherwise, the court will deny your damage request.
Believe me, I am sympathetic to your situation, considering the sort of marketing opportunities that you appear to have garnered in advance. But, that will not move the court to award you damages, unless you can prove your reasonably foreseeable losses.
Should you choose to go forward, then in my view, you cannot sue in small claims, because small claims judges are not disposed to award damages which are not clearly stated in a contract or result from actual out-of-pocket expenditures.
You will need a lawyer and you will have to pay a fair amount to sue (or, to arbitrate your claim, if the contract provides for arbitration).
For a contract litigation attorney referral, see this link.
NOTICE: My goal is to assist people who cannot afford traditional legal services. Without your contribution, I will be unable to continue to help others in this forum. I am always available to answering your follow-up questions after you click Accept – however, if you do not click Accept, the website gets paid, and I receive nothing. This is true, even if you are on a subscription plan. So please click Accept, so that I will be able to continue to provide this service for others in the future.