Photo Gallery System

OK, I have the urge to do some recreational programming again, and I think my project will be a photo gallery system. I know, I know, there are a ton of them out there already. Hey, I use one of those that already exists. I just think I can do it better, at least better for me. I want real ACL control over everything from galleries down to individual photos. I want an external API that will allow third parties,or myself, to build applications that can control the system without knowing the internals or having to hack my scripts. Right now I’m not too concerned about database abstraction, as I only have MySQL installed. Once I get things clearly defined I might consider spending the time on that item.

OK, enough ranting, here’s a quick, mostly intelligible, list of features to this point that I want:

  • Batch (zip file upload) and individual photo uploads
  • Add photos from filesystem (already on the machine somewhere). Don’t mess with the originals, copy them over to the webroot and deal with them there.
  • Externally visible API – all functionality needed to do everything the web pages can do
  • Database based config management.
  • The option to choose between pre-caching resized images, on-the-fly caching, or no caching at all.
  • Extensive stats tracking – galleries viewed, photos viewed, etc.
  • Comments on everything from galleries to photos.
  • Ratings on everything.
  • Nice URLs for distribution (mod_rewrite).
  • User favorites
  • Keywords/descriptions on everything.
  • Custom fields (unlimited number) on everything.
  • Users/Groups.
  • ACL control.
  • User profiles (Real name, email address, physical address, website, etc).
  • Galleries (equiv to multiple installations) with “Albums” that can be nested. No “Categories”.
  • Group/User level control of ratings permissions, comments, uploads (no/yes/moderated), image rotation, etc.
  • Basic image editing (rotation, resizing, etc).
  • User defined featured photo (choose the image that represents the album).
  • User defined photo order inside albums.
  • Live resize on display (allow the user to select a resolution to display the current photo. Not persistent across site).
  • Theme support.
  • Watermark support. I don’t necessarily want it, but I know it’s a popular request.
  • Backup and restore functionality.
  • Offline mode for creating static web pages?
  • Mirrors. Use API to add objects to remote servers or require manual sync?
  • XML output for templating or just use good XHTML with CSS?
  • And a whole lot more … ambitious isn’t it?

Comments are closed.