Destiny Protocol is split into two independent TypeScript applications:
client— React web application built with Vite and packaged for Android and iOS with Capacitor.server— Express API.
- Node.js 24 (pinned per project with Volta)
- Android Studio and a supported JDK for Android builds
- macOS with Xcode for iOS builds
cd client
npm install
npm run devBuild and synchronize the native projects:
npm run build
npm run cap:syncOpen a native project:
npm run cap:open:android
npm run cap:open:iosThe iOS project is generated on every platform, but compiling it requires macOS and Xcode.
cd server
Copy-Item .env.example .env
npm install
npm run devThe API defaults to http://localhost:4000; its health endpoint is GET /api/health.
The Android app checks the latest public release from tarinagarwal/Destiny-Protocol whenever the app starts or returns to the foreground. A newer release must:
- Use a semantic tag such as
v1.0.1. - Include an
.apkrelease asset. - Have a version newer than
versionNameinclient/android/app/build.gradleand a higherversionCode.
The app downloads the APK into its private cache. Android may require the user to grant Destiny Protocol permission to install unknown apps and always shows its system installation confirmation.