Skip to the content
PCBKitNew board
2 layers25 × 25 mmVIK Solenoid, the printed circuit board in 3D

BoardStudio is an offline-capable keyboard design workbench built with Dioxus and Rust. It combines layouts, PCB preparation, keymaps, keycaps, mechanical assemblies and portable exports.

Size
25 × 25 mm
Copper layers
2
Thickness
1.6 mm
Parts
13
Nets
14
Pads
34
Tracks, vias
50, 6
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
20 Sep 2026
Updated
1 Nov 2026

Overview

VIK Solenoid is an open-source printed circuit board by runinit, from the runinit/boardstudio repository on GitHub. It is a 2-layer board of 25 × 25 mm with 13 parts on 14 nets, routed with 50 tracks and 6 vias.

It is built around the TIP120. Its parts include 3 connectors, 1 resistor, 1 diode and 1 transistor.

Main components

1

README

README.md

BoardStudio

BoardStudio is an offline-capable keyboard design workbench built with Dioxus and Rust. It combines layouts, PCB preparation, keymaps, keycaps, mechanical assemblies and portable exports. KiCad and CAD tools handle downstream routing and fabrication.

Development

Install the Rust version in rust-toolchain.toml, wasm-pack 0.15.0, Dioxus CLI 0.7.10 and Python 3.11+. No Node, npm or pnpm is needed. KiCad CLI 10 is required for PCB integration checks. Browser tests require Chrome/Chromium and its compatible ChromeDriver.

sh
python3 scripts/dev-web.py

The development server runs at http://127.0.0.1:8080/. It builds missing runtime providers on the first run, then Dioxus watches page edits in the working tree. Edits that only change rsx! markup are hot-reloaded without recompiling; other Rust edits rebuild the page. The page builds with the wasm-dev profile in Cargo.toml, which keeps line tables only; set debug = true there to inspect variables in the browser debugger, at roughly twice the rebuild time. Commits, agent registration and migration records are not required. After changing a worker, bundled example or CAD provider, run python3 scripts/build-web.py --providers-only to regenerate those assets before testing the page.

Build and preview

sh
python3 scripts/build-web.py
python3 scripts/serve-web.py web/target/site 4173

The build creates web/target/site/site-subpath/boardstudio, the /boardstudio/ route GitHub Pages publishes. Add --routes subpath,root to also package the root route in web/target/site/site-root. Preview serves the built routes at http://127.0.0.1:4173/ (redirecting / to /boardstudio/ when only the subpath was built) with the isolation headers required by browser workers. Production build and preview are separate from the watched development loop. Development uses an online server; use the production preview to test offline behavior.

The normal Dioxus service worker supports offline use and application updates. React, its deployment handoff and rollback tooling are retired. Version 1 projects migrate to document format version 2 when loaded; current projects save locally and round-trip through .boardstudio exports. Existing user files are never erased by build or cleanup commands.

Checks

sh
python3 scripts/check.py

This runs documentation link checks, build and content tool tests, rustfmt and Clippy, native Rust and provider tests, WASM page compilation, release packaging, native/WASM boundary checks and mounted headless browser tests. Name steps (python3 scripts/check.py --list) to run only the affected checks during development. The browser runner checks that every listed test actually executes, grouped into broad batches to avoid repeated WASM/browser startup costs. Each presentation crate under web/crates/ runs its own browser tests (wasm-pack test --headless --chrome web/crates/<crate> --lib); the Case workspace, panel and setup guide tests run separately because their mounted fixtures need an isolated DOM. Each batch has a bounded two-minute timeout, overridable with WASM_BINDGEN_TEST_TIMEOUT. A native test run alone does not compile WASM-only presentation code. Browser setup installs the locked wasm-bindgen runner before executing tests.

Source layout

DirectoryPurpose
web/Dioxus UI, browser host, workers and offline behavior
application/Accepted state, interactions and scoped operations
core/Document engine, geometry, artifacts and archives
renderer/, cad/Rendering and CAD providers
contracts/Shared Rust boundary types
footprints/Built-in Rust footprint generators, normalization and model references
ergogen/library/Vendored models, source manifests and attribution
catalogue/, content/Components, models, licences and bundled examples
core/examples/demo_projects/, content/layouts/Native bundled-project recipes and measured source layouts
scripts/Build, content preparation and checks

The Rust crates share one Cargo workspace (root Cargo.toml, Cargo.lock and target/), so dependencies compile once per profile and target. cad/wasm and cad/step-oracle stay outside it because they build against the pinned WASI and native OCCT toolchains.

The repository has no TypeScript or Node dependency; Python scripts handle build, content preparation and checks. Footprint generation runs in Rust inside Core and the page. User-supplied JavaScript generators are not executed. Bundled model export includes used assets; missing or unsupported model paths fail explicitly.

See architecture, domain vocabulary, component onboarding and deferred issues. Migration history is preserved in Git at 323967ff; it imposes no development or acceptance process on this branch. The documentation index links feature references, investigations, design decisions and historical research.

Parts

13
QtyValueFootprintReferences
2,
11N4001Diode_SMD:D_SOD-123FD1
1Conn_01x02_FemaleConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1
1Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1LOGOLOGOG***
1R2.2Resistor_SMD:R_1206_3216MetricR1
1TIP120Package_TO_SOT_SMD:TO-252-2Q1
1vik-module-connectorvik:vik-module-connector-horizontalJ2

The 9 most common of 13 parts.

Questions

How big is the VIK Solenoid PCB?

It measures 25 × 25 mm and has 2 copper layers, 1.6 mm thick.

What parts does the VIK Solenoid use?

13 parts, built around the TIP120. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the VIK Solenoid KiCad files?

From the runinit/boardstudio repository on GitHub, at the commit this page was made from: the board is catalogue/modules/sources/Aleblazer-VIK-Solenoid/ExtraSmallVIK/VIK-Solenoid.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the VIK Solenoid design in my own project?

Its repository states no licence, so its author keeps all rights: ask runinit before reusing the design.

Similar boards

  • 2 layers364.4 × 167.3 mmRedherring, the printed circuit board in 3D

    Redherring

    dcpedit/redherring

    Red Herring Keyboard PCB and case files

    226 parts253CC-BY-4.0
  • 2 layers148.8 × 132.2 mmUsbflashprog, the printed circuit board in 3D

    Usbflashprog

    robsonsmartins/usbflashprog

    A memory device programmer (Flash/EPROM/E2PROM) board and software, connected to PC by USB port.

    125 parts36
  • 2 layers489.6 × 170.7 mmMission control, the printed circuit board in 3D

    Mission control

    dcpedit/mission-control

    Modern replacement PCB for the IBM Model M 122

    286 parts31CC-BY-4.0
  • 2 layers168 × 123 mmV2 - 2, the printed circuit board in 3D

    V2 - 2

    RudgeLab/FluoPi

    Code and teaching materials for UC/BackyardBrains raspberry pi "macro" scope.

    131 parts26
  • 2 layersCatozap, the printed circuit board in 3D

    Catozap

    jones139/catocam

    Uses a custom trained YoloV8 model on a Raspberry Pi to Detect Cats in CCTV images and Unleash a Cat Deterrent

    3 parts18GPL-3.0
  • 2 layers32.5 × 21.2 mmTaptap, the printed circuit board in 3D

    Taptap

    dcpedit/taptap

    TapTap is a solenoid breakout board for those who are interested in adding a solenoid to their existing project. All you need are the following components, and an extra data pin on your microcontroller.

    9 parts13CC-BY-4.0
  • 2 layers323.8 × 169.8 mmAegis, the printed circuit board in 3D

    Aegis

    Koumbaya/Aegis

    unibody CRBKD-compatible PCB and cases.

    110 parts12
  • 2 layers57.1 × 102.9 mmSynthwave, the printed circuit board in 3D

    Synthwave

    alexose/synthwave

    An open-source experiment in carbon removal based on the electrochemical pH swing of seawater.

    70 parts10CERN-OHL-P-2.0