Create a Portfolio Powered by Dribbble

Most designers on dribbble have a personal portfolio website that usually consists of a name and a bit about themselves – maybe even some work.

When it comes to updating this static page you usually put it off in favour of the booming community of dribbble as it is thriving, less hassle and quick.

In this article I’ll explain how to create a dribbble powered portfolio that updates automatically using jRibbble.

For this tutorial I created a simple HTML template as I didn’t want to make it more complex than it really is.

The main point to this tutorial is to enable you to incorporate your dribbble feed into your own design. I am not teaching how to design or develop a page.

Let’s Get Started

I’m assuming in this tutorial you have some decent HTML & CSS knowledge and have some understanding of JavaScript (jQuery).

Firstly we are going to start with a basic HTML5 markup and include our: stylesheet, jQuery and jRibbble.

<!DOCTYPE html>
     <title>Create a Dribbble Powered Portfolio by Ultralinx</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <!-- Page Style -->
     <link href="css/style.css" rel="stylesheet" >
     <!--[if IE]>
     <script src=""></script>

     <!-- jQuery  -->
     <script src=""></script>
     <!-- jRibbble -->
     <script src="js/jquery.jribbble.js"></script>

You can download the barebones of this project here(The project up to this step) and follow along.

We are then going to create a container which the feed will be displayed in and call it “dribbble-feed”. This will go inside the body.

<section class="dribbble-feed">
       <!--Dribbble feed-->

This will be empty and no HTML will be written by us. jRibbble generates the HTML that will go into this container.

If we look at the page at the present it won’t display any content. This is because we have not asked jRibbble to fetch the content for us.

To do this we are going use the following javscript (jQuery) to tell jRibbble to get the shots and display the way we want.

You are in control of how it’s displayed. For this tutorial I am going to get the dribbble shots and link them to their page on dribbble.

Paste the below code outside the body but inside the html. So after “</body>” but before “</html>”.

<script type="text/javascript">
 $(document).ready(function getDribbbleShots() {   
   $.jribbble.getShotsByPlayerId('Ultralinx', function (playerShots) {
       var html = [];
       $.each(playerShots.shots, function (i, shot) {
           html.push('<div class="shot"><a href="'+ shot.url +'" target="_blank">');
           html.push('<img class="shot-image" src="'+ shot.image_url +'" ');
           html.push('alt="'+ shot.title +'"></a></div>');
   }, {page: 1, per_page: 9});

What? How does that get the shots?

Well I will break it down line by line.

$(document).ready(function () {

This calls jRibbble once the document (page) has loaded.

$.jribbble.getShotsByPlayerId('UltraLinx', function (playerShots) {

This is asking jRibbble to get the the shots for ‘Ultralinx‘. You would replace this with your dribbble username or id.

var html = [];

This creates an empty array of all the html we will generate below that will contain the shots.

$.each(playerShots.shots, function (i, shot) {

This is a for each loop. Basically it means “For Each” shot on your dribbble profile produce the following code.

html.push('<div><a href="'+ shot.url +'" target="_blank">');
 html.push('<img src="'+ shot.image_url +'" ');
 html.push('alt="'+ shot.title +'"></a></div>');

Each tag: “+ shot.url +”, “+ shot.image_url +” and ” + shot.title +” has a line to itself. You are in control of any classes you set for CSS customisation.

This creates a div with the image inside that links to the dribbble page.


This is joins all that information stored in the array to produce the HTML and puts it in the “dribbble-feed” container we made earlier.

 }, {page: 1, per_page: 9});

This is tells jRibbble how many shots to grab per page. This isn’t the pages on your dribbble profile. A page is define by what you choose “per_page”.

In the example I have chosen 9 shots per page which means page 2 will display shots 10-19 and so on.

If you view the page now it should display the shots. You can then use CSS to style them to suit your needs.

That’s it basically. My next tutorial will explain how to display more information and enable pagination.

Quick Last Minute Tip

As there are 9 images being loaded at once some peoples internet may not be fast enough to instantly display them all and may experience a slight delay.

We can solve this by hiding the “dribbble-feed” until the images are loaded. Place this before the code previously written.


This hides the container that will display the shots until it is fully loaded then fades it in.

You can even go that bit extra and add a loading bar then hide it when the feed is loaded.

I hope this is worthwhile to people who don’t have time to figure out the dribbble API and prefer to use jQuery in their projects.

Download Source | Live Demo

You May Also Like