Skip to content

Latest commit

 

History

History
92 lines (65 loc) · 3.59 KB

CONTRIBUTING.md

File metadata and controls

92 lines (65 loc) · 3.59 KB

Contributing to Project Igniter

Thanks for your interest! This guide gets you running and explains how changes flow through the codebase.

Prerequisites

Quick setup

# macOS / Linux
git clone https://github.com/vishesh-sachan/Project_Igniter
cd project-installer
bun install
bun run tauri dev

# Windows
#   clone, cd project-installer, bun install, then:
bun run tauri dev

bun run tauri dev compiles the Rust side on first start, then serves the Vite frontend and opens a native desktop window.

Dogfooding: Project Igniter bootstraps its own repo. The setup.sh / setup.ps1 at the repo root are generated by the app itself. Keep them in sync as you change the converter.

Project structure

Area Location
Frontend entry src/main.tsx, src/App.tsx
Pages src/pages/ (ProjectSelection, ProjectOverview, WorkflowBuilder)
Editor components src/features/workflow/components/
Properties panes src/features/properties/components/
Model types src/features/workflow/types/workflow.ts
Tree utils src/features/workflow/utils/workflowUtils.ts
State store src/features/workflow/store/useWorkflowStore.ts
Persistence src/services/workflowService.ts
Script generation src/services/generateScriptsService.ts
Converter src/converter/ (see its README.md)
Rust commands src-tauri/src/

How a change flows

  1. Extend the model in src/features/workflow/types/workflow.ts.
  2. Add editing logic in the tree utilities and store.
  3. For a new step type: add a createStep case in workflowFactory.ts, a converter in src/converter/steps/, wire it into bash.ts / powershell.ts, and add a properties panel.
  4. Add/adjust the UI in the appropriate feature or page.
  5. Persistence lives in workflowService.ts; generation in getScriptsService.ts.

Conventions

  • Immutability — editing utilities return new objects; they never mutate in place.
  • Pure converter — src/converter/ does not touch the filesystem. It returns { path, content } pairs; the caller performs I/O.
  • Schema changes — index.schema in workflows.json is bumped only on Generate Scripts.
  • Follow the existing 2-space indentation and use import (type-only) for types.

Checking your work

bun run build    # tsc && vite build

Before opening a PR, generate scripts for a scratch project and run bash setup.sh to confirm the emitted code behaves.

Submitting a change

  1. Create a branch: git checkout -b feat/your-change.
  2. Keep the data path consistent: model → converter → orchestrator.
  3. Verify with bun run build and a manual script run.
  4. Commit with a concise, imperative message describing the user-visible change.
  5. Push and open a pull request against main.

For schema-level or converter-shaping changes, open an issue first to discuss migration impact.

Where to start

Good first contributions:

  • Fixing a step converter bug (see src/converter/steps/).
  • Improving error/drift messaging in the generated scripts.
  • Adding a property or validator to a step's properties panel.
  • New docs/ guides or ADRs.

Documentation

In-depth architecture, guides, reference, and patterns live in docs/. Keep docs in sync with any behavior change.

Code of Conduct

Please read and follow our Code of Conduct. Everyone is expected to keep the community respectful and constructive.