Metadata-Version: 2.5
Name: schematalog-app
Version: 0.1.0
Summary: A registry and catalog for JSON Schema specifications: JSON API and web UI.
Project-URL: Homepage, https://schematalog.com
Project-URL: Documentation, https://schematalog.com
Project-URL: Source, https://github.com/berislavlopac/schematalog
Author-email: Berislav Lopac <berislav@lopac.net>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: ~=3.14.0
Requires-Dist: aiosqlite>=0.20.0
Requires-Dist: asyncpg>=0.31.0
Requires-Dist: datamodel-code-generator>=0.30.1
Requires-Dist: fastapi>=0.122.0
Requires-Dist: jinja2>=3.1.4
Requires-Dist: markupsafe>=2.1.0
Requires-Dist: pydantic-settings>=2.12.0
Requires-Dist: pydantic>=2.9.0
Requires-Dist: pygments>=2.20.0
Requires-Dist: python-multipart>=0.0.20
Requires-Dist: pyyaml>=6.0.1
Requires-Dist: schematalog-core
Requires-Dist: sqlalchemy[asyncio]>=2.0.0
Requires-Dist: uvicorn[standard]>=0.30.0
Description-Content-Type: text/markdown

# schematalog-app

[Schematalog](https://schematalog.com) is a registry and catalog for JSON Schema
specifications: it stores versioned schema documents and serves them back for
validation, `$ref` resolution and format conversion.

```shell
pip install schematalog-app
schematalog serve
```

With nothing configured it stores schemas in a SQLite file in the working directory — no
database to provision — and serves a JSON API and a server-rendered web UI on
<http://127.0.0.1:8000>. `schematalog info` reports the version and which storage backend
your configuration resolved to.

## Storage

One setting selects and configures the store, its scheme choosing the backend:

```shell
SCHEMATALOG_STORAGE_URL=sqlite:///./schematalog.db          # the default
SCHEMATALOG_STORAGE_URL=postgresql://user:pw@host/db
SCHEMATALOG_STORAGE_URL=file:///data/schemas                # plain files you can grep and commit
```

Other backends install themselves: [`schematalog-s3`](https://pypi.org/project/schematalog-s3/)
adds the `s3` scheme. Writing your own needs
[`schematalog-core`](https://pypi.org/project/schematalog-core/) alone.

## What it gives you

A published version is **immutable** — its name, version, document and publication time
never change — and is served back stamped with a canonical `$id`, so a link to a schema
keeps working and keeps meaning the same thing. Versions are free-form strings ordered by
publication rather than by string comparison, and a version can be marked deprecated or
pointed at its successor without disturbing any of that.

Documents can be viewed as JSON, YAML, Avro or ready-to-use Python.
