Uses bun for development and Tauri for desktop app builds.
- Install Bun:
curl -fsSL https://bun.sh/install | bash- Install Rust and its dependencies:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh- Install system dependencies:
# Install Xcode Command Line Tools
xcode-select --install
# Install additional dependencies via Homebrew
brew install openssl@3sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev- Add required Rust targets for universal macOS builds:
rustup target add aarch64-apple-darwin x86_64-apple-darwin- Clone the repository and run the setup script:
./setup-hooks.shThis will configure git to use the project's pre-commit hooks, which run bun run build before each commit.
This project uses just for common development tasks:
# List all available commands
just
# Install dependencies
just install
# Start development server
just dev
# Build the project
just build
# Format code
just format
# Run tests
just test
# Get current version
just get-version- Install dependencies:
bun install- Start the development server:
# For web development only
bun run dev
# For desktop app development
bun tauri devExpects a VITE_OPEN_SECRET_API_URL environment variable to be set. (See .env.example)
To build the desktop application:
# Standard build
bun tauri build
# For universal macOS build (Apple Silicon + Intel)
bun tauri build --target universal-apple-darwinIf you need a new set of icons:
bun run tauri icon [path/to/png]
- Generate a new signing key:
cargo tauri signer generateThis will create the tauri public and private key.
- Add the public key to
src-tauri/tauri.conf.jsonin theupdater.pubkeyfield - Add the private key to GitHub Actions secrets:
- Go to repository Settings → Secrets and variables → Actions
- Create a new secret named
TAURI_SIGNING_PRIVATE_KEY - Create another secret named
TAURI_SIGNING_PRIVATE_KEY_PASSWORDif your key has a password - Paste the private key from the tauri command.
For proper macOS builds and notarization, you need to set up the following GitHub secrets:
-
APPLE_CERTIFICATE- Base64-encoded p12 certificatebase64 -i YourCertificate.p12 | pbcopy # Copies to clipboard
-
APPLE_CERTIFICATE_PASSWORD- Password for the certificate -
KEYCHAIN_PASSWORD- Password for the temporary keychain (can be any secure password) -
APPLE_ID- Your Apple Developer account email -
APPLE_PASSWORD- Your Apple Developer account password or app-specific password -
APPLE_TEAM_ID- Your Apple Developer team ID
Use the provided just commands to manage version updates:
# Bump patch version (e.g., 1.0.0 → 1.0.1)
just bump-patch
# Bump minor version (e.g., 1.0.0 → 1.1.0)
just bump-minor
# Bump major version (e.g., 1.0.0 → 2.0.0)
just bump-major
# Set a specific version
just update-version 1.2.3
# Create a release with automatic git tag
just release 1.2.3These commands automatically update all necessary files:
frontend/package.jsonfrontend/src-tauri/tauri.conf.jsonfrontend/src-tauri/Cargo.tomlfrontend/src-tauri/gen/apple/project.ymlfrontend/src-tauri/gen/apple/maple_iOS/Info.plistCargo.lock(via cargo check)
- Use one of the version commands above to update the version
- Create a new release in GitHub:
- Go to Releases → Draft a new release
- Create a new tag (e.g.,
v0.1.0) - Set a release title and description
- Publish the release
The GitHub Actions workflow will automatically:
- Build the app for all platforms
- Sign the builds
- Upload the artifacts to the release
- Create and upload
latest.jsonfor auto-updates
If there's a new version of the enclave pushed to staging or prod, append the new PCR0 value to the pcr0Values or pcr0DevValues arrays in frontend/src/app.tsx.
Run in emulator:
dotenv -e .env.local -- bun run tauri ios dev 'iPhone 16 Pro'Run on a connected phone:
dotenv -e .env.local -- bun run tauri ios buildTo prevent committing automatic changes to the XCode project file during local development:
# Tell Git to ignore changes to the file
git update-index --assume-unchanged frontend/src-tauri/gen/apple/maple.xcodeproj/project.pbxproj
# When you need to commit changes to this file, use:
git update-index --no-assume-unchanged frontend/src-tauri/gen/apple/maple.xcodeproj/project.pbxproj