Open-source construction cost estimation, multi-currency BOQ, AI vector matching, CAD/BIM takeoff without IfcOpenShell, resource-based cost DB import with example templates, 48 regional catalogues, 27 languages. AGPL-3.0. After install, run: openconstructionerp
Project description
OpenConstructionERP
Open-source construction cost estimation: BOQ, cost matching, CAD/BIM takeoff.
After
pip install, type one command:openconstructionerpThat's the only thing you need to remember. It prints a welcome, asks you to press
o+ Enter to open the app in your browser, then starts the server at http://127.0.0.1:8080 (and shows a login).
Install
pip install openconstructionerp
Python 3.12+ required. No Docker, no separate PostgreSQL, no Redis. An embedded PostgreSQL database is bundled and starts on its own.
First run
openconstructionerp
This single command:
- Starts an embedded PostgreSQL database in your home data folder (no Docker, nothing to install)
- Seeds demo data (projects, BOQs, cost catalogues)
- Starts the API and UI at http://127.0.0.1:8080
- Prints demo login credentials
No config files. No environment variables. It just works.
If
openconstructionerpis not found right after install, pip most likely put the launcher in a Scripts folder that is not on your PATH (this is common on Windows). Run it through Python instead. This works from any folder and is the exact same app:python -m openconstructionerp
Subsequent runs
openconstructionerp
Same command every time. Your data persists between runs.
Other commands
openconstructionerp init-db # create the local database
openconstructionerp serve # start the server
openconstructionerp doctor # health check if anything looks wrong
openconstructionerp welcome # re-print the welcome screen
CLI reference
openconstructionerp serve [--host HOST] [--port PORT] [--data-dir DIR] [--open] [--quiet]
openconstructionerp init-db [--data-dir DIR] # Create the local database + data dirs
openconstructionerp doctor [--port PORT] # Run installation health checks
openconstructionerp seed [--demo] # Load demo project data
openconstructionerp version # Show version
What you get
- BOQ editor: hierarchical bill of quantities with assemblies, formulas, multi-currency
- Cost database: import your own rates (Excel/CSV) or use the bundled example templates
- Cost matching: vector search matches line items to historical cost data
- CAD/BIM takeoff: quantities from DWG/DXF and IFC/RVT (via DDC, no IfcOpenShell)
- 4D / 5D: cost-loaded schedule, earned value (SPI/CPI), cash-flow, what-if scenarios
- Validation: DIN 276, GAEB, NRM, MasterFormat rule packs flag issues at import
- Reporting: PDF/Excel exports, dashboards, BCF issue exchange
Configuration (optional)
Everything works with zero config. To customise, pass flags or set environment variables:
openconstructionerp serve --port 9000 --data-dir /var/lib/oce
# Or via environment:
DATABASE_URL=postgresql+asyncpg://user:pass@host/db # Use an external PostgreSQL instead of the embedded one
OE_CLI_PORT=9000 # Change the port
OE_CLI_DATA_DIR=/var/lib/oce # Change the data location
Development
The backend is a Python 3.12+ FastAPI application (Pydantic v2, async SQLAlchemy). PostgreSQL is the only supported database. For local development an embedded PostgreSQL (pixeltable-pgserver) runs in-process, so there is no Docker and no separate database server to install for a basic run. SQLite is not supported and was removed in v6.6.0. Leave DATABASE_URL unset to use the embedded server, or set it to point at an external PostgreSQL.
Set up
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
Run the dev server
The simplest way is the CLI, which starts the embedded database, seeds demo data, and serves the API together with the built UI:
openconstructionerp serve --port 8080
To run just the API with autoreload against the app factory:
uvicorn app.main:create_app --factory --reload --port 8000
Interactive API docs are then at http://localhost:8000/api/docs and the raw OpenAPI schema at http://localhost:8000/api/openapi.json. See docs/api/README.md for the full HTTP API guide.
Tests
cd backend
pytest # whole suite
pytest tests/unit # unit tests only
pytest -k boq # a subset by keyword
Tests run with pytest and pytest-asyncio (asyncio_mode = auto). The suite runs serially against one PostgreSQL database that the test harness provisions when the tests load.
Formatting and linting
Code style is enforced with ruff (line length 120, target py312). Format and lint before committing:
ruff format .
ruff check .
The lint rule set is E, F, W, I, N, UP, B, A, C4, PT, RET, SIM. The exact configuration lives in backend/pyproject.toml.
Links
- Docs: https://openconstructionerp.com
- Issues: https://github.com/DataDrivenConstruction/OpenConstructionERP/issues
- Source: https://github.com/DataDrivenConstruction/OpenConstructionERP
License
AGPL-3.0-or-later. Commercial licensing available, contact info@datadrivenconstruction.io
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openconstructionerp-11.7.1-py3-none-any.whl.
File metadata
- Download URL: openconstructionerp-11.7.1-py3-none-any.whl
- Upload date:
- Size: 57.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fba72b3ca6bcf393dcebed318173eeb56e01f3065bbde40e71afe963b2acec2
|
|
| MD5 |
d8322862f190a540536cfcc1925cd734
|
|
| BLAKE2b-256 |
6d587241f5942a3a9dfac15c7fcc1642d1243104b6181f1945aceb8da0278feb
|