Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Bug report
description: Report a reproducible modeling, persistence, rendering, or export defect.
title: "[Bug]: "
labels: [bug]
body:
- type: markdown
attributes:
value: Do not attach confidential project files or client information to a public issue.
- type: input
id: build
attributes:
label: FutolStructure build
placeholder: v3.16.115
validations:
required: true
- type: dropdown
id: area
attributes:
label: Affected area
options:
- Project save/load or recovery
- Plan geometry or annotations
- Tributary loads or schedules
- 3D rendering
- DXF export
- IFC export
- STAAD export
- ETABS or SAFE handoff
- Other
validations:
required: true
- type: textarea
id: steps
attributes:
label: Reproduction steps
description: Use a minimal non-confidential model when possible.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected and actual result
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Screenshots or diagnostics
description: Remove names, addresses, credentials, and other private data.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/michaelfutol/futolstructure/security/advisories/new
about: Report security issues privately. Do not disclose them in a public issue.
14 changes: 14 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## Summary

Describe the engineering behavior changed and why.

## Validation

- [ ] `node v3/tools/check-fs.js --no-browser`
- [ ] Full browser smoke completed when geometry, persistence, 3D, or exports changed
- [ ] No private project, solver, credential, or client data is included
- [ ] Claims and warnings match the validated scope

## Evidence

List the model, counts, screenshots, or solver audit used to verify the change.
35 changes: 35 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Validate FutolStructure

on:
push:
branches: [main]
pull_request:
branches: [main]

permissions:
contents: read

concurrency:
group: validate-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
smoke:
name: Static and engine smoke
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Validate application source and engine
run: node v3/tools/check-fs.js --no-browser

- name: Validate deployment configuration
run: |
node -e "JSON.parse(require('fs').readFileSync('vercel.json', 'utf8')); console.log('vercel.json: valid')"
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,25 @@ node_modules/
.vscode/
*.swp
*.swo
.vercel/

# Temporary files
*.tmp
*.temp

# FutolStructure private project and solver/export artifacts
*.fstr
*.edb
*.e2k
*.std
*.sdb
*.ifc
*.dxf
*.xlsx
output/
tmp/

# Local personal/recovery notes
kira_diary/

.vercel
45 changes: 45 additions & 0 deletions .vercelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Development and recovery files not needed by the hosted static app
.git
.gitignore
.github/
.vercel
.env
.env.*
docs/
README.md
CONTRIBUTING.md
CODE_OF_CONDUCT.md
SECURITY.md
LICENSE
kira_diary/
output/
tmp/

# Local scripts and generated repair tools
*.py
inject_*.py
repair_*.py
upgrade_*.py
fix_rendering.py

# Internal logs/tests
v3/_logs/
v3/tools/

# Private engineering/project artifacts
*.fstr
*.edb
*.e2k
*.std
*.sdb
*.ifc
*.dxf
*.xlsx
*.pdf
*.docx

# Local OS/editor noise
.vscode/
.idea/
Thumbs.db
.DS_Store
24 changes: 24 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Code of Conduct

## Our Standard

Contributors and maintainers are expected to communicate professionally,
respect differing levels of experience, and keep technical disagreement
focused on evidence, safety, and project outcomes.

Unacceptable behavior includes harassment, discriminatory language, personal
attacks, deliberate disclosure of private project data, and publication of
security details before coordinated remediation.

## Engineering Discussions

Structural-engineering claims should identify assumptions, governing scope,
and validation evidence. Review comments may be direct, but must remain
specific, respectful, and actionable. Safety-critical concerns take priority
over schedule or presentation.

## Enforcement

Report conduct or security concerns through the repository's private
vulnerability-reporting channel. Maintainers may edit, remove, or reject
contributions and interactions that violate this policy.
34 changes: 34 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Contributing to FutolStructure

FutolStructure accepts focused bug reports and carefully scoped pull requests.
Before proposing code, open an issue that explains the engineering behavior,
the affected model or export surface, and the expected result.

## Development Rules

- Preserve `.fstr` backward compatibility or document and test a migration.
- Use the active floor-aware geometry and member-state helpers; do not revive
legacy global flags as a second source of truth.
- Keep analysis, schedules, 3D geometry, and exports coordinated from the same
active-model payload.
- Do not describe preliminary calculations as final design or solver truth.
- Do not commit project files, native solver files, credentials, client data,
or generated validation artifacts.
- Keep unrelated formatting and refactoring out of behavioral fixes.

## Validation

Run the local smoke check before opening a pull request:

```bash
node v3/tools/check-fs.js --no-browser
```

For geometry, persistence, rendering, or export changes, also run:

```bash
node v3/tools/check-fs.js
```

Describe the tested model, affected counts, and any validation boundary that
remains unverified. Pull requests must pass the repository validation workflow.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FutolStructure Source License

Copyright (c) 2026 Michael Futol. All rights reserved.

The source code, documentation, visual identity, and other materials in this
repository are made publicly viewable for evaluation and portfolio purposes.
No permission is granted to copy, modify, distribute, sublicense, sell, host,
or create derivative works from these materials without prior written
permission from the copyright owner.

This software is provided "AS IS", without warranty of any kind, express or
implied, including but not limited to warranties of merchantability, fitness
for a particular purpose, accuracy, code compliance, structural adequacy, or
noninfringement. In no event shall the copyright owner or contributors be
liable for any claim, damages, or other liability arising from use of the
software or its outputs.

FutolStructure is an engineering decision-support and model-preparation tool.
Its output must be reviewed, completed, and accepted by the responsible
licensed engineer before it is used for construction, permitting, or safety-
critical decisions.
Loading
Loading