Skip to content
This repository has been archived by the owner. It is now read-only.
A simple client-side photo sharing site.
JavaScript HTML CSS
Branch: gh-pages
Clone or download
Latest commit 168fbe9 Aug 24, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Update README and add rules.json Dec 18, 2012 Update (#4) Aug 24, 2018
firepano.css Large images render strangely with centering, revert Dec 18, 2012
firepano.js Removed no-op. Apr 12, 2013
index.html Update index.html Jun 3, 2014
rules.json Fix typo. Dec 18, 2012
sha256.js Import Firepano example code Dec 18, 2012

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

This is a legacy Firebase example (for SDK 2.x.x). You probably want to use one of the up-to-date examples at


A simple client-side photo sharing site.

Live Demo | Example Panorama

How does it work?

The security model of this simple photo sharing app is predicated on having locations being unguessable. We construct paths into Firebase using a hash of the file being uploaded. Then, anyone that has access to the share-able link can then lookup the location in Firebase and view its contents.

A simple rule set is required to make sure none of the keys are enumerable from Firebase. This prevents retrieval of the keys from any of the Firebase clients, including REST endpoints. We also add a write rule to the photos so that once the data has been written, no one can override or delete data that already exists. The rules for this application are in rules.json.

Exercises for the reader

  1. Add a chat/comment system to each photo.
  2. Support logging in with Facebook/Twitter to manage photos: edits, removals, etc.
  3. Add metadata to indicate public/private photos.
  4. Add a realtime feed of newly uploaded photos.


MIT, except sha256.js.

sha256.js is part of CryptoJS which is distributed under the terms of this license (BSD 3-clause).

You can’t perform that action at this time.