typeboard aims to send and receive API signals in Rust, then visualize them on a dashboard.
The repo currently ships a minimal scaffold (Axum API + React/TypeScript UI). Over time it will grow into a practical playground for real-world Rust backend patterns—async I/O, HTTP stacks, CPU-bound parallelism, observability, and more.
Bun is the frontend toolchain today, and a second study track in docs/bun: native Bun.serve HTTP/WebSocket (no Express/Hono), zero-dependency TS servers, and comparisons against Go/Deno. Recent Bun releases (1.3.x → Rust rewrite toward 1.4) make that track especially useful next to the Axum/Tokio work.
- Own signal ingress/egress in Rust (HTTP, events, and related I/O) with Axum / Tokio
- Monitor and visualize those signals on a frontend dashboard
- Move beyond toy demos: adopt production-minded patterns for persistence, caching, observability, auth, and deploy—step by step
- Keep a Bun-native reference path (
Bun.serve, built-in WS/SQL/Redis notes) for fast TS prototypes and closed-network / dependency-zero experiments
cd api
cargo runcd backend
cargo runVite + React + TypeScript, installed and run with Bun.
cd frontend
bun install
bun run devProduction build:
bun run buildOpen http://localhost:5173 and use the button to fetch a message from the backend (http://127.0.0.1:3001/api/hello).
Study / experiment with Bun alone (no Vite app required)—see docs/bun. Typical entry points:
# hot-reload a Bun.serve script
bun --hot path/to/server.ts
# package manager / scripts (frontend)
bun install && bun run dev| Layer | Choice | Notes |
|---|---|---|
| Signal / HTTP (Rust) | Axum · Tokio · hyper | Primary path for API signals |
| Dashboard UI | React · TypeScript · Vite | Served via Bun install / scripts |
| TS / realtime experiments | Bun (Bun.serve, native WebSocket) |
Routing, pub/sub WS, SSE, HTML import, --hot |
| Package / lockfile | bun.lock |
Text lockfile; isolated linker available in recent Bun |
Bun 1.3.x highlights that matter for this repo’s direction (not all wired into the scaffold yet):
Bun.serve— built-in routing, cookies, metrics, Range requests, experimental HTTP/3 (QUIC)- Realtime — native WebSocket (+ client
ws+unix://), same-process HTTP upgrade - Data — unified
Bun.SQL(Postgres / MySQL / SQLite), built-in Redis client - Tooling —
bun test(--parallel/--isolate/--shard),bun build --compile(incl. browser HTML),--metafile-mdfor LLM-friendly bundle graphs - Runtime extras —
Bun.markdown,Bun.Image,Bun.cron, native REPL - Implementation — Bun is moving from Zig → Rust (v1.4 canary); useful context while studying Rust HTTP stacks here
Priorities may shift, but the direction is to layer in mature crates from the Rust async and web ecosystem.
| Area | Crate / project | Role |
|---|---|---|
| Async runtime | Tokio | Tasks, timers, networking, concurrency |
| Futures primitives | futures-rs | Combinators, streams, and Future utilities beyond Tokio’s surface |
| Async traits | async-trait | async fn in traits for service boundaries and handlers |
| Low-level HTTP | hyper | HTTP/1–2 client/server foundation under Axum / reqwest |
| HTTP routing | Axum + Tower | API surface, middleware, backpressure |
| HTTP client | reqwest | Outbound calls to internal/external services |
| Serialization | serde | Request/response JSON and config |
| Area | Crate / project | Role |
|---|---|---|
| Data-parallel CPU work | rayon | Parallel iterators / thread-pool work off the async runtime |
| Full-stack reactive UI (explore) | Topcoat | Server-rendered reactive web apps in Rust (complementary to the React dashboard) |
| Area | Candidates | Role |
|---|---|---|
| Database | sqlx (+ PostgreSQL), rusqlite / SQLite; compare with Bun.SQL / bun:sqlite notes |
Durable storage |
| Cache / locks | Redis (Rust client); compare with Bun’s built-in Redis | Sessions, rate limits, short-lived queues |
| Realtime | WebSocket / SSE (Axum · Bun.serve) |
Live dashboard updates |
| Observability | tracing, metrics | Logs, traces, metrics |
| Config | config / dotenv | Environment-specific settings |
| Auth | JWT (and related) | Protect APIs and the dashboard |
| Deploy | Docker Compose | Local and staging bring-up |
Study notes live under docs/:
| Topic | Path |
|---|---|
| Rust | docs/rust |
| Tokio | docs/tokio/readme.md |
| Axum | docs/axum |
| Hyper | docs/hyper |
| reqwest | docs/reqwest |
| Serde | docs/serde |
| rusqlite | docs/rusqlite |
| Bun | docs/bun |
| MSA with Axum | docs/msa/readme.md |
| CS notes | docs/cs |
| LLM notes | docs/llm |