- Rust 51.5%
- TypeScript 46.9%
- CSS 1.1%
- Nix 0.4%
- Dockerfile 0.1%
|
Some checks failed
CI / test (push) Successful in 7m38s
CI / test-ui (push) Successful in 44s
Deno / lint (push) Successful in 11s
Rust / lint (push) Successful in 5m31s
Rust / build (push) Successful in 7m1s
Release / build (linux, docker, x86_64-unknown-linux-gnu) (push) Failing after 3m13s
Release / build (macos, docker, universal-apple-darwin) (push) Failing after 23s
Release / build (windows, docker, x86_64-pc-windows-msvc) (push) Failing after 1m25s
Release / release (push) Has been skipped
Closes #52. Closes #53. Closes #56. Relies on #89 to be merged. - Adds volume controls to input/output - Reorganizes the audio settings panel to not suck as much - Adds push-to-talk via rdev subprocess Co-authored-by: Sebastian Benjamin <hex@hextraza.moe> Reviewed-on: #90 Reviewed-by: Graham <red.iron2345@fastmail.com> Co-authored-by: Sebastian Benjamin <sebastiancbenjamin@gmail.com> Co-committed-by: Sebastian Benjamin <sebastiancbenjamin@gmail.com> |
||
|---|---|---|
| .cargo | ||
| .forgejo/workflows | ||
| .storybook | ||
| .vscode | ||
| .zed | ||
| app | ||
| proto | ||
| public | ||
| server | ||
| src-tauri | ||
| stories | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| components.json | ||
| deno.jsonc | ||
| deno.lock | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| package.json | ||
| react-router.config.ts | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
| vitest.shims.d.ts | ||
microclimate
A LiveKit-based alternative to Mumble and Discord.
Requires
- Rust
- Deno
protoc, the protobuffer compiler- A
server/.envfile, seeserver/.env.examplefor required values
Project structure
The server and Tauri client are separate Cargo workspaces. Most server-side
Cargo commands should be run from the server/ directory; most client-side
commands are run from the project root (via Deno tasks) or src-tauri/.
Setup
Server
The server uses SQLx compile-time query verification, which requires either a
live database or a pre-generated query cache. The cache is already committed to
the repository under server/.sqlx/, so a live database is only needed when you
change the schema.
# Copy and fill in the environment file
cp server/.env.example server/.env
# JWT_SECRET is required — the server uses it to sign session tokens issued
# after a successful ATProto OAuth login. Use a long random value, e.g.:
# openssl rand -base64 32
# (First time only, or after changing migrations) Install sqlx-cli and
# run migrations to set up the database
cargo install sqlx-cli --no-default-features --features sqlite
cd server && sqlx migrate run
# (After changing migrations) Regenerate the SQLx query cache and commit it
cd server && cargo sqlx prepare
Note: In production, migrations run automatically when the server starts.
Client
Install dependencies with deno i
If on windows create a windows.toml file in the .cargo folder then add the following:
[build]
target-dir = "C:/t"
Without it vite will choke itself scanning the target folder, and the application will never run.
Running
# Start the gRPC server (from server/)
cd server && cargo run
# Start the Tauri desktop app (from project root, use cmd.exe on Windows)
deno task tauri dev
Note: cargo build from the project root only builds the Tauri client. To build
the server, run cargo build from server/.
Tips
- If you're developing on Windows, I've observed that the Tauri app will not
render when executing
deno task tauri devfrom Powershell. Usingcmdseems to work just fine, though. - On Windows, set
CARGO_TARGET_DIR=C:/t(or another short path) to redirect Cargo build artifacts off the project tree. - I recommend using Yaak for testing gRPC features without a client
- Use
cargo test export_bindingsfromsrc-tauri/to generate TypeScript types from structs using ts-rs