Metadata-Version: 2.4
Name: stapel-classified
Version: 0.1.4
Summary: Composite: classified ads — the shop composite + geo (location-bound listings)
License: MIT
Project-URL: Homepage, https://github.com/usestapel/stapel-classified
Project-URL: Repository, https://github.com/usestapel/stapel-classified
Project-URL: Documentation, https://github.com/usestapel/stapel-classified#readme
Project-URL: Changelog, https://github.com/usestapel/stapel-classified/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/usestapel/stapel-classified/issues
Keywords: django,stapel,classified,composite,geo
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-shop<0.2,>=0.1
Requires-Dist: stapel-geo<0.4,>=0.2
Provides-Extra: all
Dynamic: license-file

# stapel-classified

[![license](https://img.shields.io/github/license/usestapel/stapel-classified)](https://github.com/usestapel/stapel-classified/blob/main/LICENSE)
[![llms.txt](https://img.shields.io/badge/llms.txt-blue)](https://github.com/usestapel/stapel-classified/blob/main/docs/llms.txt)
[![status](https://img.shields.io/badge/status-unreleased-orange)](https://github.com/usestapel/stapel-classified)

Не опубликовано на PyPI. Установка из исходников: `pip install git+https://github.com/usestapel/stapel-classified`
Composite: classified ads — the shop composite + geo (location-bound listings).

## Assemble (one line)

```bash
pip install stapel-tools
stapel-assemble myads --libs classified
cd myads && make test
```

That expands `classified` 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_classified import preset

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

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

urlpatterns = [
    path("categories/", include("stapel_categories.urls")),
    path("listings/", include("stapel_listings.urls")),
    path("reviews/", include("stapel_reviews.urls")),
    path("geo/", include("stapel_geo.urls")),
]
```

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

| Key | Note |
|-----|------|
| `STAPEL_REVIEWS["TARGET_TYPES"]` | prefilled by `stapel_classified.preset.SETTINGS_DEFAULTS` (targets `listing`) |
| `STAPEL_LISTINGS["BASE_CURRENCY"]` | default `USD` — set your currency |
| `STAPEL_GEO[...]` | geocoder provider/keys — see stapel-geo CONFIG.MD |
| listing coordinates | lat/lon are LISTING fields (no projection needed) — see stapel-listings |

## Glue

None of its own beyond what stapel-shop already carries: coordinates are the
listing's OWN fields (lat/lon on the listing), not a foreign aggregate — no
projection needed for geo.
