Self-hosted emergence-engineering/pcbjam (browser KiCad WASM) — CMMS embed fork. Upstream tracked as remote "upstream".
  • TypeScript 49.1%
  • C++ 36%
  • Shell 4.2%
  • C 2.9%
  • JavaScript 2.6%
  • Other 5.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Viktor Vaczi 2d7c26feac Initial project setup for KiCad WebAssembly port
- Add KiCad fork as git submodule
- Create project structure (patches, stubs, cmake, scripts, core, docs)
- Add knowledge base and implementation plan documentation
- Add README with project overview and goals

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 10:46:44 +01:00
docs Initial project setup for KiCad WebAssembly port 2025-11-26 10:46:44 +01:00
kicad@4bfed3f174 Initial project setup for KiCad WebAssembly port 2025-11-26 10:46:44 +01:00
.gitignore Initial project setup for KiCad WebAssembly port 2025-11-26 10:46:44 +01:00
.gitmodules Initial project setup for KiCad WebAssembly port 2025-11-26 10:46:44 +01:00
README.md Initial project setup for KiCad WebAssembly port 2025-11-26 10:46:44 +01:00

KiCad WebAssembly Port

Experimental project to run KiCad's core logic in WebAssembly.

Project Structure

kicad-wasm/
├── kicad/          # KiCad source (git submodule)
├── patches/        # Patches to make deps optional
├── stubs/          # Stub headers for disabled deps
├── cmake/          # CMake modules
├── scripts/        # Build and maintenance scripts
├── core/           # Extracted core library for Wasm
└── docs/           # Knowledge base and plans

Goals

  1. Phase 1: Build KiCad with optional deps disabled (curl, git, OCC, ngspice)
  2. Phase 2: Extract core computation code as standalone library
  3. Phase 3: Compile core to WebAssembly
  4. Phase 4: Run native GUI with Wasm worker backend
  5. Phase 5: Browser-based UI

Documentation

Design Decisions

  • Memory: Serialize/deserialize on every operation (proof of concept)
  • Threading: Web Workers (browser-first design)
  • Updates: Full board re-serialization

Getting Started

# Clone with submodules
git clone --recursive <repo-url>

# Apply patches
./scripts/prepare.sh

# Build with optional deps disabled
mkdir build && cd build
cmake .. -DKICAD_USE_CURL=OFF -DKICAD_USE_GIT=OFF -DKICAD_USE_OCC=OFF
make -j$(nproc)

License

KiCad is GPL-3.0. This wrapper/tooling follows the same license.