swadhinbiswas

[email protected]
2026-07-25 16:53:57 +0600 committed NaN years ago
d6783c5
commit d6783c5
6 files changed
+88 -27
▼README.md
+50-12
8
8
<a href="https://github.com/swadhinbiswas/JustAPI/actions/workflows/ci.yml">
9
9
<img src="https://github.com/swadhinbiswas/JustAPI/actions/workflows/ci.yml/badge.svg?branch=initial-setup" alt="CI">
10
10
</a>
11
+<a href="https://github.com/swadhinbiswas/JustAPI/actions/workflows/wheels.yml">
12
+ <img src="https://github.com/swadhinbiswas/JustAPI/actions/workflows/wheels.yml/badge.svg" alt="Wheels">
13
+</a>
14
+<a href="https://github.com/swadhinbiswas/JustAPI/actions/workflows/publish.yml">
15
+ <img src="https://github.com/swadhinbiswas/JustAPI/actions/workflows/publish.yml/badge.svg" alt="Publish">
16
+</a>
11
17
<a href="https://github.com/swadhinbiswas/JustAPI/blob/initial-setup/LICENSE">
12
18
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT">
13
19
</a>
17
23
<a href="https://www.rust-lang.org/">
18
24
<img src="https://img.shields.io/badge/rust-1.85+-E6522C.svg?logo=rust&logoColor=white" alt="Rust version">
19
25
</a>
20
-<a href="https://github.com/swadhinbiswas/JustAPI">
21
- <img src="https://img.shields.io/badge/version-2.0.0-green.svg" alt="Version">
26
+<a href="https://github.com/swadhinbiswas/JustAPI/blob/initial-setup/deny.toml">
27
+ <img src="https://img.shields.io/badge/cargo--deny-v0.20-passing-green.svg" alt="cargo-deny">
28
+</a>
29
+<a href="https://pypi.org/project/justapi/">
30
+ <img src="https://img.shields.io/badge/pypi-2.0.8-blue.svg?logo=pypi&logoColor=white" alt="PyPI">
22
31
</a>
23
32
</p>
24
33
25
34
---
26
35
27
-**Documentation**: <a href="https://github.com/swadhinbiswas/JustAPI/tree/initial-setup/docs" target="_blank">https://github.com/swadhinbiswas/JustAPI/docs</a>
36
+**Documentation**: <a href="https://github.com/swadhinbiswas/JustAPI/tree/initial-setup/docs_site" target="_blank">https://github.com/swadhinbiswas/JustAPI/docs_site</a>
28
37
29
38
**Source Code**: <a href="https://github.com/swadhinbiswas/JustAPI" target="_blank">https://github.com/swadhinbiswas/JustAPI</a>
30
39
122
131
123
132
## Installation
124
133
125
-<div class="termy">
134
+### From PyPI (recommended)
126
135
127
-```console
128
-$ pip install justapi
136
+```bash
137
+pip install justapi
138
+```
129
139
140
+With optional features (Pydantic v2, Jinja2, XML):
130
141
131
-Successfully installed justapi-2.0.0
142
+```bash
143
+pip install "justapi[full]"
132
144
```
133
145
134
-</div>
146
+### Via uv (faster)
147
+
148
+[uv](https://docs.astral.sh/uv/) is the recommended Python package manager:
135
149
136
-Or build from source with [maturin](https://www.maturin.rs/):
150
+```bash
151
+uv pip install justapi
152
+uv pip install "justapi[full]"
153
+```
154
+
155
+### Run without installing
156
+
157
+```bash
158
+uvx justapi create my_app
159
+uvx justapi serve --reload
160
+```
161
+
162
+### Build from source
137
163
138
164
```bash
139
165
cd crates/justapi-py
354
379
<tr><td>Plugin System</td><td>Third-party extension API with lifecycle hooks</td></tr>
355
380
<tr><td>WASM Plugins</td><td>wasmtime-powered WebAssembly middleware</td></tr>
356
381
357
-<tr><td rowspan="3"><strong>🛡️ Quality</strong></td>
382
+<tr><td rowspan="4"><strong>🛡️ Quality</strong></td>
358
383
<td>Memory Safety</td><td>Miri-verified, 6 fuzz targets</td></tr>
384
+<tr><td>Supply Chain Security</td><td>cargo-deny v0.20 — advisories, bans, licenses, sources</td></tr>
359
385
<tr><td>Type Stubs</td><td>Complete .pyi for all public modules</td></tr>
360
386
<tr><td>Test Utilities</td><td>Built-in TestClient & snapshot testing</td></tr>
361
387
</table>
444
470
445
471
- **Rust** 1.85+ (edition 2021) — [install via rustup](https://rustup.rs/)
446
472
- **Python** 3.11+ — [download](https://www.python.org/downloads/)
447
-- **maturin** — `pip install maturin`
473
+- **maturin** — `pip install maturin` (or `uv pip install maturin`)
474
+- **uv** (optional, recommended) — [install guide](https://docs.astral.sh/uv/)
448
475
449
476
### Building
450
477
471
498
# Format check
472
499
cargo fmt --check
473
500
501
+# Supply chain security audit
502
+cargo deny check
503
+
474
504
# Memory safety verification (requires nightly)
475
505
cargo miri test -p justapi-core
476
506
477
507
# Python tests
478
508
cd crates/justapi-py && python -m pytest
509
+
510
+# Python tests with uv
511
+uv run pytest
479
512
```
480
513
481
514
### Benchmarking
492
525
493
526
## Deployment
494
527
495
-### Docker
528
+### Docker (uv-based)
496
529
497
530
```bash
498
531
docker build -t justapi-app .
499
532
docker run -p 8000:8000 justapi-app
500
533
```
501
534
535
+The multi-stage `Dockerfile` uses `uv` for fast, reproducible pip installs.
536
+
502
537
### Docker Compose
503
538
504
539
```bash
536
571
| [**PLAN.md**](PLAN.md) | Living roadmap and current phase |
537
572
| [**ROADMAP.md**](ROADMAP.md) | Aspirational future work — explicitly *not yet built* |
538
573
| [**DECISIONS.md**](DECISIONS.md) | Architecture decision records |
574
+| [**PRODUCTION_PLAN.md**](PRODUCTION_PLAN.md) | 2.0.8 pre-release hardening plan |
539
575
| [**AGENTS.md**](AGENTS.md) | Development rules and conventions |
540
576
541
577
## Contributing
554
590
cargo test --workspace
555
591
cargo clippy --workspace --tests -- -D warnings
556
592
cargo fmt --check
593
+cargo deny check
557
594
558
595
# Submit a PR
559
596
```
560
597
▼crates/justapi-py/README.md
+8-4
7
7
8
8
## Project Status
9
9
10
-**Phase 40 — The JustAPI 2.0 "Singularity" Release** (in progress)
10
+**Phase 40 — The JustAPI 2.0 "Singularity" Release** (ready for publish)
11
11
12
-All 39 prior phases complete. See [PLAN.md](PLAN.md) for the full roadmap.
12
+All 39 prior phases complete. CI/CD pipeline overhauled: uv-based builds, cargo-deny security audit, Miri memory safety, OIDC trusted publishing to PyPI. See [PLAN.md](PLAN.md) for the full roadmap.
13
13
14
14
## Architecture
15
15
46
46
Install the package:
47
47
48
48
```bash
49
-pip install justapi
49
+pip install justapi # via pip
50
+uv pip install justapi # via uv (recommended)
51
+uvx justapi create my_app # no install needed
50
52
```
51
53
52
54
Or build from source with `maturin`:
93
95
| **Compression** | ✅ gzip/deflate/brotli/zstd |
94
96
| **Plugin System** | ✅ Third-party plugin API |
95
97
| **Memory Safety** | ✅ Miri-verified unsafe blocks, 6 fuzz targets |
98
+| **Supply Chain Security** | ✅ cargo-deny v0.20 — advisories, bans, licenses, sources |
96
99
97
100
## Development
98
101
106
109
```bash
107
110
cargo build --workspace # debug build
108
111
cargo build --workspace --release # release build
109
-cargo test --workspace # run all tests (236+)
112
+cargo test --workspace # run all tests (493+)
110
113
cargo clippy --workspace --tests -- -D warnings # lint
111
114
cargo fmt --check # format check
115
+cargo deny check # supply chain security audit
112
116
cargo miri test -p justapi-core # memory safety (nightly)
113
117
```
114
118
115
119
▼docs_site/src/content/docs/contributing/coding-standards.md
+1-0
69
69
- [ ] `cargo test --workspace` passes
70
70
- [ ] `cargo clippy --workspace --tests -- -D warnings` clean
71
71
- [ ] `cargo fmt --check` clean
72
+- [ ] `cargo deny check` clean (advisories, bans, licenses, sources)
72
73
- [ ] `cargo miri test -p justapi-core` clean (if core touched)
73
74
- [ ] Benchmarks appended to BENCHMARKS.md (no p99 regression >5%)
74
75
- [ ] PLAN.md updated
75
76
▼docs_site/src/content/docs/contributing/development-setup.md
+12-1
74
74
- **pyright** or **pylance** — Python language support
75
75
- **maturin** — Python↔Rust integration
76
76
77
-## Running Tests
77
+## Pre-Submission Check Suite
78
+
79
+Run these before every PR:
78
80
79
81
```bash
80
82
# Rust tests
83
85
# Python tests
84
86
pytest
85
87
88
+# Python tests with uv
89
+uv run pytest
90
+
86
91
# Linting
87
92
cargo clippy --workspace --tests -- -D warnings
88
93
cargo fmt --check
94
+
95
+# Supply chain security audit
96
+cargo deny check
97
+
98
+# Memory safety (requires nightly Rust)
99
+cargo +nightly miri test -p justapi-core
89
100
```
90
101
91
102
## Next Steps
92
103
▼docs_site/src/content/docs/contributing/testing-guide.md
+8-5
139
139
140
140
## CI Testing
141
141
142
-Every PR runs:
142
+Every PR runs via `.github/workflows/wheels.yml`:
143
143
144
144
1. `cargo test --workspace`
145
145
2. `cargo clippy -- -D warnings`
146
146
3. `cargo fmt --check`
147
-4. `cargo miri test -p justapi-core`
148
-5. `pytest` (Python 3.12 + free-threaded 3.14t)
149
-6. `cargo audit`
150
-7. Fuzz tests (7 targets, 60s each)
147
+4. `cargo deny check` (advisories, bans, licenses, sources)
148
+5. `cargo miri test -p justapi-core` (nightly)
149
+6. Build wheels for 6 targets (linux x86_64/aarch64, musl, macOS x86_64/aarch64, Windows x64)
150
+7. `pytest` after wheel build (Python 3.12 + free-threaded 3.14t)
151
+8. Publish to PyPI via OIDC trusted publishing (on tagged releases)
152
+
153
+On release, `.github/workflows/publish.yml` handles the standalone publish matrix.
151
154
152
155
## See Also
153
156
154
157
▼docs_site/src/content/docs/getting-started/installation.md
+9-4
23
23
pip install "justapi[full]"
24
24
```
25
25
26
-## Install via uv
26
+## Install via uv (recommended)
27
27
28
28
[uv](https://docs.astral.sh/uv/) is a fast Python package manager written in Rust. Install JustAPI with uv:
29
29
55
55
56
56
```bash
57
57
python -c "import justapi; print(justapi.__version__)"
58
-# Output: 2.0.0
58
+# Output: 2.0.8
59
59
```
60
60
61
61
## Install CLI Tooling (`justapi-cli`)
68
68
69
69
# Verify
70
70
justapi --version
71
-# Output: justapi 2.0.0
71
+# Output: justapi 2.0.8
72
72
```
73
73
74
74
## Docker
79
79
docker pull ghcr.io/justapi/justapi:latest
80
80
```
81
81
82
-Or use the multi-stage `Dockerfile` in the repository root for custom builds.
82
+Or build from the multi-stage `Dockerfile` in the repository root — the Dockerfile uses `uv` for fast, reproducible pip installs:
83
+
84
+```bash
85
+docker build -t justapi-app .
86
+docker run -p 8000:8000 justapi-app
87
+```
83
88
84
89
## Build from Source
85
90
86
91