EARLY DEVELOPMENT STAGE - USE WITH CAUTION
This project is in early development and may contain bugs or incomplete features. Use at your own risk.
Development Status: Active development is intermittent. Features and bug fixes are implemented at my own pace, as time permits. Please be aware that updates may be infrequent.
This project embraces a deliberately simple design, prioritizing ease of use for small-scale, private photo albums. Key decisions reflect this philosophy:
- Database-Free Data Storage: To minimize complexity and dependencies, data is stored in JSON and JSON Lines files, eliminating the need for a database. This approach is well-suited for personal use and small collections.
- Command-Line User Management: User registration is handled exclusively via the command-line interface. This choice streamlines setup and enhances security by avoiding web-based registration vulnerabilities.
- Configuration by Convention: A settings page is intentionally omitted. Configuration is achieved through file naming conventions (e.g.,
.hidden,.private) and direct file manipulation. This design promotes a self-contained and transparent system.
These design choices prioritize simplicity and security for private photo album management. While they may limit scalability or certain features, they create a lightweight and manageable solution for personal use.
-
Installation:
uv sync
-
Configure Environment Variables:
Initialize the environment variables
uv run python -m photos.main initAnswer the prompt to setup the running environment
-
Create Data Directory:
mkdir data
-
Add Photo Albums:
Move your photo album folders into the
datadirectory.mv $YOUR_PHOTO_ALBUM data- Hidden Albums: To hide an album from the public listing (accessible via direct link), rename the album folder with the
.hiddensuffix. Example:MyVacation.hidden. - Private Albums: To restrict access to an album requiring login, rename the album folder with the
.privatesuffix. Example:FamilyPhotos.private.
- Hidden Albums: To hide an album from the public listing (accessible via direct link), rename the album folder with the
-
Generate Album Index:
uv run python -m photos.main index
-
Create User Account:
uv run python -m photos.main register $USERNAMEFollow the prompts to set up a password for the new user.
-
Build Frontend:
yarn install && yarn build2 -
Start Web Server:
uv uvicorn photos.web:app --reload