E-commerce from scratch or not
I need to develop a new site with the e-commerce part. I'm here to get some hints from you on which road I should go on.
The site will have a static part which include some static pages and the e-commerce part for sell the products. I'm a Django and PHP developer but this is the first time I need to develop an e-commerce.
I see there's some solutions like Satchmo for Django and Magento for PHP. There's also some services like Shopify that provide a pre cooked solution.
These are my requirements:
- I'll need to give to my site a custom layout/style, all written by me
- I'll need a nice admin interface for view the incoming orders, the average orders for day and other nice stuff (I see Magento have a very nice panel for this)
- I'll need a feature that reports me the products that are outgoing out of stock
- Maybe I'll need to implement a custom payment method
- Maybe I'll need to implement a custom shipping courier
Of course I prefer Django instead PHP. Anyone can give me an hint? I've never used anyone of this framework/products.
Thank you.
-- EDIT
Deadline is 3 months. Budget ~7500 $. I've th开发者_运维百科ree months for finish it.
Two DJango e-commerce solutions you might try:
- Lightning Fast Shop (demo)
- Satchmo (demo)
As far as PHP goes, we've used osCommerce (demo).
I've no experience with Django. I develop websites using Wordpress and a year ago I tested Magento (not tested it since).
I was surprised of how user friendly Magento was. Both front end and backend. It was really easy to set up. You can easily customize the layout as well using Magento template API.
Here are some pros and cons:
Pros
- Don't develop your own e-commerce site. It's a lot of work to re-invent the wheel.
- By using a well know e-commerce product, you will also find support.
- E-commerce platforms like Magento are easy to set up and offer the option of changing the look and feel to match the rest of the web site.
- You can easily combine CMS and e-commerce
- E-commerce platforms like Magento offer the option for custom static / dynamic pages (like a mini cms)
- You will save money (development time) by using something that is already developed
- Most e-commerce sites handle payment towards different banking providers.
Cons
- Magento does not work on all servers (server configuration). This however might have changed in the past year.
- If free e-commerce products like Magento do not satisfy your needs, you need to buy licenses. And that costs a lot of money.
- It takes a lot of time developing your own e-commerce site if you want quality and usability. There is no way you can develop a good e-commerce site from scratch in just 3 months.
If you are leaning between Magento/Satchmo and you prefer Django, definitely go with Satch. I've worked with both and frankly Magento is a nightmare to work with (if that looks like a fun time go for it). In my experience Django/Satchmo are much more flexible and easier to customize, as well as easier to maintain, plus you can take advantage of Django's rich ecosystem of packages. And seriously Python > PHP.
In the long run I think you'll be much better off with Django/Satchmo. At some point in the distant future (because no project is ever truly finished, nor as simple as your initial requirements might imply) your client will come back and say "Oh, well...we really wanted X to happen when user Y does Z". And at that point you'll either say "Sure no problem, your site is built on Django so that's a piece of cake!" or go into convulsions because you'll think of all the work that will entail with Magento.
This is past the time constrains of the original poster, but if you're using Django, Cartridge/Mezzanine is a nice setup for e-commerce. It has an Ubuntu deploy script, Stripe integration, and is customizable. Mezzanine is
http://mezzanine.jupo.org/
You can add Mezzanine to an existing Django project. http://mezzanine.jupo.org/docs/frequently-asked-questions.html#how-can-i-add-mezzanine-to-an-existing-django-project
Nice Mezzanine tutorial: http://www.rosslaird.com/blog/first-steps-with-mezzanine/
I don't know anything about Django, but I faced this exact same problem a few years ago after our company decided to stop using share-it for sales and develop our own solution in PHP. Our problem with hosted platforms like share-it (and I assume shopify, although I've never used it) is that their fees are much higher than you would incur by just rolling your own solution and processing your orders with Paypal or something.
So you may consider doing what we did: buying pre-built shopping cart software and then extensively customizing it. We used Digishop, which is designed more for a online catalog-type store than our software site, but after about 2-4 weeks of adding necessary functionality it was good to go. Although out of the box Digishop was way too bloated for our needs, if you're familiar with PHP it should be a breeze to navigate through it and selectively add or remove features as you see fit.
Good luck!
Since the deadline is 3 months you should definitely use an existing, packaged ecommerce. I'm sure I won't be the only to point that out.
Equally, you might find it takes all of 3 months to get up to speed with Magento - which is quasi-enterprise-complexity. As a compromise you might find Magento suits your needs with a little outside help from some experienced professionals. (I am such a professional and I like Magento for it's sophistication and features)
There are many more ecommerce solutions out there to choose from, I couldn't possibly list them all here. Don't feel tied to a particular language either, you might not be the only one to fix the site in future so look at the skills available to your employer. Python's growth doesn't compare well to other languages, such as PHP and Ruby, so may not be the future.
At the end of the day, the answer comes down to how comfertable you are with both options. In the past when I have come across the 2 options, I usually go with the preexisting solution.
Reason to create your own:
- Flexability - You can do program what you want and how you want it to work.
- You know the code. When something break you know what you have written and hopefully can find the source of the problem without reading a bunch of documentation
Reason to use a out of the box/open source solution
- Community - This is the biggest for me. When you are looking for help with a problem, having a community behind you can be the biggest help. Chances are there is someone out there that has had to problem you are having/is trying to do what you are trying to accomplish.
- Preexisting API solutions - If you are creating an online store, chances are you are going to need to tie into some API for checkout/shipping. The major shopping carts out there have these already built out. For instance, Zencart has modules for Authorize, Paypal, UPS, FEDEX, USPS. As well as a bunch of other API that you might need to interact with. It will save you a ton a time not having to code out API scripts for all of these differnet services.
- Security - This could go in both. With using a more well know solution vs a custom one, you run the risk of falling into a kiddy scripting hack where people use scripts to hack into a specific type of online cart. But at the same time, if there is a community of developers solving security issues then response to a security breach would be much faster than you trying to solve it alone.
- Timeline - Launching a open source store is way faster then writing your own. If you used Zencart for example. you could install the store and then spend you time modifying the skin to look and function how you would like.
I'd have to put my vote in for using Zencart as a solution. I've used then on several occation and the software has never let me down. They have a great community, much more so than oscommerce which feels pretty dead at this point.
Also with zencart you can make static pages where you can put whatever content you want on them. You could of course also put a second CMS to handle the static pages.
Many of us have been in the same situation before - code-from-scratch (CFS) or use a framework.
My experience - I started scripting with Perl. And one of the most used module (for web programming) of PERL is CGI. Some considered it a 'heavy' module and thus a few had developed a 'lighter' version of it. For a newbie, this could be confusing - which module to use? Browsing the archive mailing lists of Perl, I came across what I still consider a gem of a wisdom - what you don't know matters as much as what you know.
This perl guru reminded everyone that the CGI module had been reviewed by many developers. He went on to explain how the way strings was handled by C (Perl is made with C) was used by crackers to exploit web apps, but the CGI module had code to prevent such security exploits. He went on to add that NONE of the new CGI modules thats he had come aross had code to prevent this same exploit because none of them were aware about this issue!
And ofcourse, like James Black commented on your question, you need to consider the time factor too.
When selecting a framework or module:
- Look at how old it is.
- Look at how active it's developers are (through mailing lists archives, IRC etc).
- Do the developers provide good support?
- Is it secure?
- Is it popular?
精彩评论