No description
  • Rust 85.4%
  • TypeScript 4%
  • C 3.2%
  • CSS 1.9%
  • JavaScript 1.3%
  • Other 4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-26 22:06:00 +01:00
.cargo General: Staticly link with vcruntime usage of rust std on Windows 2026-08-02 01:15:10 +02:00
.github/workflows plaatcraft-wii: Port PlaatCraft to the Wii with the shared engine 2026-10-26 22:05:58 +01:00
apps plaatnotes: Make the note card pin test selector unambiguous 2026-10-26 20:22:23 +01:00
docs General: Make VSCode config a bit more clear 2026-09-29 03:34:24 +02:00
examples xtask: Build and install Homebrew Channel bundles of the Wii programs 2026-10-26 22:06:00 +01:00
games xtask: Build and install Homebrew Channel bundles of the Wii programs 2026-10-26 22:06:00 +01:00
lib gxtexconv: Move the texture converter into the Wii toolchain 2026-10-26 21:30:12 +01:00
tools xtask: Build and install Homebrew Channel bundles of the Wii programs 2026-10-26 22:06:00 +01:00
.clang-format ccontinue: Intergrate into monorepo 2026-03-04 09:01:43 +01:00
.dockerignore General: Make .dockerignore better 2026-07-02 10:33:54 +02:00
.editorconfig General: Replace Makefile with shell script to be more portable 2025-01-31 17:38:15 +01:00
.gitattributes Move libs to own crates and setup examples, ci, workspace 2024-12-03 17:51:45 +01:00
.gitignore bcanvas: Save the headless example output as frame.png 2026-10-16 19:39:50 +02:00
.npmrc General: Enforce single node_modules folder in npm workspace 2026-07-17 10:08:06 +02:00
.prettierignore plaatcraft: Replace legacy C games with a Rust voxel sandbox 2026-10-25 18:28:06 +01:00
.prettierrc.json General: Normalize SVG asset formatting 2026-09-07 18:13:27 +02:00
.swift-format macos-examples: Remove prebuilt binaries and share repository configuration 2026-10-16 19:47:06 +02:00
Cargo.lock plaatcraft: Extract the platform independent part of PlaatCraft 2026-10-26 22:05:58 +01:00
Cargo.toml plaatcraft-wii: Port PlaatCraft to the Wii with the shared engine 2026-10-26 22:05:58 +01:00
clippy.toml General: Deny unwrap usage 2024-12-19 03:56:45 +01:00
deny.toml native-tls: Use Graviola for vendored TLS 2026-09-17 07:56:17 +02:00
index.html General: Rename repository branding to Bron 2026-10-16 18:56:17 +02:00
LICENSE empires: Add SDL2 builds and configurable game data paths 2026-10-16 20:12:04 +02:00
meta.sh General: Moved from Bash meta.sh script to a Rust cargo xtask system 2026-07-15 08:27:17 +02:00
nextest.toml General: Don't retry Rust unit tests 2026-08-24 18:44:04 +02:00
package-lock.json plaatnotes: Drop the stale DOMPurify types 2026-10-19 11:39:17 +02:00
package.json plaatui: Move showcase into examples 2026-10-16 09:42:42 +02:00
README.md plaatcraft-wii: Port PlaatCraft to the Wii with the shared engine 2026-10-26 22:05:58 +01:00
rust-toolchain.toml General: Upgrade to Rust 1.99 2026-10-16 11:29:33 +02:00
rustfmt.toml Add rustfmt.toml 2024-12-03 08:13:55 +01:00

Bassie's Bron des Codes

My personal monorepo for most of my hobby projects

Projects

Apps / Games

Some desktop apps and games written with the bwindow, bwebview, and bcanvas libraries.

2048 icon
2048
BassieLight icon
BassieLight
Binman icon
Binman
MacView icon
MacView
ManExplorer icon
ManExplorer
Music Downloader icon
Music Downloader
Navidrome icon
Navidrome
Pixel Font Editor icon
Pixel Font Editor
Reversi icon
Reversi
Sequel Explorer icon
Sequel Explorer

Tools / Websites

Various tools and websites. For the deployed sites, go to bron.bplaat.nl.

  • baksteen A brick-laying robot simulator
  • bob A simple build system for my projects, because I like the simplicity of Cargo
  • ccontinue A transpiler that translates an OOP extension for the C programming language back to C
  • cargo-bundle A simple Cargo plugin that builds macOS and iOS app bundles, Windows MSIX packages and Android APKs
  • plaatnotes A self-hosted note-taking web app with rich Markdown support
  • nds-toolchain An LLVM-based Nintendo DS toolchain with picolibc and a test ROM
  • wii-toolchain An LLVM-based Wii toolchain with picolibc, libogc, the gxtexconv texture converter, and Dolphin emulator tests

Examples

  • macOS Examples Mach-O assembly, Cocoa, Metal, OpenGL, and iOS examples
  • Wii Examples Wii homebrew examples in C and Rust: triangles, a 2D canvas, and voxel blocks
  • Windows Examples 32-bit and 64-bit Windows assembly examples using NASM

Libraries

Most of these libraries are intended primarily for personal use, but can still be useful. Many of them are minimal replacements for commonly used crates.

User Interfaces

  • bwebview A cross-platform webview library for Rust with minimal dependencies
  • bwindow Native windows and one typed main event loop
  • plaatui A Preact web components ui library for my own services

Graphics

  • bcanvas Native 2D canvas content, without a browser dependency
  • image A minimal JPEG, PNG/APNG, GIF, BMP, and QOI image decoder crate
  • vector SVG (subset) and TinyVG decoders with a backend-neutral display list
  • bwebgpu A native GPU rendering library for bwindow
  • bwebgpu-shader-build Build-time native WGSL compilation for bwebgpu

Apple

Networking

Data

Crypto

System

Languages

  • js A WIP JavaScript interpreter

Build

Testing

Getting Started

  • Install Rust, Node.js, Hadolint, a C toolchain (such as GCC, Clang or MSVC), an LLVM toolchain, clang-format, NASM and Dolphin emulator

  • Install Rust nightly toolchain, cargo-binstall, cargo-deny and cargo-nextest:

    rustup toolchain add nightly --component rust-src --component rustfmt
    cargo install cargo-binstall
    cargo binstall -y --locked cargo-deny cargo-nextest
    
  • Run checks, or run an example:

    cargo xtask check
    cargo run --bin example-persons-api
    cargo run --bin example-todo-app
    

Additional tools

  • Run the local criterion benchmarks with:

    cargo bench -p base64 --bench base64
    cargo bench -p crc --bench crc
    cargo bench -p image --bench image
    cargo bench -p sha2 --bench sha2
    
  • For coverage reports, install the llvm-tools and cargo-llvm-cov tool:

    rustup component add llvm-tools
    cargo binstall -y --locked cargo-llvm-cov
    cargo xtask coverage
    
  • To build pages, install a wasm target and the wasm-bindgen-cli tool:

    rustup target add wasm32-unknown-unknown
    cargo binstall -y --locked wasm-bindgen-cli --version 0.2.129
    cargo xtask build-pages
    
  • To build app bundles, install the targets below, on Windows this builds MSIX bundles with the Windows SDK and MSVC build tools for x64 and ARM64:

    rustup target add aarch64-apple-darwin x86_64-apple-darwin # macOS
    rustup target add aarch64-pc-windows-msvc x86_64-pc-windows-msvc # Windows
    cargo xtask build-bundle
    
  • To build and install bins and GUI applications to your system, on Windows this installs the MSIX packages after one UAC prompt:

    cargo xtask install
    
  • To build and install the iOS applications on the booted iOS simulators:

    rustup target add aarch64-apple-ios-sim
    cargo xtask install-ios
    
  • To build and install the Android applications on the first connected adb device or emulator, with the Android SDK, NDK and JDK 17 or 21 installed:

    rustup target add armv7-linux-androideabi aarch64-linux-android x86_64-linux-android
    cargo xtask install-android
    

Goals

This project is driven by three main goals:

1. A self-written minimal crates collection for backend software

Rather than pulling in large, general-purpose dependencies, this repo grows a curated set of small, focused libraries that cover exactly what is needed - nothing more. This includes an HTTP/1.1 server, a router, a SQLite and MySQL library, validation, password hashing, UUID generation, and more. Many of these are intentional minimal replacements for well-known crates on crates.io, rewritten from scratch to be lean, auditable, and free of transitive dependencies.

2. A minimal Electron/Tauri-like desktop platform

bwebview is a cross-platform native webview library that lets you ship desktop applications using web technologies, without the weight of bundling a full browser engine. It uses the system-native webview on each platform (WebKit on macOS/iOS, WebView2 on Windows, WebKitGTK on Linux, WebView on Android) and exposes a small, clean Rust API. The desktop apps and games in this repo, like a SQLite and MySQL viewer, a pixel font editor, a man page browser and a 2048 game, show that this works in practice.

3. Tools and a custom build system for complex multi-language projects

Building projects that span multiple languages and artifact types (Rust, JavaScript, WASM, native bundles) requires coordination that general-purpose build systems handle poorly. bob is a minimal build system inspired by Cargo's simplicity, designed to describe and orchestrate such projects cleanly. cargo-bundle handles macOS and iOS .app bundle, Windows .msix and Android .apk packaging from within the Cargo ecosystem. Together with the xtask crate these tools keep the build pipeline typed, cross-platform and easy to follow.

Repo organization

This repo is a monorepo. Projects are grouped by what they are, not by the language they are written in:

  • apps - applications, grouped by platform: desktop for cross-platform apps, plus macos, windows and web
  • examples - standalone examples, grouped by platform
  • games - games and their engines
  • lib - libraries, grouped by topic like ui, graphics, net, data and crypto
  • tools - developer tools, including the build tooling of this repo

Library examples live next to the library they show off, in its examples directory. Standalone platform examples live under the top-level examples directory.

The main Rust projects share one Cargo workspace and the JavaScript projects share one npm workspace. The macOS and iOS Rust examples are standalone projects using the local Apple bindings. The Wii Rust examples are standalone nightly projects with a custom PowerPC target. When a Rust app has a web frontend, its Cargo build script runs npm for you, so Cargo stays the one place where everything comes together.

Every top-level task, like checking, building and installing, goes through the xtask crate with cargo xtask, both on your machine and in CI.

License

Copyright © 2019-2026 Bastiaan van der Plaat

Licensed under the MIT license.