{"_id":"@_molaidrislabs/rn-mt","_rev":"4-f67f11a236f3afc4d053604bd8e26ff2","name":"@_molaidrislabs/rn-mt","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@_molaidrislabs/rn-mt","version":"0.1.0","license":"MIT","_id":"@_molaidrislabs/rn-mt@0.1.0","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"homepage":"https://github.com/kanmi-idris/rn-mt/tree/main/packages/rn-mt","bugs":{"url":"https://github.com/kanmi-idris/rn-mt/issues"},"bin":{"rn-mt":"dist/cli.js"},"dist":{"shasum":"a559854f7ac27b1865a3adf139b575d218d1d1f7","tarball":"https://registry.npmjs.org/@_molaidrislabs/rn-mt/-/rn-mt-0.1.0.tgz","fileCount":15,"integrity":"sha512-NjIO4bR5nILeEJyS4D9qdZ9EAsX+mOOoedAL/Nylg2jvfrzIFWbtlmwtj9SkNpT4PCZsdzpqn8+729WGTfDAEA==","signatures":[{"sig":"MEYCIQCEG39xS7zbmrElz9G0AnQDG8DU3xjFrmIX42FGJ7xJyQIhAPtTsvFeHeKM6IwnLOyFaJfRxgXmT9k8JNvJo6UKdooX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294483},"main":"./dist/index.js","type":"module","_from":"file:_molaidrislabs-rn-mt-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","default":"./dist/runtime.js"},"./expo-plugin":{"types":"./dist/expo-plugin.d.ts","import":"./dist/expo-plugin.js","default":"./dist/expo-plugin.js"}},"scripts":{"lint":"tsc --noEmit","build":"tsup && rimraf dist/rn-mt","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"_resolved":"/private/var/folders/gj/8s3tsb3532n_q9lc1jd440f00000gn/T/ead972575037222fa344a76cdf49ed4d/_molaidrislabs-rn-mt-0.1.0.tgz","_integrity":"sha512-NjIO4bR5nILeEJyS4D9qdZ9EAsX+mOOoedAL/Nylg2jvfrzIFWbtlmwtj9SkNpT4PCZsdzpqn8+729WGTfDAEA==","repository":{"url":"git+https://github.com/kanmi-idris/rn-mt.git","type":"git","directory":"packages/rn-mt"},"_npmVersion":"10.9.3","description":"Manifest-driven multitenancy conversion platform for React Native and Expo apps.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.0.1","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/rn-mt_0.1.0_1777431169058_0.622093258115664","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@_molaidrislabs/rn-mt","version":"0.1.2","license":"MIT","_id":"@_molaidrislabs/rn-mt@0.1.2","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"homepage":"https://github.com/kanmi-idris/rn-mt/tree/main/packages/rn-mt","bugs":{"url":"https://github.com/kanmi-idris/rn-mt/issues"},"bin":{"rn-mt":"dist/cli.js"},"dist":{"shasum":"bdacd0d0ea6d8f90418957690fcd3cda942fd35f","tarball":"https://registry.npmjs.org/@_molaidrislabs/rn-mt/-/rn-mt-0.1.2.tgz","fileCount":17,"integrity":"sha512-B7cKRnUBSKE0GTVHpjwie2lOo73veRita+NgDk9AhcS1F/Mhch5YBisXCuIwQYUHUghbLWtntVyXjHI8gwk0Jw==","signatures":[{"sig":"MEYCIQCNAxgCTq+RXcDCEDP53GEc7Y6l287ahCKgnWCXx5yyugIhAMwEIas+H/QI1S6sJb3JG4thaJsKupbnF4hDTUUDWp4V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303485},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","default":"./dist/runtime.js"},"./expo-plugin":{"types":"./dist/expo-plugin.d.ts","import":"./dist/expo-plugin.js","default":"./dist/expo-plugin.js"}},"gitHead":"fcc4e23327e82da7d6b48772606cdf7c0b467fc1","scripts":{"lint":"tsc --noEmit","build":"tsup && rimraf dist/rn-mt","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"repository":{"url":"git+https://github.com/kanmi-idris/rn-mt.git","type":"git","directory":"packages/rn-mt"},"_npmVersion":"10.9.3","description":"Manifest-driven multitenancy conversion platform for React Native and Expo apps.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.0.1","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/rn-mt_0.1.2_1780796695850_0.9982814725374052","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@_molaidrislabs/rn-mt","version":"0.1.3","license":"MIT","_id":"@_molaidrislabs/rn-mt@0.1.3","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"homepage":"https://kanmi-idris.github.io/rn-mt/","bugs":{"url":"https://github.com/kanmi-idris/rn-mt/issues"},"bin":{"rn-mt":"dist/cli.js"},"dist":{"shasum":"7c2c6851d0f9b8327fca517314712a6fbd71fd1d","tarball":"https://registry.npmjs.org/@_molaidrislabs/rn-mt/-/rn-mt-0.1.3.tgz","fileCount":17,"integrity":"sha512-nbMwQXLuho0tW9+JRGPnNzRnHbWYB8K5jJ3UcIBhot6+zwuGTahwWRLbvx9IsMuy5Pds02GqhAz77ub7vjmG0w==","signatures":[{"sig":"MEYCIQC61NJH6MSdT2sKmKg/CP14VEzfsxawjT1eL/J+vKBlxwIhAOFJjsy+5Xu27udvyEUGxYKo3yoySGPZhTIcGntZfFkO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303460},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","default":"./dist/runtime.js"},"./expo-plugin":{"types":"./dist/expo-plugin.d.ts","import":"./dist/expo-plugin.js","default":"./dist/expo-plugin.js"}},"gitHead":"fcc4e23327e82da7d6b48772606cdf7c0b467fc1","scripts":{"lint":"tsc --noEmit","build":"tsup && rimraf dist/rn-mt","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"repository":{"url":"git+https://github.com/kanmi-idris/rn-mt.git","type":"git","directory":"packages/rn-mt"},"_npmVersion":"10.9.3","description":"Manifest-driven multitenancy conversion platform for React Native and Expo apps.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.0.1","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/rn-mt_0.1.3_1780797932441_0.5459892600694844","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@_molaidrislabs/rn-mt","version":"0.1.4","description":"Manifest-driven multitenancy conversion platform for React Native and Expo apps.","license":"MIT","type":"module","bin":{"rn-mt":"dist/cli.js"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","default":"./dist/runtime.js"},"./expo-plugin":{"types":"./dist/expo-plugin.d.ts","import":"./dist/expo-plugin.js","default":"./dist/expo-plugin.js"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/kanmi-idris/rn-mt.git","directory":"packages/rn-mt"},"bugs":{"url":"https://github.com/kanmi-idris/rn-mt/issues"},"homepage":"https://kanmi-idris.github.io/rn-mt/","scripts":{"build":"tsup && rimraf dist/rn-mt","clean":"rimraf dist","lint":"tsc --noEmit","typecheck":"tsc --noEmit"},"devDependencies":{"rimraf":"^6.0.1","tsup":"^8.5.1","typescript":"^5.7.2"},"_id":"@_molaidrislabs/rn-mt@0.1.4","gitHead":"2f10d5513cb13852fbc4f81752094eb08df305bc","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-IBtmSzpNZtNao7ZOO3S19YREF3oLYyeOwledqFZj59wSjLIht8++Tdu7sAnS8QWG4C0z8lNMjkfbrOWQis3CNg==","shasum":"3e563467511ec7e95aad4add56ed34ede325763f","tarball":"https://registry.npmjs.org/@_molaidrislabs/rn-mt/-/rn-mt-0.1.4.tgz","fileCount":17,"unpackedSize":303460,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBopm39MHmF+IEFWMu82BjZ4pGUEX5ZzK+G91sLlMRxzAiEA+JB3qSMyA+Jj9Ks059lcv5PWCJOWI3i6H1PI4+hZg5o="}]},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"directories":{},"maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rn-mt_0.1.4_1780826873792_0.40468102008287365"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T02:52:48.957Z","modified":"2026-06-07T10:07:54.078Z","0.1.0":"2026-04-29T02:52:49.208Z","0.1.2":"2026-06-07T01:44:55.979Z","0.1.3":"2026-06-07T02:05:32.578Z","0.1.4":"2026-06-07T10:07:53.934Z"},"bugs":{"url":"https://github.com/kanmi-idris/rn-mt/issues"},"license":"MIT","homepage":"https://kanmi-idris.github.io/rn-mt/","repository":{"type":"git","url":"git+https://github.com/kanmi-idris/rn-mt.git","directory":"packages/rn-mt"},"description":"Manifest-driven multitenancy conversion platform for React Native and Expo apps.","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"readme":"# rn-mt\n\n`rn-mt` converts an existing Expo or React Native app into a manifest-driven\nmulti-tenant workspace.\n\nInstall it once, then use the `rn-mt` CLI to analyze the app, create the\nmanifest, convert the repo, add tenants, sync generated output, and run the\nselected target.\n\n## Install\n\n```bash\npnpm add -D @_molaidrislabs/rn-mt\n```\n\nYou can also use `npm` or `yarn`, but the examples below use `pnpm`.\n\n## Before you start\n\nCheck these first:\n\n- Node.js is installed\n- your app already runs normally without `rn-mt`\n- you are inside the app root\n\n## Step 1: check the app type\n\nRun this first so `rn-mt` can tell you what it is looking at:\n\n```bash\nrn-mt analyze\n```\n\nThis tells you:\n\n- whether the app looks like Expo managed, Expo prebuild, or bare React Native\n- whether the repo is supported or near-supported\n- whether you need to pass `--app-kind`\n\nIf the repo shape is ambiguous, pass the kind yourself:\n\n```bash\nrn-mt analyze --app-kind expo-prebuild\n```\n\n## Step 2: create the manifest file\n\nRun this when you want `rn-mt` to write the first config file:\n\n```bash\nrn-mt init\n```\n\nThat creates `rn-mt.config.json`. This file becomes the control center for:\n\n- tenants\n- environments\n- default target\n- config overrides\n\n## Step 3: convert the app\n\nRun this when you want to turn the app into the `rn-mt` workspace shape:\n\n```bash\nrn-mt convert\n```\n\nThis creates:\n\n```text\nsrc/\n  rn-mt/\n    shared/\n    tenants/\n    current/\n```\n\nIt also writes the generated metadata files that `rn-mt` uses later for sync,\naudit, and handoff.\n\n## Step 4: add your tenants\n\nRun `tenant add` for each app variant you want:\n\n```bash\nrn-mt tenant add --id northstar --display-name \"Northstar\"\nrn-mt tenant add --id orchid --display-name \"Orchid\"\nrn-mt tenant add --id volt --display-name \"Volt\"\n```\n\nAt this point the tenant folders exist. The app still stays mostly shared until\nyou start creating overrides.\n\n## Step 5: choose the default target\n\nPick the tenant and environment you want the default workflow to use:\n\n```bash\nrn-mt target set --tenant northstar --environment dev\n```\n\n## Step 6: generate the active output\n\nRun `sync` when you want `rn-mt` to resolve the current target and write the\ngenerated files:\n\n```bash\nrn-mt sync\n```\n\nIf you also need platform output, run:\n\n```bash\nrn-mt sync --platform ios\nrn-mt sync --platform android\n```\n\n## Step 7: run the app\n\nOnce sync completes, run the app through the `rn-mt` workflow commands:\n\n```bash\nrn-mt start\nrn-mt run --platform ios\nrn-mt run --platform android\n```\n\n## Step 8: create tenant-specific overrides\n\nWhen one tenant needs its own version of a shared file, run:\n\n```bash\nrn-mt override create config/theme.ts\n```\n\nThat copies the shared file into the active tenant and updates the generated\n`current` surface so the app keeps importing from one stable place.\n\n## Step 9: check the repo\n\nRun `audit` when you want to catch drift or tenant leakage:\n\n```bash\nrn-mt audit\nrn-mt audit --fail-on P0\n```\n\nRun `doctor` when you want release-facing checks:\n\n```bash\nrn-mt doctor\n```\n\n## Runtime and Expo subpaths\n\nThe public package also exposes:\n\n- `@_molaidrislabs/rn-mt/runtime`\n- `@_molaidrislabs/rn-mt/expo-plugin`\n\nUse the runtime subpath when the app needs stable accessors for generated\nruntime state.\n\nUse the Expo plugin subpath when an Expo config bridge needs target-context\nresolution.\n\n## Quick success checklist\n\nYou are in a good place if all of these are true:\n\n- `rn-mt analyze` returns the right repo kind\n- `rn-mt.config.json` exists\n- `src/rn-mt/shared` exists\n- `src/rn-mt/current` exists\n- `rn-mt sync` completes\n- `rn-mt start` launches the selected target\n\n## Docs\n\nFull developer docs:\n\n- `https://kanmi-idris.github.io/rn-mt/`\n\nRepository:\n\n- `https://github.com/kanmi-idris/rn-mt`\n","readmeFilename":"README.md"}