I wanted to create a simple and fast static portfolio site using easily maintainable, developer-friendly technologies. Having complete control over every aspect of my site was important too. Jekyll provides for the use of SASS, Coffeescript, Markdown, templating etc. and Jekyll sites are very simple to host (for free) on Github Pages. Sounds good.
This site makes judicious use of Javascript (for Ajax and image gallery loading, for example) but it also makes a significant effort to provide the same fuctionality to users with Javascript turned off. The image galleries are still a work in progress though.
The following are some points you'll probably want to know if you're to use this project for your own portfolio site:
_projects
folder.id
attribute should be identical. This is different to the name
attribute (which is what is displayed - it can be duplicated across projects)thumb.jpg
. If it is named anything else, let Jekyll know by using the thumb
attribute in the project's YAML front-matter eg: thumb: thumb.gif
no_publish
folder in _projects
(which is ignored by Jekyll).amazon_url
attribute in _config.yml
shows), there must be a folder for each project named with the project's id
.thumb
(where the thumbnail lives), medium
(which contains the standard-sized images used by the inline image gallery) and full
(which contains the large versions of the images used when the image gallery is fullscreen)personal
, web
, print
, etc) and these should be specified by the project's categories
YAML array._filter
folder. This is primarily for users without Javascript. The important part here is passing the category name to the project_list.html
template: eg active='commercial'
usekraken.py
and upload_files.py
are python scripts to make life easier. I used Kraken to optimise my images and as a bonus the API allows uploading to Amazon S3. The other script automates uploading to a server (not necessary if Github is providing your hosting...). Both these scripts look for values such as usernames and passwords from configuration.json
. I have not included this file for obvious reasons.