chore: add MIT LICENSE and CONTRIBUTING.md, set SPDX license in pyproject

Bookmark is fully open source (donated to Books in Hand nonprofit, no
BSL tiering). Adds an MIT LICENSE file, a CONTRIBUTING.md scoped to an
early-stage volunteer project, and a PEP 639 license field in
pyproject.toml. Repo description and topics were also updated via the
Forgejo API for discoverability.
This commit is contained in:
pyr0ball 2026-07-13 10:17:05 -07:00
parent 27c066de1c
commit df63ffa846
3 changed files with 85 additions and 0 deletions

63
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,63 @@
# Contributing to Bookmark
Bookmark is an early-stage, fully open-source tool built for Books in Hand,
a nonprofit that keeps books out of landfills. It's still scaffolding —
there's no working end-to-end app yet, so the best contributions right now
are small, focused, and coordinated first.
## Before You Start
This project is young enough that priorities can shift quickly. Please open
an issue (or comment on an existing one) describing what you'd like to work
on before submitting a large pull request — it avoids duplicated effort and
makes sure the change fits the current phase of the build.
See `CLAUDE.md` (also readable as `AGENTS.md`) in the repo root for full
architecture and design context, including what's in scope for the current
phase and what's intentionally deferred.
## Ground Rules
- **Deterministic where it matters.** Size-bucketing (small/medium/large)
feeds the nonprofit's tax and 501(c)(3) reporting. It must stay
geometry/visibility-based — never OCR, ML, or LLM-derived. Don't change
this without understanding why.
- **No cloud dependencies in the current phase.** Keep the intake pipeline
fully local.
- **Say what the mechanism actually is.** Use precise terms — "LLM",
"vision-LLM (VLM)", "OCR", "barcode decode" — rather than the generic
word "AI" in code, comments, docs, or UI copy.
- **Human review before publish.** Any future LLM/VLM-assisted output
(e.g. cover text extraction) is a draft for a human to approve, never
auto-published.
## Development Workflow
```bash
python -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest -v
```
This project follows test-driven development — new modules should ship
with tests under `tests/` that don't require real camera hardware
(synthetic frames, mocked `cv2.VideoCapture`, `TestClient` for the API).
## Commit Style
Conventional-commit-style subjects: `feat:`, `fix:`, `docs:`, `chore:`,
`test:`, `refactor:`. Keep commits small and focused — one logical change
per commit.
## Submitting Changes
1. Fork the repo and create a branch for your change.
2. Make sure `pytest -v` passes.
3. Open a pull request describing what changed and why.
4. Be patient — this is a volunteer-maintained nonprofit project, so review
may take a few days.
## Questions
Open an issue — it's the best way to reach the maintainers and keeps
context visible for future contributors.

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Books in Hand
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -3,6 +3,7 @@ name = "bookmark"
version = "0.1.0"
description = "Book intake and checkout inventory system for Books in Hand"
requires-python = ">=3.11"
license = "MIT"
dependencies = [
"fastapi>=0.110",
"uvicorn[standard]>=0.29",