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:
parent
27c066de1c
commit
df63ffa846
3 changed files with 85 additions and 0 deletions
63
CONTRIBUTING.md
Normal file
63
CONTRIBUTING.md
Normal 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
21
LICENSE
Normal 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.
|
||||||
|
|
@ -3,6 +3,7 @@ name = "bookmark"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Book intake and checkout inventory system for Books in Hand"
|
description = "Book intake and checkout inventory system for Books in Hand"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
license = "MIT"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastapi>=0.110",
|
"fastapi>=0.110",
|
||||||
"uvicorn[standard]>=0.29",
|
"uvicorn[standard]>=0.29",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue