A modern HTML5 photo gallery
JavaScript PHP CSS Shell
Latest commit 2ef5316 Apr 19, 2013 @aymericb Merged development for 0.3 release
- Added keyboard shortcuts in AlbumView and PhotoView (arrows, enter, esc)
- Added different style for album thumnails.
- Added download button to download album and images.
- Added build system using grunt

See changelog.md for details.

Merge branch 'develop'
Failed to load latest commit information.
css Added ellipsis support for title of thumbnails, when the text is too … Apr 16, 2013
js Fixed compatibility with IE 10. Apr 19, 2013
php Removed unnecessary backslash characters from PHP server error messages. Apr 16, 2013
package.json Added support to LessCSS in build system. Apr 3, 2013
update.html Added CSS Minifier support. Apr 3, 2013



Exposition is a modern HTML 5 photo gallery software for the Web.

  • Maximize the use of the window by dynamically adjusting the number of thumbnails and the size of pictures.
  • Easy deployment. Rely on common web technologies. Apache with PHP and GD.
  • No Database. No SQL. The filesystem is your database. An album is a directory. A photo an an image within.
  • No complex administration console to upload and manage photos. Just upload files to the right place to add new photos.
  • Designed with modern browsers in mind. The absence of compatibility with IE 6 is a feature, not a bug.


Exposition. Copyright (c) 2013 Aymeric Barthe.

The software is covered by the GNU Affero General Public License version 3, with an additional restriction that forces a small copyright notice to be preserved in minified javascript code. You are free to distribute and use this software freely, but if modify it, you need to make your changes available with the same license. Check the license for more details.

If you want to acquire the software under a proprietary license more suitable for business needs, please contact me directly. I own all the intellectual property and can release this software with a different license.

Download and Installation

  • Get an Apache web server supporting PHP 5.3 with GD.
  • Download the latest release of Exposition.
  • Upload the Exposition files to your web server.
  • Edit the php/core/config.php file, in particular
    • PHOTO_DIR must point to the directory containing album and photos
    • CACHE_DIR must point to a writable, cache directory, which will contain the thumbnails and photos generated at smaller sizes
  • Upload albums and photos to PHOTO_DIR

    • Each directory represents an album and each image file represents a photo.
    • Albums can have sub-albums and/or photos.
    • By default file names are used as titles, and items are sorted by alphabetical order.
    • It is possible to modify the default behavior on for each album, by adding an album.json file, with the following syntax:
    "version": 1,     /* Mandatory. Integer. Must be 1 */
      "children":         /* Mandatory. Children of the album will be shown
          in the same order as appear in this array. Files which are not listed
          will not be displayed, but could still be accessed with a direct
          link (hidden album) */
          {               /* Item config */
              "filename": "filename",     /* Mandatory. File or directory name within the album */
              "title": "custom_title"     /* Optional. Use this title instead of basename */
  • Navigate to the index.html page. Exposition should now be working and displaying your photos and albums.
  • Optionally, you can navigate to update.html to force your web server to cache your photos at all configured sizes.

Futher Information