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_enum A FromEnum derive macro library
- ini A simple INI file parser library
- js A WIP JavaScript interpreter
- openapi-generator A simple OpenAPI code generator
- pbkdf2 A unsecure 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 |
- 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
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
- 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 simple note-taking app
- webhook-puller A small service that pulls a Git repo when requested by a webhook
These libraries are created as minimal / smaller replacements for common used crates
- chrono A minimal replacement for the chrono crate
- copy_dir A minimal replacement for the copy_dir 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
- getrandom A minimal replacement for the getrandom crate
- libsqlite3-sys A minimal replacement for the libsqlite3-sys crate
- local-ip-address A minimal replacement for the local-ip-address crate
- mime A minimal replacement for the mime crate
- mime_guess A minimal replacement for the mime_guess 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
- simple_logger A minimal replacement for the simple_logger 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
- winres A minimal replacement for the winres crate
This repo is organized as a monorepo with Cargo as the main build system. My personal vision is that monorepo's work vary well when there's only one main build system, that acts a single organization point for the whole project with all it's submodules.
So this all Rust code is contained in a single Cargo workspace, that builds everything. Some crates have custom build steps that can run other build scripts / systems like npm and vite.
The meta.sh script is contains all the main tasks, these are used from commandline and also CI. The only modules that use a different build system are the ones in the bob/examples directory, but that is also a show case of the bob build system.
-
Open a posix shell environment when you are on Windows (e.g. Git Bash)
-
Install Rust, Node.js, OpenJDK 21 and clang-format
-
Install Rust nightly
rustfmt,cargo-binstall,cargo-denyandcargo-nextest:rustup toolchain add nightly --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 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 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 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
Copyright © 2023-2026 Bastiaan van der Plaat
Licensed under the MIT license.