I am building a site for my friend using PHP and MySQL (Or SQLite, I’m still debating.) The site is aimed to sell photography online with various options. The backend shows statistics, recent orders, etc. and allows for the client to upload images, crop them in-browser (using javascript and GD), add a watermark to the image, adjust prices, framing options, coupon codes, etc. Upon uploading an image, the site must also resize the image, allow for a color change or preset filter, etc. When a person buys an image on the front end, the site will be contacted using paypals IPN, an email will be sent to the buyer and administrator, and things will resume.
The front end will have the home page showing the 10 most recent uploads, 3 pages where the client can enter contextual information, and a gallery link that will show all of the images (with sorting options, such as sort by color, size, price, tag, category, etc.)
When buying an image, the user will be faced with options such as size, frame or no frame, color, signature, etc.
Given all this information, would it be easier to use a open source CMS (and which one) or design my own. (I can design a quick system for this site in about a month or so if thats what it comes down to)
What would be the best way to get a project like this taken care of?
Thanks
This is definitely a subjective question, and may be closed or moved to another venue.
As a small shop, there is every reason to use a service rather than having anyone build software, ever. Custom software is expensive to create and maintain and you’re usually better off with an online product that does about 80% of what you need.
There seem to be 100s of options searching “websites for photographers” in google. Is there a real reason your friend needs a customized CMS?
If you decide that no online service is sufficient:
Do not design your own CMS unless no other option is possible and you have a large, ongoing budget.
While the project scope may be small today, over time your friend will want to add new features (facebook integration, flickr integration, login via retinal scan, etc). By using open source they will be able to add these using off-the-shelf plugin code.
When you use an open source CMS, you make it possible for them to get other people to do work on it in the future. Hiring a Drupal or WordPress coder to do a couple days of custom work or support is no problem. For another programmer to learn a custom CMS takes much longer and is more expensive.
You get to focus on the part of the project that is most valuable to your friend. Not on creating the login system, building a flash uploader, or managing the payment flow. Those things have been handled before by others. Take advantage of that.
You gain valuable knowledge of a CMS that is widely used. You learn how to read other’s code and bend it to your will. This will be helpful later when you have to build custom solutions.
I built and maintained a custom CMS for six years. That company still has hundreds of clients using it. If they could move them all to Drupal/Wordrpess, they’d be much happier.
One thing to be careful of: Make sure your friend can keep the CMS up to date. There are constant security releases for these platforms because they are constantly under attack by script kiddies. Attackers will find the flaws in your work too, but they won’t have direct access to the code so they’ll be slower about it.