How would I go about creating an e-commerce website?

How should I go about creating a website, hosting and maintaining a website? And several other questions?

  • I want to create a basic level website in which users can login via facebook, twitter, google, and I store their personal activity somewhere (in order to provide personal suggestions in future). The users should be able to comment on blog-type posts. Assume I have zero knowledge of web development and a beginner level knowledge of css and html. I have sufficient knowledge of C++, Java. I am open to learning new technologies, so feel free to bombard them. There are a couple of sub-questions. I would be glad if you can answer most of them/ or provide links/resources for these. 1. Which service provides cheapest and reliable hosting? 2. How do I start developing? First I use local-host (but isn't moving of files to web server a pain)? Which editors/ IDE's are helpful? What are different hack/tips for being poductive with front-end languages? 3. Which back-end language would be best? How would they communicate with front-end? 4. Which is the best database system to use? How to link these together? 5. Where should I read about FB/Twitter/Google integration? 6. How much time I should expect for each of these steps? Note: I don't want to use CMS which might limit my power to execute things. I would prefer to work on Linux, but Windows would be fine too. Also, what versioning system is best for web development?

  • Answer:

    Well firstly, I think we have quite different ideas of what constitutes a "basic level" website. You want integration with 3rd party sites, recording of user activity, recommendations, and dynamically generated content. This isn't rocket science (apart from maybe the recommendation algorithm) but it certainly isn't "basic level" either. Secondly, a decent CMS isn't going to limit your power to execute things. As a beginner it would give you a framework and a *big* head start in development. It will also help you avoid many mistakes and gotchas that you currently probably have no idea about (using tokens to prevent CSRF for example). The site you've described would be relatively trivial to build in say Drupal or Wordpress as modules / plugins that provide *extensive* Twitter, FB and Google integration can be downloaded for free and installed by anyone with opposable thumbs. Assuming you wish to press ahead with developing from scratch, there are no right or wrong answers as to what technologies to use. They all work and they all have strengths and weaknesses. So, to answer your specific questions. 1. In the UK, I've used http://eukhost.com for about 10 years. For the price, their shared hosting solutions are incredible value for money and their support is first class. I'm afraid I can't advise on hosting the rest of the world (other than steer clear of GoDaddy of course, a tasteless company who's CEO likes shooting elephants). 2. To get started, I would just get a hosting account and develop directly on that. If you're using Linux you can remote mount via FTP or SFTP and apart from slight lag it's almost like developing locally. If you have the skills to set up a local development environment then you can use lftp to automatically synchronise your dev files to the shared server (disclaimer: lftp can be very slow). As for editors, there are a million choices. They're all good. Personally, I use Komodo IDE (a non-free IDE) and Geany (a free, very fast IDE-lite). Sublime Text is very popular. Notepad++ will do the job. VIM / Emacs are still popular in some circles. I'm not going to try and compress "productivity tips for front end languages" into a bullet point, it's far too big a subject. You could start by checking out some of the leading front end technologies. Check out Twitter Bootstrap, Angular.js, Backbone.js, Knockout.js. Ember.js. You might quickly find that you'll also want to investigate CSS pre-processors such as LESS, SASS, STYLUS. These are all pretty similar, just pick one that seems the most popular fit with the rest of the framework you choose. 3. As for back end technologies, there are many potential choices. Again, they all work and have different strengths and weaknesses. I think at this stage if you're interested in cutting edge web development you need to learn something that supports web sockets. Since you know Java, you might consider the "Play" framework. (I haven't used it but I would imagine it supports web sockets), there is also Wt, a C++ web development framework. Wt is obviously not a mainstream choice but it is very fast and a well developed, solid framework. To be helpful, I've summarised the mainstream choices that I suggest you consider at this stage. PHP - Simple and effective. Lots of sample code and applications. A solid choice for a beginner. Easy to find quality, cheap hosting. (Doesn't support web sockets, and I hate to say it but PHP may be looking a little long in the tooth) Ruby (on Rails): Very popular for developing the kind of app / site you describe. Excellent community. Another good choice for a beginner. Ruby on Rails is almost a halfway house between programming from scratch and a CMS. Node.js: My current favourite (though not for the faint hearted at this time). Node.js is an implementation of Chromes V8 JavaScript engine on the server. You can write your own webserver from scratch in about 6 lines of code. The advantage from my perspective is that (theoretically) you can structure your application so that code can run on either the client or the server. Add to this node.js is high performance and has a large, growing community of developers sharing their code. Node.js has a first class package manager (npm) which is helping to accelerate it's adoption. Packages such as http://socket.io, now.js, share.js, together.js fundamentally change how the web works - it's no longer "stateless". With node.js and http://socket.io the client and the server are seamlessly connected allowing real time communication between the client and the server (and between any connected clients mediated by the server). Other platforms can do this (the technology is called "comet") but node.js et al makes it very easy. Real time web is a game changer that hasn't quite gone mainstream yet - check out http://sharejs.org for a demo of the kind of thing that node.js makes easy. Python  / Django - can't say I have any experience of Django but it seems well regarded. Drupal - I'll list this separately from PHP because whilst it's written in PHP I consider them to be different platforms. Drupal is not without it's foibles but it's had a *huge* and active development community for a long time. As a result there are vast resources of code, documentation (though not always enough) and pre-built functionality. I could probably build a basic version of your site in a couple of hours using Drupal and I could reasonably assume there are pre-existing integration modules with FB, Twitter, and Google that will "just work" with very little effort on my part. .NET - contrary to what some people suggest, .NET is an excellent development framework, especially for commercial organisations. It's fast, robust, has massive library for dealing with "enterprisey stuff" Java (or rather the JVM) - a more portable alternative to .NET. Popular with large enterprises. Very high performance and can be used to compile and run other languages (such as Scala, PHP etc) to give them JVM levels of performance. 4. Which database: If you're using shared hosting, you've more than likely only got one choice - MySQL. There are better database systems (postgresql) but MySQL will be fine. You might also consider a NoSQL database such as MongoDB. Your choice of back end framework and/or hosting might guide your choice of database. 5. Google ! (and or http://Drupal.org).  Even if you don't use Drupal, you can still download Drupal modules to see how they have approached things. 6. Pure guesstimate, I'd allow 2 or 3 or 4 days (depending on your speed) for basic integration with *each* of those services. It might take less, but OAuth for example, as used by Twitter can take a little work to understand if you've never used it before. In the case of Twitter, there'll almost certainly be an OAuth implementation for the language you choose, so you should check that out. As for versioning, yet again plenty of choice. Git (and Github) is becoming something of a standard in open source development but there is also Subversion and Mercurial. I recommend learning Git. Hope that's helpful. I've missed out a lot, because there's a lot to miss out. You're welcome to ask further questions for clarification.

Simon Gardner at Quora Visit the source

Was this solution helpful to you?

Other answers

Simon Gardner gives some fantastic advice. To add on a couple things: 1.) If you've never set up a web server before, you'll want to start with a service that provides a complete hosting environment where you just upload the code. Otherwise, you're opening yourself up to a host of security vulnerabilities. If you go with Ruby on Rails (and I highly recommend that you do), deploying your finished app to Engine Yard or Heroku is trivial. 2.) Oauth 2.0 is the current authentication standard that just about everyone is employing these days. If you learn the basics of Oauth, you'll be able to implement it for Google, FB, Twitter, and anyone else who supports it. 3.) At risk of starting an arcane debate about the merits of programming languages, if you're looking to learn web development while developing this app, I really think Rails is the way to go. On the other hand, if you just want a solution that works for you, go with Drupal or WordPress. Rails implements a lot of the basic functionality for you, so you can have a working website, it just won't be pretty. Focus on building out the functionality of the app, then take a deep dive into the front-end technologies that make it sparkle. Here's some basic stuff that should help you get out the door: Ruby 2.0.0 (installed with http://RVM.io) Rails 4.0 Gems (or in more common terms, plugins:) PostgreSQL (database) Devise (authentication) Omniauth (works with Devise to automatically implement Oauth, a real timesaver) Front End: jQuery (JavaScript library) Twitter Bootstrap (quickly implement layouts) If this is your first website ever, I'd say you'll have something reasonably good in about 9-12 months. Good luck!

Matt Muller

If you know your way with C++ I would use http://www.webtoolkit.eu/wt. this will let you focus on your integration with social networks and implementing your features instead learning new back-end language. Integration with social network sites takes time, storage mechanisms and proper abstraction takes also time to implement, I would not spend it on learning new server-side language. You will how ever will need get familiar with technologies like HTML, CSS, JavaScript. 1. Which service provides cheapest and reliable hosting? http://digitalocean.com works great for me. I recommend them. 2. How do I start developing? This would be a good page to start with Wt: "http://www.webtoolkit.eu/wt/doc/tutorial/wt.html" --- First I use local-host (but isn't moving of files to web server a pain)? Learn how to deploy your project into Linux server using GIT. It's not a pain at all. Which editors/IDE's are helpful? For HTML/CSS/JavaScript I like using http://www.jetbrains.com/webstorm/, Jetbrains are about to release http://www.jetbrains.com/objc/features/cpp.html it seems. You also have http://www.eclipse.org/ and http://www.codeblocks.org/ and of course http://www.vim.org/ (neither are awesome for all usages). I would recommend getting Jetbrain's when it's out. What are different hack/tips for being productive with front-end languages? Learn them well, learn the standards behind them, don't confuse browser features with standard features, follow web related standard development by signing to relevant mailing lists. Try to be standard compliant as possible. JavaScript is not a toy some language, it also has it's problems but also it's goals and it follows them, it will get better with ECMA standard development, don't go looking into alternatives, it's a waste of time. I recommend reading at least "http://effectivejs.com/" and also read about why some functions in JavaScript are blocking and some are non-blocking and when to use each ones, it's a common beginner mistake as i saw. 3. Which back-end language would be best? How would they communicate with front-end? back-end will communicate with front-end by output of HTML/CSS/JS to some browser client via the HTTP protocol usually on port 80. In other cases it will output XML/JSON (or any other format response) to a client that might be a fully JavaScript application. 4. Which is the best database system to use? How to link these together? That depends on the need of your application. you can start with http://www.sqlite.org/ as a start until you'll fully understand your needs. 5. Where should I read about FB/Twitter/Google integration? Only in their official sites, other sources can be out dated. consider using a service like https://www.loginradius.com/. 6. How much time I should expect for each of these steps? It takes me 20-40 min to setup a fully working production server without much automation, just some notes I took, it will take more for you of course, probably a day or two. take notes of your Linux commands, automate stuff you repeat using BASH. Invest in your boot strap and deployment process and you will see the results later. I guess it will take different amount of time, depending of your whole computer experience, web development as whole involves a huge amount of technologies. What source version system is best for web development? Definitely http://git-scm.com/.  You can consider exploring also a technology called http://nodejs.org/, this will allow you develop both server and client side using only JavaScript. and a project like https://github.com/kripken/emscripten that let's you generate standard JavaScript out of C++ code.

Igal Alkon

1. Heroku or OpenShift for hosting. 2. Might as well stay with an IDE if that's what you used to, say from IntelliJ 3. I would pick between Rails, a Java framework or a new Javascript framework. 4. Database doesn't matter much. ORM should handle much of that. 5. For signin you can use Omniauth. 6. A fair amount of time to learn web development.

Ariel Krakowski

Buy a Domain. I recommend using something besides GoDaddy per moral outrage at that company, but GoDaddy does have inexpensive registration (and online coupons) so it may be cost-effective. Buy hosting. Hostgator is inexpensive enough, but squarespace is also good. The most secure hosting? To be debated - but for WordPress sites, I hear WPEngine is the best via http://moz.com/blog/the-definitive-guide-to-wordpress-security Develop your site. I use and recommend WordPress. Unless you want to spend a ton of time to build common things from scratch by yourself, use a modern CMS. IMHO, the most robust, least expensive, and best supported is WordPress. A CMS doesn't limit your power to execute things if the CMS is agile, flexible, and if you understand and can program the language in which the CMS is written. Building locally using WordPress isn't tough. Build on MAMP or WAMP and migrate the dB when the time comes to your hosting.

Glenn Friesen

Simon Gardner has written a pretty comprehensive answer. I have some experience with Python/Django, so i am going to answer from my perspective. The good news is you have a beginner level knowledge of HTML and CSS. That's always handy when building web apps. You should also learn javascript because it's part of almost every web app. Java has got its share of web frameworks, you could look into that or you could choose dynamic languages such as Ruby or Python and their most popular web frameworks Ruby on Rails(RoR) or Django respectively. Both are good and have a lot of community support. I'll answer with respect to Django from now on. 1. Which service provides cheapest and reliable hosting? If you want to test your app for free http://www.pythonanywhere.com and http://heroku.com provide a free tier. If you want to go for paid hosting check out http://djangohosting.com. Linode is reliable but a bit expensive. Webfaction is also got but it's a shared hosting. 2.  How do I start developing? First I use local-host (but isn't moving of  files to web server a pain)? Which editors/ IDE's are helpful? What are  different hack/tips for being poductive with front-end languages? Develop locally. Use version control git, mercurial etc. Keep a central repository to which you push from localhost and pull from server. Editors and IDE's are a personal choice. Try out vim, sublime text, gedit if you want some names. Being productive is something you learn with time. Follow the design patters of the language you choose. 3. Which back-end language would be best? How would they communicate with front-end? There are many options available. Try their intro tutorial and choose yourself. Usually to communicate with front end you use AJAX calls (learn javascript!). 4. Which is the best database system to use? How to link these together? Choose postgresql or MySQL for django. Use the bindings available for these databases in the language you choose to link them together. In python psycopg2 or mysql-python can be used. 5. Where should I read about FB/Twitter/Google integration? There are a lot of packages available for third pary authentication. For django use http://djangopackages.com to find these packages. 6. How much time I should expect for each of these steps? It depends. If you are new to web development it might take you some time to get going. At least 3-4 months if you learn quickly. Work on linux. period. Choose git for versioning if you don't have experience with version control systems.

Dhiraj Thakur

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.