Skip to content

Loghic/ProcForge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opm_semestral_project

A modular Rust implementation of Object-Process Methodology (OPM, ISO 19450) with Petri-net simulation. Designed to replace clunky existing tools with something lightweight that runs on the desktop, in the browser (via WASM), or from the command line.

Why?

OPCloud (the canonical OPM tool) is finicky, Chrome-only, and breaks more often than not. Existing open-source attempts are abandoned. This project is built as a semester project for FJFI ČVUT, with the goal of producing a small, modular, simulatable OPM editor.

Features

Feature Status
OPL parser (Dori-style syntax, pest grammar) ✅ done
Auto-layout via Graphviz dot ✅ done
SVG renderer with token visualization ✅ done
Petri-net simulation (single-step + run, seeded RNG) ✅ done
GIF export ✅ done
Desktop UI (egui / eframe) ✅ done
Hierarchical OPDs (P zooms into …) ✅ done
Live reload of diagram on OPL edit (debounced) ✅ done
PNG / SVG / GIF export from the desktop ✅ done
Web (WASM) 🚧 stub
Vector painter for crisp zoom + click selection 📝 planned
GitHub Actions CI 📝 planned

See TODO.md for the full task tracker and per-phase notes.

Architecture

                          ┌─────────────────────────────────┐
                          │             opm-core            │
                          │  (library, pure Rust, no_std-ish)│
                          │                                 │
                          │   model   parser   layout       │
                          │   render  petri    export       │
                          └─────────────────────────────────┘
                                │           │           │
                  ┌─────────────┘           │           └─────────────┐
                  │                         │                         │
            ┌──────────┐              ┌──────────┐              ┌──────────┐
            │ opm-cli  │              │opm-desktop│              │ opm-web  │
            │  clap    │              │ egui/efr. │              │ wasm-bg  │
            └──────────┘              └──────────┘              └──────────┘

opm-core is the only crate that contains business logic. The three frontends are thin shells.

Quick start

# Sanity check (does it build?)
cargo build --workspace

# Parse a .opl file
cargo run -p opm-cli -- parse examples/ceramic-workshop.opl

# Render static SVG
cargo run -p opm-cli -- layout examples/ceramic-workshop.opl -o diagram.svg

# Simulate and produce GIF
cargo run -p opm-cli -- simulate examples/ceramic-workshop.opl -o sim.gif

# Desktop GUI (once built)
cargo run -p opm-desktop

External requirements: Graphviz dot on $PATH (used for auto-layout).

Example

The canonical example is examples/ceramic-workshop.opl — an OPM model of a ceramic workshop with reservations, production (designing → shaping → drying → firing → glazing → second firing → pickup), inventory management, and drink sales.

Project structure

opm_semestral_project/
├── Cargo.toml                    # workspace
├── crates/
│   ├── opm-core/                 # the library
│   ├── opm-cli/                  # command-line interface
│   ├── opm-desktop/              # egui desktop app
│   └── opm-web/                  # WASM library + frontend
├── docs/                         # architecture & format docs
├── examples/                     # sample .opl files
├── CLAUDE.md                     # AI agent instructions
├── TODO.md                       # task tracker
└── README.md                     # this file

Author

Matěj Michálek — FJFI ČVUT, semester project, 2026.

License

Not yet decided — likely MIT or Apache-2.0 dual.

Releases

No releases published

Packages

 
 
 

Contributors

Languages