Skip to content

Repository files navigation

Slateboard

CI License: Apache 2.0 Status: pre-alpha

An open-source mobile camera app for serious content creators. Shoot with proper scene/take metadata baked into capture, then export clean, editor-ready data to Resolve, Premiere, or Final Cut.

Tap Good / NG / Circle the moment a take ends. A week later, you (or your editor) jump straight to the good takes — no scrubbing through IMG_4471.mov.

Status: pre-alpha. Building toward v0 (mobile-only). See SPEC.md for the full design and CHANGELOG.md for what's shipped.

What's here today

  • Rust core (core/) — domain types, sidecar JSON IO, SQLite storage, CLI.
  • UniFFI bindings (core/slateboard-ffi/) — ProjectHandle and helpers exposed to Kotlin and Swift.
  • JSON Schema (schema/take-v0.1.json) — the sidecar contract.
  • Smoke tests for the bindings — Kotlin (android/smoke-test/) and Swift (ios/SmokeTest/).
  • Android / iOS apps — not yet (see SPEC.md §14).

Try it (CLI)

The CLI is the spine — it proves the data model works end-to-end before any mobile UI exists.

cd core
cargo run -p slateboard-cli -- --help

Quick walkthrough:

# 1. create a project in ./myshoot
cargo run -p slateboard-cli -- init ./myshoot --name "Apartment vlog ep 3"

# 2. add a scene + setup
cargo run -p slateboard-cli -- --project ./myshoot scene add 1 \
    --name "rooftop confrontation" --int-ext EXT --day-night DAY
cargo run -p slateboard-cli -- --project ./myshoot setup add 1 C \
    --shot-type MS --lens-notes "26mm equiv"

# 3. register a take pointing at a recorded video file
cargo run -p slateboard-cli -- --project ./myshoot take add 1 C \
    --video ./S02C-T04.mp4 \
    --status CIRCLE \
    --notes "best one, slight wind noise"

# 4. dump sidecar JSON
cargo run -p slateboard-cli -- --project ./myshoot dump

Build the mobile bindings

The bindings wrap the same Rust core the CLI uses. Build scripts produce the platform-specific artifacts:

# Android — .so files + Kotlin bindings into android/core-bindings/
#   prereqs: cargo install cargo-ndk; rustup target add aarch64-linux-android
#            armv7-linux-androideabi x86_64-linux-android i686-linux-android
#   set ANDROID_NDK_HOME
core/scripts/build-android.sh

# iOS — SlateboardCore.xcframework + Swift bindings into ios/
#   macOS only; prereqs: rustup target add aarch64-apple-ios
#                        aarch64-apple-ios-sim x86_64-apple-ios
core/scripts/build-ios.sh

Both scripts accept --release for optimized builds.

Contributing

See CONTRIBUTING.md. New contributors look at issues labeled good first issue.

Support the project

Slateboard is a solo, unfunded side project. It is Apache 2.0 and will stay that way: no ads, no telemetry, no account required, no paid tier for the capture app.

If the idea is useful to you and you'd like to keep it moving, you can sponsor me on GitHub Sponsors — one-off or monthly, whatever suits.

Sponsor

If you're in India, UPI is the most direct route (no platform fee): abhishek.bagati@ybl

Money is appreciated, but these are worth more right now:

  • Shoot something real with the CLI or an alpha build and tell me where it broke. Bug reports from actual shoots are the bottleneck, not code.
  • Star and share the repo — reach is what brings contributors.
  • Pick up a good first issue if you write Rust, Kotlin, or Swift.

License

Apache 2.0 — see LICENSE.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages