Metadata-Version: 2.4
Name: boneshield
Version: 0.1.0
Summary: Express-like Python backend framework with MongoDB, JWT, and WebSockets
Author: BoneShield
License: MIT
Project-URL: Homepage, https://pypi.org/project/boneshield/
Keywords: boneshield,mongodb,fastapi,express,jwt,websocket,backend
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: uvicorn[standard]>=0.30
Requires-Dist: starlette>=0.38
Requires-Dist: motor>=3.5
Requires-Dist: pymongo>=4.8
Requires-Dist: PyJWT>=2.8
Requires-Dist: python-dotenv>=1.0
Provides-Extra: dev
Requires-Dist: httpx>=0.27; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
Dynamic: license-file

# BoneShield

Express-like Python backend framework with MongoDB (local + Atlas), JWT, and WebSockets.

Default port: **313**.

## Install

```bash
pip install boneshield
```

## Create a project

```bash
mkdir my-api
cd my-api
boneshield make
python main.py
```

## Quick example

```python
from boneshield import App, connect_mongo, makeResponse, jwt, sockets

app = App()
db = connect_mongo()
io = sockets(app)

@app.get("/health")
async def health(req):
    return makeResponse(200, data={"ok": True})

@app.post("/login")
async def login(req):
    body = await req.json()
    token = jwt.sign({"email": body.get("email")})
    return makeResponse(200, data={"token": token})

@io.on("ping")
async def on_ping(socket, data):
    await socket.emit("pong", data)

app.run()  # port 313
```

## Docs

After `boneshield make`, open `GUIDE.md` for the full API reference.

## Commands

```text
boneshield make          # scaffold project in current directory
boneshield make --force  # overwrite existing scaffold files
boneshield --help
boneshield --version
```
