A collection of minimal Rust crates and tools that I created for myself and others
These crates are published to crates.io and are more polished and documented
- bsqlite A simple and minimal Rust SQLite library with an ergonomic API (crates.io)
- bsqlite_derive The derive macro's for the bsqlite crate (crates.io)
- simple-useragent A simple user agent parser library based on the uap-core regexes (crates.io)
- small-http A simple and small HTTP/1.1 server/client library (crates.io)
- small-router A simple and small router for the small-http library (crates.io)
These libraries are not published to crates.io and are more intended for personal use but can still be useful
- bwebview A cross-platform webview library for Rust with minimal dependencies
- from_derive A FromEnum and FromStruct derive macro library
- js A WIP JavaScript interpreter
- openapi-generator A simple OpenAPI code generator
- pbkdf2 A PBKDF2-HMAC-SHA256 password hashing library
- small-websocket A simple and small websocket library for the small-http library
- validate A simple struct validation library
- validate_derive Validation derive macro's library
Some desktop apps written with the bwebview library
|
2048 |
BassieLight |
ManExplorer |
Navidrome |
Pixel Font Editor |
Sequel Explorer |
- 2048 An offline desktop 2048 game app
- BassieLight A simple lights controller with GUI
- ManExplorer A simple man page explorer tool
- Navidrome A music.bplaat.nl webview wrapper
- Pixel Font Editor An 8x8 pixel font editor
- Sequel Explorer A simple SQLite database GUI viewer
Various tools and websites, for the live deployed sites go to crates.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 the builds macOS app bundles
- music-dl A tool that downloads complete albums with the correct metadata
- plaatnotes A self-hosted note taking web app with rich markdown support
These libraries are created as minimal / smaller replacements for common used crates
- base64 A minimal replacement for the base64 crate
- block2 A minimal replacement for the block2 crate
- chrono A minimal replacement for the chrono crate
- copy_dir A minimal replacement for the copy_dir crate
- digest A minimal replacement for the digest crate
- directories A minimal replacement for the directories crate
- dotenv A minimal replacement for the dotenv crate
- enable-ansi-support A minimal replacement for the enable-ansi-support crate
- form_urlencoded A minimal replacement for the form_urlencoded crate
- getrandom A minimal replacement for the getrandom crate
- hmac A minimal replacement for the hmac crate
- libsqlite3-sys A minimal replacement for the libsqlite3-sys crate
- local-ip-address A minimal replacement for the local-ip-address crate
- native-tls A minimal replacement for the native-tls crate
- maxminddb A minimal replacement for the maxminddb crate
- mime A minimal replacement for the mime crate
- mime_guess A minimal replacement for the mime_guess crate
- objc2 A minimal replacement for the objc2 crate
- percent-encoding A minimal replacement for the percent-encoding crate
- plist A minimal replacement for the plist crate
- rust-embed A minimal replacement for the rust-embed crate
- rust-embed-impl A minimal replacement for the rust-embed-impl crate
- semver A minimal replacement for the semver crate
- sha1 A minimal replacement for the sha1 crate
- sha2 A minimal replacement for the sha2 crate
- simple_logger A minimal replacement for the simple_logger crate
- subtle A minimal replacement for the subtle crate
- terminal_size A minimal replacement for the terminal_size crate
- threadpool A minimal replacement for the threadpool crate
- url A minimal replacement for the url crate
- uuid A minimal replacement for the uuid crate
- winresource A minimal replacement for the winresource crate
- zip A minimal replacement for the zip crate
-
Open a posix shell environment when you are on Windows (e.g. Git Bash)
-
Install Rust, Node.js, ShellCheck and clang-format
-
Install Rust nightly toolchain,
cargo-binstall,cargo-denyandcargo-nextest:rustup toolchain add nightly --component rust-src --component rustfmt curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash cargo binstall -y --locked cargo-deny cargo-nextest
-
Run checks, or run an example:
./meta.sh check cargo run --bin example-persons-api cargo run --bin example-todo-app
-
For coverage reports, install the
llvm-toolsandcargo-llvm-covtool:rustup component add llvm-tools cargo binstall -y --locked cargo-llvm-cov ./meta.sh coverage
-
To build pages, install a wasm target and the
wasm-bindgen-clitool:rustup target add wasm32-unknown-unknown cargo binstall -y --locked wasm-bindgen-cli --version 0.2.104 ./meta.sh build-pages
-
To build macOS app bundles, only on macOS, install targets:
rustup target add aarch64-apple-darwin x86_64-apple-darwin ./meta.sh build-bundle
-
To build and install bins and GUI applications to your system:
./meta.sh install
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 wrapper, 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, WebKitGTK on Linux, WebView2 on Windows) and exposes a small, clean Rust API. The desktop apps in this repo: a 2048 game, a SQLite viewer, a pixel font editor, a man page browser, serve as real-world validation of this platform.
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 .app bundle packaging from within the Cargo ecosystem. Together with meta.sh these tools keep the build pipeline simple, scriptable, and easy to follow.
This repo is organized as a monorepo with Cargo as the single build system. Monorepos work best when one build system acts as the central organization point for all submodules, and Cargo fills that role here perfectly.
All Rust code lives in a single Cargo workspace that builds everything together. Some crates extend this with custom build steps that invoke other tools like npm or vite, but those are orchestrated from within Cargo build scripts.
The meta.sh script contains all top-level tasks and is used both from the command line and in CI. The only exception is the bob/examples directory, which intentionally uses a different build system as a showcase for the bob build tool itself.
Copyright © 2021-2026 Bastiaan van der Plaat
Licensed under the MIT license.