Explore, compare, and assign pile configurations for structural load points.
Try Pile Plan Studio in your browser
Pile Plan Studio is an open-source engineering application for reviewing pile options and assembling a practical pile plan. It brings structural load points, CPTs, foundation advice, utilization, pile costs, and configuration choices together in one interactive plan.
The engineering core is written in Rust. The same calculation model runs natively in the Tauri desktop application and through WebAssembly in the browser.
Warning
Pile Plan Studio is currently a public alpha. Engineering results must be verified by a qualified professional. The application supports engineering decisions but does not replace responsibility for the foundation design.
- Inspect valid, insufficient, and missing pile configurations for every load point.
- Select CPTs automatically using quadrant or maximum-angle rules.
- Override the CPT selection manually for one or multiple load points.
- Refresh individual imported sources while retaining matched pile assignments and CPT selections.
- Inspect normalized imported load points, CPTs, and foundation advice in sortable, filterable source tables from the project explorer.
- Compare utilization, foundation resistance, and estimated cost.
- Adjust symbol size, preferred utilization range, and the foreground object type directly from the View ribbon.
- Assign one pile configuration to one or multiple selected load points.
- Lock load points per pile plan so their assignments remain unchanged during selection and optimization workflows.
- Keep multiple named pile-plan variants in one project and compare their estimated costs.
- Undo and redo project changes, with a concise description of the restored assignments, settings, or pile-plan variant.
- Recover the latest browser project automatically after an accidental refresh or interrupted session.
- Select load points by pile size or tip level from the plan legend, and edit which configurations are available through the legend editor.
- Personalize the project legend with manual colors, 54 technical symbol and fill combinations, six automatic color schemes, and reversible mappings between pile size, tip level, shape, and color.
- Run a greedy optimization with limits on sizes, tip levels, and complete configurations.
- Save project data, settings, pile assignments, and CPT choices in IFCPP.
- Export the active pile plan and selected CPT identifiers to Excel or CSV, using the pile-plan name as the file name.
- Import pile assignments from the standard Pile Plan Studio table or legacy
Vergrendeld.xlsxfiles as a new named pile plan, with validated ID and coordinate matching. - Resize both the project explorer and properties panel to suit the current workflow.
- Save application-wide language, theme, interface scale, workspace layout, default currency, and an optional reusable pile-cost catalog separately from project-owned settings.
- Maintain project-specific pile-size cost rows, including custom sizes, and explicitly save or load a personal default catalog.
- Use the same Rust calculation core in the browser and Windows desktop app.
Import load points, CPT coordinates, and foundation advice from separate CSV or XLSX sources and assign each file to its project role.
Set the maximum CPT distance, choose the selection algorithm, apply settings globally or locally, and override the resulting selection when engineering judgement requires it.
The current greedy optimizer searches for a lower-cost plan while respecting limits on the number of sizes, tip levels, and complete configurations.
The live browser demo opens directly with the sample project and is the quickest way to explore the application.
The latest signed Windows x64 installer is available on the GitHub Releases page. The browser and desktop editions use the same Rust calculation core.
See the release notes for the changes in each alpha.
Pile Plan Studio imports three source roles:
| Role | Required content | Formats |
|---|---|---|
| Load points | ID, X, Y, FEd | CSV, XLSX |
| CPTs | ID, X, Y | CSV, XLSX |
| Foundation advice | CPT ID, pile tip level, pile size, Rc;net;d | CSV, XLSX |
In the current version, the standard tabular profile requires these columns to appear in the order shown in the table. The importer currently reads columns by position rather than by header name:
- load points:
ID,X,Y, FEd; - CPTs:
ID,X,Y; - foundation advice:
CPT ID,pile tip level,pile size, Rc;net;d.
One header row is optional, and additional columns after the required columns are allowed. The RFEM load-point profile is the exception: it detects the required RFEM columns by their headers. When those headers cannot be detected, it falls back to the traditional RFEM layout with nodes on the first worksheet and nodal reactions on the second.
The source files may be selected together and assigned to their roles before
import. Load points can use either the standard tabular profile or the
automatically detected RFEM Excel export profile. The RFEM profile joins node
coordinates and reactions by node number and currently interprets the design
load from the minimum PZ envelope (Min PZ', Min PZ, or Min).
Imported data, source profiles, project settings, selected piles, and manual
CPT choices are stored in an .ifcpp project file.
When creating a project from source files, the pile head level is required. The project currency defaults to the user's application preference. Changing a currency code relabels costs; Pile Plan Studio does not perform currency conversion.
Use File > Import pile plan to add an Excel or CSV table as a new pile plan
inside the active project. The imported plan is named after the source file and
opened immediately; existing plans remain unchanged. The Standard table
profile supports both pile assignments and CPT selections. The Legacy profile
supports existing Vergrendeld.xlsx files and imports pile assignments only;
rows that describe more than one pile are skipped with a warning.
Load points are first matched by ID when the imported coordinates agree. If that check fails, Pile Plan Studio falls back to one unique coordinate match. The coordinate tolerance is configurable for this workflow and defaults to 1 mm. Ambiguous, unmatched, or conflicting rows are skipped and reported in the import preview before the project is changed.
- Click a load point to select it.
- Use Shift+click to add or remove a load point from the selection.
- Use Shift+drag on empty viewer space to select load points with a lasso.
- Hover over a marker to inspect its compact information.
- When markers overlap, press Space to cycle through the candidates beneath the pointer before clicking.
- Use Shift+click on a pile size or tip level in the legend to select load points that currently use it.
- Press Escape or click empty viewer space to clear the selection.
In the pile-options table, click a row to assign its configuration. With multiple load points selected, the table shows their common options and applies the chosen configuration to all of them. Column headers support sorting and filtering.
The CPT-selection rules are configurable approximations rather than an objective engineering truth. The greedy optimizer supports decision-making but does not guarantee a globally optimal pile plan.
See Known Alpha Limitations for the complete scope.
| Layer | Technology | Responsibility |
|---|---|---|
| Engineering core | Rust | Project model, import, CPT selection, pile options, costing, optimization |
| Browser core | WebAssembly | Thin interface to the same Rust engineering core |
| Interface | React + TypeScript | Application state, interaction, rendering, and presentation |
| Desktop | Tauri 2 | Native window, file access, and Windows packaging |
Repository layout:
crates/pile-plan-core: engineering domain and calculations;crates/pile-plan-wasm: WebAssembly interface;apps/pile-plan-studio: React application and Tauri desktop shell;sample_project: example IFCPP project and source files;docs: architecture, deployment, screenshots, and limitations.
See Architecture for more detail.
Requirements:
- Node.js 20 or newer;
- current stable Rust;
wasm-pack;- the Tauri prerequisites for desktop builds.
Run the browser development server:
cd apps\pile-plan-studio
npm install
npm run devRun the automated tests:
cargo test --workspace
cd apps\pile-plan-studio
npm testCreate the browser and Windows desktop builds:
cd apps\pile-plan-studio
npm run build
npm run tauri buildSee Deployment for browser hosting and signed release details.
Issues and pull requests are welcome. Keep engineering logic in the Rust core, add focused tests for behavioral changes, and keep browser and desktop behavior on the same project model.
Report bugs and ideas through the GitHub issue tracker.
Development of Pile Plan Studio has been assisted by AI coding tools. Design decisions, engineering requirements, review, and validation remain under human responsibility.
Pile Plan Studio is licensed under the GNU Lesser General Public License v3.0 or later.



