The root Makefile is the central build orchestration tool for the Bedrud monorepo. It provides commands for development, building, and deployment across all platforms.
Usage
make <target>
make help # Show all available targetsDevelopment Targets
| Target | Description |
|---|---|
make init | Install all dependencies (LiveKit + config + bun + Go) |
make dev | Run LiveKit + server (hot reload) + web concurrently |
make dev-web | Run frontend dev server only |
make dev-server | Run backend server + LiveKit |
make dev-server-hot | Run backend with Air hot reload |
make dev-api | Run backend only, no LiveKit |
make dev-livekit | Run local LiveKit server |
make dev-site | Run Astro site dev server |
make dev-ios | Open iOS project in Xcode |
make dev-android | Open Android project in Android Studio |
make init
Full setup for a new development environment:
- Downloads LiveKit server binary to
~/.local/bin/(if not in PATH) - Creates
server/config.yamlfromconfig.local.yamltemplate (if missing) - Creates LiveKit embed placeholder at
server/internal/livekit/bin/livekit-server - Installs
airfor Go hot reload (if not present) - Installs dependencies:
apps/web(bun),apps/site(bun),server(go mod)
make dev
Starts all three development services concurrently. Press Ctrl+C to stop all:
- LiveKit at
localhost:7880 - Server at
localhost:8090 - Web at
localhost:3000
Build Targets
| Target | Description |
|---|---|
make build | Build frontend + backend (embedded) |
make build-front | Build frontend only |
make build-back | Build backend only |
make build-dist | Build production linux/amd64 tarball |
make build-site | Build Astro site (SSG) |
make build
Full production build:
- Runs
bun run buildinapps/web— builds the React app - Copies
apps/web/dist/client/*→server/frontend/ - Builds the Go binary with the embedded frontend
Output: server/dist/bedrud
make build-dist
Creates a compressed, production-ready distribution:
- Runs
make build - Cross-compiles for
linux/amd64with stripped debug symbols - Creates
dist/bedrud_linux_amd64.tar.xz
Desktop Targets
| Target | Description |
|---|---|
make dev-desktop | Build and run desktop app (debug) |
make build-desktop | Build optimized release binary |
Local Single Binary
| Target | Description |
|---|---|
make local-build | Build frontend + backend into one binary |
make local-run | Build + run locally (SQLite, embedded LiveKit) |
make local-run
Builds and starts the single binary with local config:
CONFIG_PATH=server/config.local.yaml server/dist/bedrud runOpen http://localhost:8090 when ready.
API Docs
| Target | Description |
|---|---|
make swagger-gen | Regenerate Swagger docs from annotations |
make swagger-open | Open Swagger UI in browser |
make scalar-open | Open Scalar UI in browser |
Requires swag CLI (go install github.com/swaggo/swag/cmd/swag@latest). Server must be running for swagger-open and scalar-open.
Android Targets
| Target | Description |
|---|---|
make build-android-debug | Build debug APK |
make build-android | Build release APK (requires keystore) |
make install-android | Install release APK on connected device |
make release-android | Build + install release APK |
APK Output Paths
- Debug:
apps/android/app/build/outputs/apk/debug/app-debug.apk - Release:
apps/android/app/build/outputs/apk/release/app-release.apk
iOS Targets
| Target | Description |
|---|---|
make build-ios | Build iOS archive (Release) |
make export-ios | Export IPA from archive |
make build-ios-sim | Build for iOS Simulator (Debug) |
Output Paths
- Archive:
apps/ios/build/Bedrud.xcarchive - IPA:
apps/ios/build/export/Bedrud.ipa
Deploy Target
| Target | Description |
|---|---|
make deploy ARGS=... | Run the deployment CLI tool |
Example
make deploy ARGS="--auto-config --ip 1.2.3.4 --user root --domain meet.example.com"This runs the Python CLI at tools/cli/bedrud.py with the provided arguments.
Test
| Target | Description |
|---|---|
make test-back | Run backend tests (go test -v -count=1 ./...) |
Clean Targets
| Target | Description |
|---|---|
make clean | Remove build artifacts and compiled binaries |
make full-clean | Remove artifacts + all installed dependencies |
make clean
Removes:
dist/— distribution tarballsserver/dist/— compiled server binaryapps/web/dist/— React build outputserver/frontend/contents — embedded frontend assetsapps/android/app/build/— Android build outputsapps/ios/build/— iOS build outputsapps/site/dist/— Astro site build outputtarget/— Rust/Cargo build output
make full-clean
Everything clean does, plus:
apps/web/node_modules/apps/site/node_modules/apps/android/.gradle/apps/android/build/- Go module cache (
go clean -modcache)
Run make init afterwards to reinstall dependencies.