Caution
The project is still in development. Use it on your own risk.
- plain HTML (with Jinja templates), regular CSS and JS for frontend
- the backend runs on Flask
- images are stored on the Backblaze B2 cloud provider
- SQLite is a database solution, but it easily replaceable
- Registration and authorisation of users to see only their photos;
- The main page that tells about the service (available to all users) and the photo album page (only for registered users);
- Ability to upload photos;
- Ability to create folders for grouping photos (you can also create folders in folders);
- Uploaded photos can be stored in the cloud (e.g. s3).
- Add the ability to share individual photos;
- Add the ability to share entire folders (several users have access and they all see all the photos in the folder);
- Send emails when a photo is uploaded to a shared folder;
- Add the ability to control who can delete photos and folders from a shared folder (by default, only the person who created and shared the folder).
You need .env file in app folder in order to run the application.
SECRET_KEY="yoursecret" # secret for wtforms
SQLALCHEMY_DATABASE_URI="" # your database provider
B2_KEY_ID="" # API key id of a bucket
B2_KEY="" # API key
BUCKET_ID="" # id of a bucket
- Clone the repository
git clone https://github.com/LostHopes/photo-album-practice.git photo-album
cd photo-album
- Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate
- Install uv and update python package manager
pip install --upgrade pip uv
- Install dependencies and run the project
uv sync --all-groups
uv run src/wsgi.py
sudo docker built -t yourname .
sudo docker run yourname
Configuration can be modified in pyproject.toml file
pytest
The project licensed under MIT. (See LICENSE)
Any contribution is appreciated. Feel free to open an issue or PR