Metadata-Version: 2.4
Name: snapshare
Version: 0.2.2
Summary: Lightweight photo-sharing web app for group events
Requires-Python: >=3.13
Description-Content-Type: text/markdown
Requires-Dist: boto3==1.43.89
Requires-Dist: flask==3.1.3
Requires-Dist: gunicorn==26.2.0
Requires-Dist: pillow==12.3.0
Provides-Extra: dev
Requires-Dist: build==1.6.0; extra == "dev"
Requires-Dist: moto[s3]==5.2.3; extra == "dev"
Requires-Dist: pre-commit==4.6.2; extra == "dev"
Requires-Dist: pytest==9.1.1; extra == "dev"
Requires-Dist: ruff==0.16.6; extra == "dev"
Requires-Dist: twine==7.0.0; extra == "dev"

# SnapShare

A lightweight photo-sharing web app for group events. Guests scan a link (or QR code), upload photos from their phone, and instantly see everyone else's shots in a shared gallery.

## Prerequisites

- Python 3.13+

## Setup

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install '.[dev]'                  # installs app + dev deps from pyproject.toml
pre-commit install                    # wire up git hooks
```

## Running locally

```bash
python -m snapshare.app
```

Open [http://localhost:5000](http://localhost:5000).

Uploaded photos are saved to an `uploads/` directory next to the module (created automatically, git-ignored).

## Project structure

```
snapshare/
├── pyproject.toml              # Project metadata, dependencies, tool config
├── src/
│   └── snapshare/
│       ├── __init__.py
│       ├── app.py              # Flask app — routes and upload logic
│       └── templates/
│           ├── index.html      # Upload form
│           └── gallery.html    # Shared photo gallery
└── tests/                      # Pytest suite
```

## Linting & formatting

```bash
ruff check .          # lint
ruff check --fix .    # lint + auto-fix
ruff format .         # format
```

## Testing

```bash
pytest
```

## Publishing to PyPI

Version is derived from the nearest `v*` git tag via `setuptools-scm`. Building
from an untagged commit produces a dev version (e.g. `0.2.2.dev1+g1234abc`).
To cut a real release from a tagged commit:

```bash
git checkout v0.2.1              # or whichever tag
rm -rf dist/ build/              # clean any previous build output
python -m build                  # creates dist/snapshare-0.2.1-*.whl and .tar.gz
twine check dist/*               # validate metadata + long description
twine upload dist/*              # uploads to PyPI (needs API token, see below)
```

**PyPI credentials:** create an API token at
[pypi.org/manage/account/token/](https://pypi.org/manage/account/token/)
scoped to the `snapshare` project. `twine` reads it from `~/.pypirc` or the
`TWINE_USERNAME=__token__` + `TWINE_PASSWORD=pypi-...` env vars.

## Roadmap

- [ ] Event/album scoping with shareable links
- [ ] QR code generation for events
- [ ] Cloud storage backend (S3 / GCS)
- [ ] Mobile-optimised gallery
