{"_id":"@beaulewis/saas-cli","_rev":"3-0593b83c9f2a78fd302589c0580958f1","name":"@beaulewis/saas-cli","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@beaulewis/saas-cli","version":"1.0.0","keywords":["cli","flutter","saas","supabase","riverpod","drift","code-generation","documentation"],"author":{"name":"Beau Lewis","email":"blewisxx@gmail.com"},"license":"MIT","_id":"@beaulewis/saas-cli@1.0.0","maintainers":[{"name":"beaulewis","email":"blewisxx@gmail.com"}],"homepage":"https://github.com/Beaulewis1977/saas-cli#readme","bugs":{"url":"https://github.com/Beaulewis1977/saas-cli/issues"},"bin":{"saas":"bin/saas.js"},"dist":{"shasum":"338855b0dfd8520261ac54c1bebd9a1f539f7b67","tarball":"https://registry.npmjs.org/@beaulewis/saas-cli/-/saas-cli-1.0.0.tgz","fileCount":49,"integrity":"sha512-8kGk3766YGQqcqSpq/0FmpXHjLyEc9pvgHj8P7rxOViBTzucNfxT1VXuM2ZZFiWlJGe6hqePE1Tp5RixHovRRQ==","signatures":[{"sig":"MEYCIQCUk7BsIse3xUCTBOUbD/LbpT/unQ+/K3N/9A5Z6ItfoQIhAJuleT8d149VXITjeq3CBuHAs3siPHxK+FNKbknRDPEC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281836},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f2dee0b872dfbe71adfbb95448706c0407c74fcc","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check src/","test":"vitest run","build":"tsup","start":"node dist/index.js","format":"biome format --write src/","prepare":"husky","lint:fix":"biome check --write src/","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"biome format src/","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm build","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"beaulewis","email":"blewisxx@gmail.com"},"repository":{"url":"git+https://github.com/Beaulewis1977/saas-cli.git","type":"git"},"_npmVersion":"10.9.4","description":"A unified CLI tool for Flutter SaaS development with live documentation, code generation, and backend integration","directories":{},"_nodeVersion":"22.21.1","dependencies":{"got":"^14.6.6","ora":"^9.0.0","keyv":"^5.5.5","yaml":"^2.8.2","commander":"^14.0.2","keyv-file":"^5.3.3","cli-table3":"^0.6.5","handlebars":"^4.7.8","picocolors":"^1.1.1","@inquirer/prompts":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","husky":"^9.0.0","vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","lint-staged":"^15.0.0","@biomejs/biome":"^2.3.11","@commitlint/cli":"^19.0.0","@vitest/coverage-v8":"^4.0.16","@commitlint/config-conventional":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/saas-cli_1.0.0_1767927946098_0.758698135372555","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@beaulewis/saas-cli","version":"1.0.1","keywords":["cli","flutter","saas","supabase","riverpod","drift","code-generation","documentation"],"author":{"name":"Beau Lewis","email":"blewisxx@gmail.com"},"license":"MIT","_id":"@beaulewis/saas-cli@1.0.1","maintainers":[{"name":"beaulewis","email":"blewisxx@gmail.com"}],"homepage":"https://github.com/Beaulewis1977/saas-cli#readme","bugs":{"url":"https://github.com/Beaulewis1977/saas-cli/issues"},"bin":{"saas":"bin/saas.js"},"dist":{"shasum":"9b605955e0b57c24d98057d3dd186512cfe5ab7b","tarball":"https://registry.npmjs.org/@beaulewis/saas-cli/-/saas-cli-1.0.1.tgz","fileCount":57,"integrity":"sha512-35JOERLIl1zGCaTnCbpMmCHKOgR26X7Xo28J2SHLJ8RH04pY6rtcHNtinEEdx0cuNOyQ3vXAmKl0fcyuzh/9Mg==","signatures":[{"sig":"MEUCIQDIGv/bZd/2VcYTkk/55LHgbrlN0RKdZfUeARjaJ7aEQgIgZlahIkwoxkD/qAafLRccF7Mom/okwBMYJz5Y8tGYSWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314717},"type":"module","_from":"file:beaulewis-saas-cli-1.0.1.tgz","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsx watch src/index.ts","lint":"biome check src/","test":"vitest run","build":"tsup","start":"node dist/index.js","format":"biome format --write src/","lint:fix":"biome check --write src/","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"biome format src/","test:coverage":"vitest run --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"beaulewis","email":"blewisxx@gmail.com"},"_resolved":"/tmp/95f3395c60d5432e058f89c1ed16968e/beaulewis-saas-cli-1.0.1.tgz","_integrity":"sha512-35JOERLIl1zGCaTnCbpMmCHKOgR26X7Xo28J2SHLJ8RH04pY6rtcHNtinEEdx0cuNOyQ3vXAmKl0fcyuzh/9Mg==","repository":{"url":"git+https://github.com/Beaulewis1977/saas-cli.git","type":"git"},"_npmVersion":"10.9.4","description":"A unified CLI tool for Flutter SaaS development with live documentation, code generation, and backend integration","directories":{},"_nodeVersion":"22.21.1","dependencies":{"got":"^14.6.6","ora":"^9.0.0","keyv":"^5.5.5","yaml":"^2.8.2","dotenv":"17.2.3","commander":"^14.0.2","keyv-file":"^5.3.3","cli-table3":"^0.6.5","handlebars":"^4.7.8","picocolors":"^1.1.1","@inquirer/prompts":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","husky":"^9.0.0","vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","lint-staged":"^15.0.0","@biomejs/biome":"^2.3.11","@commitlint/cli":"^19.0.0","@vitest/coverage-v8":"^4.0.16","@commitlint/config-conventional":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/saas-cli_1.0.1_1767999238691_0.3761803599076927","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@beaulewis/saas-cli","version":"1.0.2","description":"A unified CLI tool for Flutter SaaS development with live documentation, code generation, and backend integration","type":"module","packageManager":"pnpm@9.15.0","bin":{"saas":"bin/saas.js"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"dev":"tsx watch src/index.ts","build":"tsup","start":"node dist/index.js","lint":"biome check src/","lint:fix":"biome check --write src/","format":"biome format --write src/","format:check":"biome format src/","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration","test:coverage":"vitest run --coverage","prepare":"husky","prepublishOnly":"pnpm build"},"dependencies":{"@inquirer/prompts":"^8.1.0","cli-table3":"^0.6.5","commander":"^14.0.2","dotenv":"17.2.3","got":"^14.6.6","handlebars":"^4.7.8","keyv":"^5.5.5","keyv-file":"^5.3.3","ora":"^9.0.0","picocolors":"^1.1.1","yaml":"^2.8.2"},"devDependencies":{"@biomejs/biome":"^2.3.11","@commitlint/cli":"^19.0.0","@commitlint/config-conventional":"^19.0.0","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","husky":"^9.0.0","lint-staged":"^15.0.0","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.16"},"engines":{"node":">=20"},"keywords":["cli","flutter","saas","supabase","riverpod","drift","code-generation","documentation"],"repository":{"type":"git","url":"git+https://github.com/Beaulewis1977/saas-cli.git"},"homepage":"https://github.com/Beaulewis1977/saas-cli#readme","bugs":{"url":"https://github.com/Beaulewis1977/saas-cli/issues"},"author":{"name":"Beau Lewis","email":"blewisxx@gmail.com"},"license":"MIT","publishConfig":{"access":"public"},"_id":"@beaulewis/saas-cli@1.0.2","gitHead":"930976ea4b59b2fda3e00271fb314ec6a064f055","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-q2dkHhgvxDqcZb5XQ7xKLYcunihoeS3PuzSRo9HIC9wLT5vlyDY/+eesfpXxT3r/zpRwapyY3RKfBmVSE336ow==","shasum":"3136fa2923c930768267b9bd16df4104235ad33f","tarball":"https://registry.npmjs.org/@beaulewis/saas-cli/-/saas-cli-1.0.2.tgz","fileCount":57,"unpackedSize":315148,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEE00aTiIgScAGkZZEYieS2RDiRQ1wpADFYwrKy0wE5cAiAuB9vTB8XwHtCbLwMq5N6AB5n44Pmr9DRcKP1KUrG4gQ=="}]},"_npmUser":{"name":"beaulewis","email":"blewisxx@gmail.com"},"directories":{},"maintainers":[{"name":"beaulewis","email":"blewisxx@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/saas-cli_1.0.2_1768953099664_0.5597285497798059"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-09T03:05:45.910Z","modified":"2026-01-20T23:51:39.935Z","1.0.0":"2026-01-09T03:05:46.261Z","1.0.1":"2026-01-09T22:53:58.847Z","1.0.2":"2026-01-20T23:51:39.821Z"},"bugs":{"url":"https://github.com/Beaulewis1977/saas-cli/issues"},"author":{"name":"Beau Lewis","email":"blewisxx@gmail.com"},"license":"MIT","homepage":"https://github.com/Beaulewis1977/saas-cli#readme","keywords":["cli","flutter","saas","supabase","riverpod","drift","code-generation","documentation"],"repository":{"type":"git","url":"git+https://github.com/Beaulewis1977/saas-cli.git"},"description":"A unified CLI tool for Flutter SaaS development with live documentation, code generation, and backend integration","maintainers":[{"name":"beaulewis","email":"blewisxx@gmail.com"}],"readme":"<div align=\"center\">\n\n# saas-cli\n\n**A unified CLI for Flutter SaaS development**\n\nLive documentation · AI-powered assistance · Code generation · Backend integrations\n\n[![npm version](https://img.shields.io/npm/v/@beaulewis/saas-cli.svg?style=flat-square)](https://www.npmjs.com/package/@beaulewis/saas-cli)\n[![npm downloads](https://img.shields.io/npm/dm/@beaulewis/saas-cli.svg?style=flat-square)](https://www.npmjs.com/package/@beaulewis/saas-cli)\n[![license](https://img.shields.io/npm/l/@beaulewis/saas-cli.svg?style=flat-square)](https://github.com/Beaulewis1977/saas-cli/blob/main/LICENSE)\n[![CI](https://img.shields.io/github/actions/workflow/status/Beaulewis1977/saas-cli/ci.yml?branch=develop&style=flat-square&label=CI)](https://github.com/Beaulewis1977/saas-cli/actions/workflows/ci.yml)\n[![node](https://img.shields.io/node/v/@beaulewis/saas-cli.svg?style=flat-square)](https://nodejs.org)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/Beaulewis1977/saas-cli/pulls)\n\n</div>\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Commands](#commands)\n  - [docs](#docs---documentation-lookup)\n  - [ask](#ask---ai-powered-questions)\n  - [gen](#gen---code-generation)\n  - [supabase](#supabase---database-management)\n  - [redis](#redis---cache-management)\n  - [cf](#cf---cloudflare-workers)\n  - [push](#push---push-notifications)\n  - [flags](#flags---feature-flags)\n  - [video](#video---video-processing)\n  - [init](#init---project-scaffolding)\n- [Environment Variables](#environment-variables)\n- [Configuration](#configuration)\n- [Security Notes](#security-notes)\n- [Contributing](#contributing)\n- [License](#license)\n- [Author](#author)\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **Live Documentation** | Query Flutter, Dart, and package docs via Context7 |\n| **AI-Powered Questions** | Ask technical questions with Perplexity AI |\n| **Code Generation** | Generate Riverpod, Drift, GoRouter, Freezed, and more |\n| **Supabase Management** | RLS policies, migrations, types, functions |\n| **Backend Services** | Redis, Cloudflare Workers, OneSignal, PostHog |\n| **Video Processing** | FFmpeg-based video operations |\n\n---\n\n## Requirements\n\n### Core Requirement\n\n- **Node.js 20+** - [Download](https://nodejs.org/)\n\n### External CLI Dependencies\n\nSome commands require external CLIs to be installed. The table below shows which CLIs are needed for each command:\n\n| Command | Required CLI | Installation |\n|---------|--------------|--------------|\n| `saas init flutter` | Flutter SDK | [flutter.dev/get-started/install](https://docs.flutter.dev/get-started/install) |\n| `saas init add` | Flutter SDK | [flutter.dev/get-started/install](https://docs.flutter.dev/get-started/install) |\n| `saas init worker` | Wrangler CLI | `npm install -g wrangler` |\n| `saas init supabase` | Supabase CLI | `npm install -g supabase` or `brew install supabase/tap/supabase` |\n| `saas video *` | FFmpeg | `brew install ffmpeg` (macOS) or `apt install ffmpeg` (Linux) |\n| `saas cf *` | Wrangler CLI | `npm install -g wrangler` |\n| `saas supabase *` | Supabase CLI | `npm install -g supabase` or `brew install supabase/tap/supabase` |\n\n### Commands Without External Dependencies\n\nThese commands work out of the box with just Node.js:\n\n- `saas docs` - Documentation lookup (requires `CONTEXT7_API_KEY`)\n- `saas ask` - AI questions (requires `PERPLEXITY_API_KEY`)\n- `saas gen` - Code generation\n- `saas redis` - Redis management (requires `REDIS_URL`)\n- `saas push` - Push notifications (requires OneSignal keys)\n- `saas flags` - Feature flags (requires PostHog keys)\n\n---\n\n## Installation\n\n```bash\n# Global install via npm\nnpm install -g @beaulewis/saas-cli\n\n# Global install via pnpm\npnpm add -g @beaulewis/saas-cli\n\n# Run without installing\nnpx @beaulewis/saas-cli --help\n```\n\nVerify installation:\n\n```bash\nsaas --version\n```\n\n<details>\n<summary><strong>Install from source</strong></summary>\n\n```bash\ngit clone https://github.com/Beaulewis1977/saas-cli.git\ncd saas-cli\npnpm install\npnpm build\npnpm link --global\n```\n\n</details>\n\n---\n\n## Quick Start\n\n```bash\n# Look up Flutter documentation\nsaas docs flutter \"ListView.builder with pagination\"\n\n# Ask AI a question\nsaas ask \"best practices for offline-first Flutter apps\"\n\n# Generate a Riverpod notifier\nsaas gen riverpod notifier UserList --state \"List<User>\"\n```\n\n---\n\n## Commands\n\n### `docs` - Documentation Lookup\n\nQuery live documentation via Context7.\n\n```bash\nsaas docs flutter \"widget lifecycle\"\nsaas docs dart \"async streams\"\nsaas docs package riverpod \"provider family\"\nsaas docs widget \"TextField decoration\"\n```\n\n### `ask` - AI-Powered Questions\n\nAsk technical questions using Perplexity AI.\n\n```bash\nsaas ask \"how to implement pull-to-refresh in Flutter\"\nsaas ask --model sonar-pro \"explain Flutter rendering pipeline\"\nsaas ask --model sonar-reasoning \"debug this riverpod error\"\nsaas ask --model sonar-deep-research \"compare state management solutions\"\n```\n\n**Available Models:**\n\n| Model | Use Case |\n|-------|----------|\n| `sonar` | Fast, general queries (default) |\n| `sonar-pro` | Enhanced responses |\n| `sonar-reasoning` | Complex problem solving |\n| `sonar-deep-research` | In-depth research |\n\n### `gen` - Code Generation\n\nGenerate Flutter code scaffolds.\n\n```bash\n# Riverpod\nsaas gen riverpod notifier UserList --state \"List<User>\"\nsaas gen riverpod provider AuthService --async\nsaas gen riverpod family UserProfile --param userId\n\n# Drift (SQLite)\nsaas gen drift table users --columns \"id:int,name:text,email:text\"\nsaas gen drift dao Users --table users\n\n# GoRouter\nsaas gen gorouter route /profile --name profile\nsaas gen gorouter shell MainShell --routes home,profile,settings\n\n# Freezed\nsaas gen freezed model User --fields \"id:int,name:String,email:String?\"\nsaas gen freezed union AuthState --variants loading,authenticated,unauthenticated\n\n# PowerSync\nsaas gen powersync schema --from supabase\nsaas gen powersync sync-rules users,profiles\n\n# Repository Pattern\nsaas gen repository User --methods \"getById,getAll,create,update,delete\"\n```\n\n### `supabase` - Database Management\n\nManage Supabase backend.\n\n```bash\n# View schema\nsaas supabase schema\nsaas supabase schema --table users\n\n# Create table\nsaas supabase create-table profiles --columns \"user_id:uuid,avatar:text,bio:text\"\n\n# RLS policies\nsaas supabase rls recipes --policy user-owned --column user_id\nsaas supabase rls posts --policy public-read\n\n# Migrations\nsaas supabase migration \"add_avatar_to_profiles\" --sql \"ALTER TABLE...\"\n\n# Generate TypeScript types\nsaas supabase types\n\n# Database functions\nsaas supabase fn get_user_stats --returns json\n```\n\n### `redis` - Cache Management\n\nManage Redis cache and queues.\n\n```bash\nsaas redis ping\nsaas redis info\nsaas redis keys \"user:*\"\nsaas redis get \"session:abc123\"\nsaas redis set \"cache:data\" '{\"key\":\"value\"}' --ttl 3600\nsaas redis del \"cache:data\"\nsaas redis queue add jobs '{\"task\":\"process\"}'\nsaas redis queue pop jobs\n```\n\n### `cf` - Cloudflare Workers\n\nManage Cloudflare Workers and KV.\n\n```bash\n# Workers\nsaas cf worker list\nsaas cf worker deploy ./worker.js --name my-worker\nsaas cf worker logs my-worker\n\n# KV\nsaas cf kv list\nsaas cf kv get MY_NAMESPACE key123\nsaas cf kv put MY_NAMESPACE key123 \"value\"\n```\n\n### `push` - Push Notifications\n\nSend notifications via OneSignal.\n\n```bash\nsaas push send --title \"Hello\" --message \"World\" --segments \"All\"\nsaas push schedule --title \"Reminder\" --time \"2025-01-15T10:00:00Z\"\nsaas push template list\nsaas push template create welcome --title \"Welcome!\" --message \"Thanks for joining\"\n```\n\n### `flags` - Feature Flags\n\nManage feature flags via PostHog.\n\n```bash\nsaas flags list\nsaas flags get dark-mode\nsaas flags set dark-mode --enabled --percent 50\nsaas flags add-user dark-mode user123\nsaas flags remove-user dark-mode user123\n```\n\n### `video` - Video Processing\n\nFFmpeg-based video operations.\n\n```bash\nsaas video info input.mp4\nsaas video thumbnail input.mp4 --time 00:00:05 --output thumb.jpg\nsaas video resize input.mp4 --width 1280 --height 720\nsaas video compress input.mp4 --quality medium\nsaas video trim input.mp4 --start 00:00:10 --end 00:00:30\nsaas video combine video1.mp4 video2.mp4 --output merged.mp4\n```\n\n### `init` - Project Scaffolding\n\nInitialize new projects.\n\n```bash\nsaas init flutter my-app --template saas\nsaas init supabase --project my-app\nsaas init worker my-edge-function\nsaas init add riverpod,drift,freezed\n```\n\n---\n\n## Environment Variables\n\nThe CLI reads environment variables for API keys and service credentials. You have two options:\n\n### Option 1: Project `.env` File (Recommended)\n\nCreate a `.env` file in your project directory. This allows different API keys per project.\n\n```bash\n# Create .env in your project root (add to .gitignore!)\ntouch .env\n```\n\n**Copy this template into your `.env` file:**\n\n```ini\n# Documentation (Context7)\nCONTEXT7_API_KEY=\n\n# AI Questions (Perplexity)\nPERPLEXITY_API_KEY=\n\n# Supabase\nSUPABASE_PROJECT_REF=\nSUPABASE_ACCESS_TOKEN=\n\n# Redis\nREDIS_URL=\n\n# Cloudflare Workers\nCF_API_TOKEN=\n\n# Push Notifications (OneSignal)\nONESIGNAL_APP_ID=\nONESIGNAL_API_KEY=\n\n# Feature Flags (PostHog)\nPOSTHOG_API_KEY=\nPOSTHOG_PROJECT_ID=\n```\n\n**Add `.env` to your `.gitignore` to avoid committing secrets:**\n\n```gitignore\n.env\n```\n\n### Option 2: Shell Exports (Global)\n\nAdd these to your `~/.bashrc`, `~/.zshrc`, or shell config for system-wide access:\n\n```bash\n# Documentation (Context7)\nexport CONTEXT7_API_KEY=\"your-key-here\"\n\n# AI Questions (Perplexity)\nexport PERPLEXITY_API_KEY=\"pplx-your-key-here\"\n\n# Supabase\nexport SUPABASE_PROJECT_REF=\"your-project-ref\"\nexport SUPABASE_ACCESS_TOKEN=\"your-access-token\"\n\n# Redis\nexport REDIS_URL=\"redis://localhost:6379\"\n\n# Cloudflare Workers\nexport CF_API_TOKEN=\"your-cloudflare-token\"\n\n# Push Notifications (OneSignal)\nexport ONESIGNAL_APP_ID=\"your-app-id\"\nexport ONESIGNAL_API_KEY=\"your-api-key\"\n\n# Feature Flags (PostHog)\nexport POSTHOG_API_KEY=\"your-posthog-key\"\nexport POSTHOG_PROJECT_ID=\"your-project-id\"\n```\n\nAfter adding, reload your shell: `source ~/.bashrc` or `source ~/.zshrc`\n\n> **Note:** Shell-exported environment variables take precedence over `.env` file values. If you have both, the shell export wins.\n\n### Variable Reference\n\n| Variable | Description | Required For |\n|----------|-------------|--------------|\n| `CONTEXT7_API_KEY` | Context7 API key | `docs` |\n| `PERPLEXITY_API_KEY` | Perplexity API key | `ask` |\n| `SUPABASE_PROJECT_REF` | Supabase project reference | `supabase` |\n| `SUPABASE_ACCESS_TOKEN` | Supabase access token | `supabase` |\n| `REDIS_URL` | Redis connection URL | `redis` |\n| `CF_API_TOKEN` | Cloudflare API token | `cf` |\n| `ONESIGNAL_APP_ID` | OneSignal app ID | `push` |\n| `ONESIGNAL_API_KEY` | OneSignal API key | `push` |\n| `POSTHOG_API_KEY` | PostHog API key | `flags` |\n| `POSTHOG_PROJECT_ID` | PostHog project ID | `flags` |\n\n---\n\n## Global Options\n\n```\n--json          Output results as JSON\n-v, --verbose   Enable verbose output\n--debug         Enable debug output\n-V, --version   Display version number\n-h, --help      Display help\n```\n\n---\n\n## Configuration\n\nThe CLI stores configuration in `~/.config/saas-cli/`:\n\n```\n~/.config/saas-cli/\n├── config.yaml    # CLI settings\n└── cache/         # Response cache for faster lookups\n```\n\n---\n\n## Security Notes\n\nThis CLI executes external tools (FFmpeg, Wrangler, Flutter, Supabase CLI) via shell commands. Ensure you trust the input you provide, especially for:\n\n- Project names in `init` commands\n- File paths in `video` commands\n- Custom arguments passed to backend CLIs\n\n---\n\n## Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines.\n\n- **Bug reports:** [Open an issue](https://github.com/Beaulewis1977/saas-cli/issues/new)\n- **Feature requests:** [Start a discussion](https://github.com/Beaulewis1977/saas-cli/discussions)\n- **Pull requests:** Fork, create a branch, and submit a PR\n\n```bash\n# Clone and install\ngit clone https://github.com/Beaulewis1977/saas-cli.git\ncd saas-cli\npnpm install\n\n# Run in development\npnpm dev\n\n# Run tests\npnpm test\n\n# Build\npnpm build\n```\n\n---\n\n## License\n\n[MIT License](LICENSE) - see LICENSE file for details.\n\n---\n\n<div align=\"center\">\n\n## Author\n\n**Beau Lewis**\n\n[![GitHub](https://img.shields.io/badge/GitHub-@Beaulewis1977-181717?style=flat-square&logo=github)](https://github.com/Beaulewis1977)\n[![Email](https://img.shields.io/badge/Email-blewisxx@gmail.com-EA4335?style=flat-square&logo=gmail&logoColor=white)](mailto:blewisxx@gmail.com)\n\n---\n\n### Support This Project\n\nIf you find this tool useful and want to support continued development:\n\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support%20Me-FF5E5B?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/beaulewis)\n[![Venmo](https://img.shields.io/badge/Venmo-@BeauinTulsa-3D95CE?style=for-the-badge&logo=venmo&logoColor=white)](https://venmo.com/BeauinTulsa)\n\n</div>\n","readmeFilename":"README.md"}