Pinterest is a pinboard-style social photo sharing website that allows users to create and manage theme-based image collections such as events, interests, hobbies and more. Many of my clients have asked me about the creation of a pinterest clone. In this post, I will try to address all the requirements needed in order to create a pinterest-like website.

Application Infrastructure

Since Pinterest is what I typically call a scalable web application, then our choice of infrastructure should clearly be  a cloud-based hosting provider. The main benefits of choosing a cloud hosting provider over a traditional webhost are:

  1. Ability to scale endlessly, as the number of users grows
  2. Comes at a fraction of the cost, when compared to a standard dedicated hosting setup.
  3. Little or no downtime involved, in case a server fails or an upgrade to system resources are required. This can be a pretty complex and expensive task to achieve, if we were to choose a dedicated hosting provider.

Therefore, when it comes to cloud hosting, then Amazon AWS is the way to go. This cloud hosting solution powers the whole Amazon infrastructure, as well as some of the biggest websites out there, as you can see on the AWS case studies page. The beauty of using Amazon AWS is that it offers a pay-as-you-go model, which allows you to pay only for the resources you use.

As a minimum infrastructure requirement, I would suggest the following:

  1. An amazon EC2 instance which hosts the web server and the application source code. The EC2 server instance should be configured with failover capability, so that in case the server goes down for any reason, the application is automatically launched on a different server instance, so that there is minimal downtime involved.
  2. An Amazon RDS mysql instance (Relational Database Service) , in order to host our database system. Advantages of using RDS is that it’s managed, scalable and reliable. More details could be found here:
  3. Amazon S3 for storing multimedia files, such as images and videos. This will be particularly useful since we’ll be hosting a lot of multimedia files. It is the de-facto standard for content storage and distribution.

A diagram of the above information is included below:

Pinterest AWS Diagram

Code Architecture

Our pinterest clone will be built using PHP, one of the most supported languages in the world. Using a PHP framework  in contrary to developing from scratch would result in a more structured code and secure code, while writing less code to do more. The best three frameworks currently in the market are Yii, Zend Framework, and CodeIgniter. Although the task can be accomplished in all three frameworks, Codeigniter wins  due to its small footprint, exceptional performance, and because it favors simple solutions for complex problems.  CodeIgniter is the basis for Expression Engine, a blog software which powers the busiest websites on the internet.

On top of CodeIgniter, we will be using Bonfire’s Development Tool, which basically helps us create Codeigniter-based applications, in a faster and more efficient way. Bonfire provide a set of powerful tools which allows us to write better code. Below is a list from their website:

  • Ready to customize Admin Interface.
  • User Management with Role-Based Access Control.
  • Fully Modular codebase. Built around HMVC.
  • Database backup, migration, and maintenance.
  • Powerful, parent/child capable theme engine.
  • UI-based module builder.

As for the mobile application, we will be using Appcelerator’s  Mobile Platform, which allows us to write one application, and deploy it on Blackberry, iPhone and Android-based phones.  I am not particulary well-versed in this area, so we will need to use get an external developer to handle that part. However, I will make sure we bring the right person to build this part of the project.

Project Roadmap

Below is the roadmap for our project:

  1. Scope definition / Expectations review: We will define the exact scope of the project, where we will write a detailed feature list for every item to be developed, and what are the client’s expectations for each of those. At this  stage, we will set exact milestones for each part of the project.
  2. Wireframes and Design: This stage will involve the creation of the website design, which will be modified according to the client’s needs.
  3. Database design / Architectural development: At this stage, we will design the database and the webhosting infrastructure of the project.
  4. Code Implementation: This is the stage where we write the application’s code. Functionality starts to appear at this stage.
  5. Testing Phase: After the product has been developed, it will undergo an extensive testing phase, in order to make sure everything is functioning as expected.

Costs & Milestones

Infrastructure Costs: A simple calculation reveals that our initial cost will be around $130-$150/month, as show in the AWS Calculator. The cost will remain the same during our development phase, and our early user adoption. After that, we will be billed as much as we use. However, using Amazon AWS is less expensive and more reliable than using other cloud hosting or dedicated providers.

Development Costs: Costs are broken down into the table below

Project Phase Duration Associated Cost
1.Scope Definition/Expectations Review 15 days $2,000
2.Wireframes and Design 30 days $5,000
3.Database Design/Architectural Development 30 days $5,000
4.Code Implementation 75 days $10,000
5.Testing Phase 30 days $5,000
Total 180 days (6 months) $32,000