Skip to main content

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: openconstructionerp

That'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:

  1. Starts an embedded PostgreSQL database in your home data folder (no Docker, nothing to install)
  2. Seeds demo data (projects, BOQs, cost catalogues)
  3. Starts the API and UI at http://127.0.0.1:8080
  4. Prints demo login credentials

No config files. No environment variables. It just works.

If openconstructionerp is 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

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openconstructionerp-11.6.0-py3-none-any.whl (57.9 MB view details)

Uploaded Python 3

File details

Details for the file openconstructionerp-11.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openconstructionerp-11.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79009f4500412e33b2f57871e8ea8a83b9514d698dadd15fc426a3115c16b07f
MD5 4f4e71bdee272dae7dfb46484e108d6d
BLAKE2b-256 821d00f14fc88749c1f25296abcd627d619273c153a80ec07683ca37f4a3f95b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page