63 lines
1.3 KiB
Markdown
63 lines
1.3 KiB
Markdown
# Contributing
|
|
|
|
Thanks for considering a contribution.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -e '.[dev]'
|
|
```
|
|
|
|
Copy env template:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Then set real values in `.env` and run:
|
|
|
|
```bash
|
|
streamlit run app.py
|
|
```
|
|
|
|
## Development guidelines
|
|
|
|
- Keep architecture boundaries clear:
|
|
- `clients/` for external integrations
|
|
- `domain/` for normalization/business logic
|
|
- `services/` for app services/indexing
|
|
- `ui/` for Streamlit rendering
|
|
- Avoid introducing optional fallback paths unless required.
|
|
- Prefer small, focused functions and explicit session-state keys.
|
|
- Preserve safe SSH behavior and path quoting.
|
|
|
|
## Validation
|
|
|
|
Before opening a merge request, run:
|
|
|
|
```bash
|
|
PYTHONPATH=src python -m py_compile app.py src/media_library_viewer/*.py src/media_library_viewer/clients/*.py src/media_library_viewer/domain/*.py src/media_library_viewer/services/*.py src/media_library_viewer/ui/*.py
|
|
```
|
|
|
|
## Security / secrets
|
|
|
|
Never commit:
|
|
|
|
- `.env`
|
|
- `.streamlit/secrets.toml`
|
|
- private keys or API tokens
|
|
|
|
Use `.env.example` for documented placeholders only.
|
|
|
|
## Pull requests
|
|
|
|
Please include:
|
|
|
|
- what changed
|
|
- why it changed
|
|
- how it was tested
|
|
|
|
If behavior/requirements changed, also update `docs/REQUIREMENTS.md`.
|