Metadata-Version: 2.4
Name: stapel-booking
Version: 0.1.5
Summary: Composite: bookable resources — calendar + listings
License: MIT
Project-URL: Homepage, https://github.com/usestapel/stapel-booking
Project-URL: Repository, https://github.com/usestapel/stapel-booking
Project-URL: Documentation, https://github.com/usestapel/stapel-booking#readme
Project-URL: Changelog, https://github.com/usestapel/stapel-booking/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/usestapel/stapel-booking/issues
Keywords: django,stapel,booking,composite,calendar
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: stapel-core<1.0,>=0.10
Requires-Dist: stapel-calendar<1.0,>=0.8
Requires-Dist: stapel-listings<1.0,>=0.23
Requires-Dist: stapel-attributes<1.0,>=0.9
Provides-Extra: all
Dynamic: license-file

<!-- Generated by stapel-readme from docs/readme.md + docs/*.json. Do not edit this file; edit docs/readme.md and re-run `make readme`. -->

# stapel-booking

[![CI](https://img.shields.io/github/actions/workflow/status/usestapel/stapel-booking/ci.yml?branch=main&logo=github&label=CI)](https://github.com/usestapel/stapel-booking/actions/workflows/ci.yml?query=branch%3Amain)
[![coverage](https://img.shields.io/codecov/c/github/usestapel/stapel-booking?branch=main&logo=codecov&label=coverage)](https://app.codecov.io/gh/usestapel/stapel-booking)
[![pypi](https://img.shields.io/pypi/v/stapel-booking?logo=pypi&logoColor=white&label=pypi)](https://pypi.org/project/stapel-booking/)
[![downloads](https://static.pepy.tech/badge/stapel-booking/month)](https://pepy.tech/project/stapel-booking)
[![python](https://img.shields.io/pypi/pyversions/stapel-booking?logo=python&logoColor=white)](https://pypi.org/project/stapel-booking/)
[![license](https://img.shields.io/github/license/usestapel/stapel-booking)](https://github.com/usestapel/stapel-booking/blob/main/LICENSE)
[![llms.txt](https://img.shields.io/badge/llms.txt-blue)](https://github.com/usestapel/stapel-booking/blob/main/docs/llms.txt)

> Composite preset for bookable resources (coworking, equipment rental, scheduled services): wires stapel-calendar (availability/slots) and stapel-listings (the resource) into one INSTALLED_APPS/urls/config bundle. Mounts no urls and writes no business logic of its own — the app slot is reserved for future cross-module glue (MODULE.md, preset.py).

Part of the [Stapel framework](https://github.com/usestapel) — composable Django apps that deploy as a monolith or as microservices without changing module code.

## Install

```bash
pip install stapel-booking
```

## At a glance

| Fact | Value |
|---|---|
| Version | `0.1.5` |
| Python | `>=3.11` (3.11, 3.12, 3.13, 3.14) |
| Fleet dependencies | [`stapel-calendar`](https://github.com/usestapel/stapel-calendar) · [`stapel-listings`](https://github.com/usestapel/stapel-listings) |

## Documentation

[capabilities.json](https://github.com/usestapel/stapel-booking/blob/main/docs/capabilities.json) · [llms.txt (for agents)](https://github.com/usestapel/stapel-booking/blob/main/docs/llms.txt)

## Assemble (one line)

```bash
pip install stapel-tools
stapel-assemble mybooking --libs booking
cd mybooking && make test
```

That expands `booking` through the STAPEL_LIBS `requires`
closure and wires every member module into INSTALLED_APPS,
requirements.txt, urls.py and CONFIG.MD, then runs the verify gates.

## Manual wiring (no scaffold)

```python
# settings.py
from stapel_booking import preset

INSTALLED_APPS = [
    # ... django/stapel-core baseline (incl. stapel_core.django.projections)
    "stapel_calendar",
    "stapel_listings",
    "stapel_booking",
]
for _k, _v in preset.SETTINGS_DEFAULTS.items():
    globals().setdefault(_k, _v)

# urls.py
from django.urls import include, path

urlpatterns = [
    path("calendar/", include("stapel_calendar.urls")),
    path("listings/", include("stapel_listings.urls")),
]
```

## Config checklist (fill these, in the generated project's CONFIG.MD too)

| Key | Note |
|-----|------|
| `STAPEL_CALENDAR[...]` | presets/slots — see stapel-calendar CONFIG.MD |
| `STAPEL_LISTINGS["BASE_CURRENCY"]` | default `USD` — set your currency |
| `STAPEL_LISTINGS["DEFAULT_LISTING_TTL_DAYS"]` | default 30 (a bookable resource usually wants `None`) |

## License

MIT — see [LICENSE](https://github.com/usestapel/stapel-booking/blob/main/LICENSE).

---

<sub>This page is assembled by `stapel-readme` from `docs/readme.md` plus the contract artifacts in `docs/`. Edit the prose in `docs/readme.md`; the badges, facts and links above and below it are generated — do not hand-edit `README.md`.</sub>
