Metadata-Version: 2.5
Name: enjinering
Version: 0.0.1
Summary: Open-source, data-agnostic reinforced concrete design library (SNI)
Author: Rifqi D. Panuluh
License: MIT
License-File: LICENSE
Keywords: civil-engineering,design,reinforced-concrete,sni,structural-engineering
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.11
Provides-Extra: dev
Requires-Dist: handcalcs>=1.10; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Provides-Extra: render
Requires-Dist: handcalcs>=1.10; extra == 'render'
Description-Content-Type: text/markdown

# enjinering

**Open-source, data-agnostic reinforced concrete design library (SNI), in Python.**

enjinering turns factored structural demands into a fully-traceable reinforcement design — every
intermediate value, every code check, every formula — and exposes it as a lossless, serializable
result tree with optional LaTeX rendering. It's a transparent, programmable alternative to closed
calculation software, with the Indonesian SNI codes as a first-class target.

> **Status: alpha.** The architecture is stable; coverage is growing. Implemented today: **beams**
> (flexure, shear, torsion) and **columns** (P-M ratio, confinement). Calculations are validated
> against a real engineering report — see [How it's validated](#how-its-validated).

## Why

Reinforcement design is mostly locked behind GUIs and licensed spreadsheets, even though the codes
(SNI, ACI) are public. enjinering puts that logic in open, auditable Python: no license, every formula
visible, and rich data out so other tools (optimizers, reporters, BIM) can build on it. See
[GOALS.md](GOALS.md) for the full vision and [DESIGN.md](DESIGN.md) for the architecture.

## Install

Not yet on PyPI — run from source. Tooling lives in a conda env named `project-syfl`:

```bash
conda run -n project-syfl python -m pytest -q        # run the test suite
```

The **core has no runtime dependencies**. `handcalcs` is optional, needed only for LaTeX rendering:

```bash
conda run -n project-syfl pip install handcalcs      # or: pip install "enjinering[render]" once packaged
```

## Quickstart

```python
from enjinering import BeamDesigner, Material, RectSection

beam = BeamDesigner(
    material=Material(fc=30, fy_long=420),        # MPa
    section=RectSection(b=300, h=600, cover=40),  # mm
)
result = beam.design(
    "B2", Mu_neg_kNm=248.96, Mu_pos_kNm=143.29,
    Vu_kN=177.57, Tu_kNm=2.57, wu_kN_m=32.214,
    length_mm=7000, support_width_mm=300,
)

print(result.passed)                       # True
print(result.passes[0].conclusion.label()) # '5 D19'
result.to_dict()                           # lossless, JSON-serializable tree
```

More — JSON/CSV/BIM-schedule/Markdown/KaTeX post-processing — in [docs/examples](docs/examples/).

## What's implemented

| Element | Passes |
|---------|--------|
| Beam | flexure (±), shear (capacity design), torsion |
| Column | P-M demand/capacity ratio, plastic-hinge confinement |
| Output | lossless result tree, JSON, optional handcalcs LaTeX render |

Roadmap (column shear/SCWB, P-M interaction surface, slabs, foundations, I/O adapters) is tracked in
[DESIGN.md §11](DESIGN.md).

## Documentation

Full docs are in [docs/](docs/README.md): getting started, concepts, API reference, examples, and a
maintainer's guide.

## How it's validated

Every pass is checked against a real reinforced-concrete design report (a 3-story RC campus building;
the structured source is under [`wiki/`](wiki/)). Where the report contains an arithmetic slip, enjinering
implements the **code-correct** method and documents the divergence (e.g. flexural sizing uses a
single strength-reduction factor φ — see [DESIGN.md §10](DESIGN.md)). SNI clause numbers currently
cited from memory are tagged `# TODO[ground]` pending verification against the standard's text.

## License

[MIT](LICENSE) © 2026 Rifqi D. Panuluh
