An Elixir/Phoenix web application for uploading full-sized DSLR-sized photos and viewing/sharing the compressed versions.
- Elixir and Phoenix framework for the web server
- Amazon AWS account for S3 storage
- imagemagick for image compression
- PostgreSQL for database
for dev/prod environments, you will need a (environment).secret.exs file to store your postgres connection info, e.g.:
use Mix.Config
# Configure your database
config :photoshare, Photoshare.Repo,
adapter: Ecto.Adapters.Postgres,
username: POSTGRES_USERNAME,
password: POSTGRES_PASSWORD,
database: POSTGRES_DATABASE,
hostname: "localhost",
pool_size: 10
To start your Phoenix app:
- Install dependencies with
mix deps.get
- Create and migrate your database with
mix ecto.create && mix ecto.migrate
- Install Node.js dependencies with
npm install
- Start Phoenix endpoint with
mix phoenix.server
Now you can visit localhost:4000
from your browser.
- replace front-end with ReactJS
- favorites
- batch upload with progress bar
- albums
- (multi-language) captions
- video compression and player
- move older content to Amazon Glacier
- auto-organize album (ideally, automatically by EXIF date + location, type of device)