Skip to main content

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.

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 for the full vision and DESIGN.md for the architecture.

Install

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

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:

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

Quickstart

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.

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.

Documentation

Full docs are in docs/: 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/). 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). SNI clause numbers currently cited from memory are tagged # TODO[ground] pending verification against the standard's text.

License

MIT © 2026 Rifqi D. Panuluh

Metadata

Release files for enjinering 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for enjinering 0.0.1
File Size Uploaded
enjinering-0.0.1.tar.gz 58.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for enjinering 0.0.1
File Interpreter ABI Platform
enjinering-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 89.9 kB

Release files / enjinering-0.0.1.tar.gz

Download URL enjinering-0.0.1.tar.gz
Size 58.0 kB
Tags Source
SHA-256 checksum
How to use checksums
528398aa9614490682da4447a7a68ec40bdbc67c30bafffc1549722e95eae155
BLAKE2b-256 checksum
How to use checksums
ae2b87b87296ac08ff2de6d4fd76b80cc184d2146ebc9b654d6130634bcc7e31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / enjinering-0.0.1-py3-none-any.whl

Download URL enjinering-0.0.1-py3-none-any.whl
Size 31.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27e0803367dd9e0c4ddcf293688fed03d10b89e2b9c0761327cbdf11dcecbbc5
BLAKE2b-256 checksum
How to use checksums
7cba2dbdfb224833ec2884ce91864b769635e4fd588bed4d80e7afd151c64177
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page