Ansel is a self-hosted, zero-configuration image gallery application. With Ansel, you can showcase your photographs online without having to worry about who owns your work and how it can be used by third parties.
Ansel is written almost entirely in Clojure and is distributed as an uberjar. All you need to do is download the file and run it. Ansel handles resizing, exif data collection, captions, albums and much more. All of your data is internally stored as JSON and can be easily used by other applications. Ansel comes with a default set of templates and stylesheets and can be easily extended customized.
Users can also create accounts to post comments and likes. This feature is intended for family photo galleries.
You can see a demo here.
- Image upload
- Exif data collection
- User creation and authentication
- Album creation
- Thumbnails
- Likes
- Custom templates
- Logged in users can comment
- Email subscription to updates
- Captions
- JSON import/export
- Android app to provide intent
- Sharing to Facebook
Make sure that you have Leiningen installed.
Clone the repository:
$ git clone git@github.com:honza/ansel.git
Download JavaScript assets with npm and bower:
$ lein npm install bower # if bower is not already installed
$ lein bower install
Run the server with code reloading:
$ lein ring server
Note that running the server this way disables the background saving.
Run the server including background saving. This is the same as running the uberjar:
$ lein run
You can download prebuilt jar files from the release page.
This is easy with leiningen:
$ lein uberjar
BSD, short and sweet
All contributions are welcome and appreciated. Feel free to open an issue if you have a question.
Thanks to @gotoplanb for the name.
- Upgrade dependencies
- Switch to Jordan from cemerick/friend
- Fix saving of new users (use a ref instead of an atom)
- Add commenting
- Add creation datetime to photos, albums and comments
- Code clean up
- Pagination
- Photo liking
- Refactor
- Don't run init code when ns is loaded
- Redirect properly after album form submission
- Add albums page
- First cli arg is now a port number
- Add album covers
- Upload requires admin authorization
- Fix session key deletion
- Add more things to the template context