{"id":31859413,"url":"https://github.com/ledevnovice/envoy-cli","last_synced_at":"2025-10-12T15:25:09.503Z","repository":{"id":317997624,"uuid":"1069415345","full_name":"LeDevNovice/envoy-cli","owner":"LeDevNovice","description":"The envoy between your code and environment variable config - Never miss an environment variable again","archived":false,"fork":false,"pushed_at":"2025-10-04T12:19:49.000Z","size":38,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-04T12:28:56.507Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LeDevNovice.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T22:42:41.000Z","updated_at":"2025-10-04T12:15:13.000Z","dependencies_parsed_at":"2025-10-04T12:28:59.022Z","dependency_job_id":"ec45eb1d-2a8c-4992-b3b1-aa6b4a266581","html_url":"https://github.com/LeDevNovice/envoy-cli","commit_stats":null,"previous_names":["ledevnovice/envoy-cli"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/LeDevNovice/envoy-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeDevNovice%2Fenvoy-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeDevNovice%2Fenvoy-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeDevNovice%2Fenvoy-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeDevNovice%2Fenvoy-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeDevNovice","download_url":"https://codeload.github.com/LeDevNovice/envoy-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeDevNovice%2Fenvoy-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011851,"owners_count":26085004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-12T15:25:03.998Z","updated_at":"2025-10-12T15:25:09.496Z","avatar_url":"https://github.com/LeDevNovice.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# envoy-cli\n\n**The envoy between your code and environment variable config - Never miss an environment variable again**\n\n[![npm version](https://img.shields.io/npm/v/envoy-cli.svg)](https://www.npmjs.com/package/envoy-cli)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node Version](https://img.shields.io/badge/node-%3E%3D16.0.0-brightgreen)](https://nodejs.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue)](https://www.typescriptlang.org/)\n[![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://github.com/LeDevNovice/envoy-cli)\n\n---\n\n## 📖 Table of Contents\n\n- [Why envoy-cli ?](#-why-envoy-cli)\n- [Features](#-features)\n- [Installation](#-installation)\n- [Windows Users](#-windows-users)\n- [Quick Start](#-quick-start)\n- [Commands](#-commands)\n  - [init](#init---initialize-configuration)\n  - [check](#check---verify-environment-variables)\n  - [sync](#sync---synchronize-variables)\n- [Configuration](#-configuration)\n- [Supported Patterns](#-supported-patterns)\n- [Examples](#-examples)\n- [CI/CD Integration](#-cicd-integration)\n- [Development](#-development)\n- [Project Structure](#-project-structure)\n- [Contributing](#-contributing)\n- [License](#-license)\n\n---\n\n## Why envoy-cli ?\n\nHave you ever :\n- **Forgotten** to add an environment variable to `.env.example` ?\n- **Left unused** variables in your `.env.example` causing confusion ?\n- **Struggled** to keep environment files in sync across your team ?\n- **Wanted** to automate environment variable management in CI/CD ?\n\n**envoy-cli** solves all of these problems by automatically scanning your codebase and keeping your environment files perfectly synchronized.\n\n---\n\n## Features\n\n- **Automatic Detection** : Scans your entire codebase for environment variable usage\n- **Smart Analysis** : Identifies missing, unused, and properly synced variables\n- **Auto-Sync** : Automatically synchronize `.env.example` with your actual code\n- **Multiple Patterns** : Supports `process.env`, `import.meta.env`, Deno, PowerShell, and more...\n- **Type-Safe** : Built with TypeScript for maximum reliability\n- **Fast** : Efficient file scanning with configurable ignore patterns\n- **CI/CD Ready** : Built-in support for continuous integration pipelines\n- **Smart Comments** : Optionally add helpful comments showing where variables are used\n- **Beautiful Output** : Color-coded, clear console output with Chalk\n\n---\n\n## Installation\n\n### Global Installation (Recommended)\n\nInstall envoy-cli globally to use it in any project :\n\n```bash\nnpm install -g envoy-cli\n```\n\n### Local Installation (Project-Specific)\n\nInstall as a dev dependency in your project :\n\n```bash\nnpm install --save-dev envoy-cli\n```\n\nOr with pnpm :\n\n```bash\npnpm add -D envoy-cli\n```\n\nOr with yarn :\n\n```bash\nyarn add -D envoy-cli\n```\n\n---\n\n## Windows Users\n\n### Git Bash Compatibility\n\nIf you're using **Git Bash on Windows** and encounter issues running `envoy-cli`, this is due to a known compatibility issue between Git Bash (MinTTY) and Node.js CLI applications.\n\n#### Quick Fix for Git Bash\n\nAdd this alias to your `.bashrc`:\n\n```bash\n# Open your .bashrc\nnano ~/.bashrc\n\n# Add this line at the end\nalias envoy-cli='winpty envoy-cli.cmd'\n\n# Save and reload\nsource ~/.bashrc\n```\n\nNow `envoy-cli` will work correctly in Git Bash! \n\n#### Alternative: Use Native Windows Terminals\n\nIf you prefer not to use the alias, envoy-cli works perfectly in:\n- ✅ **PowerShell** (Recommended)\n- ✅ **Windows Terminal**\n- ✅ **Command Prompt (CMD)**\n- ✅ **WSL (Windows Subsystem for Linux)**\n\n```powershell\n# PowerShell - No configuration needed\nenvoy-cli --version\n```\n\n#### Why Does This Happen?\n\nGit Bash uses MinTTY, which doesn't natively handle Windows console applications. The `winpty` wrapper bridges this gap by properly routing stdin/stdout/stderr between MinTTY and Node.js.\n\n### Known Terminal Limitations\n\n**Git Bash Display Issues :**\n- Variable names with underscores may display as asterisks (`_VAR` shows as `*VAR`)\n- Exit codes may differ from other terminals\n- **Solution :** Use PowerShell, CMD, or Windows Terminal for accurate display\n\nThese are Git Bash (MinTTY) rendering quirks, not bugs in envoy-cli. \nAll functionality works correctly across all terminals.\n\n---\n\n## Quick Start\n\nGet started in 3 simple steps :\n\n```bash\n# 1. Initialize envoy-cli in your project\nenvoy-cli init\n\n# 2. Check your current environment variable status\nenvoy-cli check\n\n# 3. Auto-fix any issues\nenvoy-cli sync --auto\n```\n\n---\n\n## Commands\n\n### `init` - Initialize Configuration\n\nInitialize envoy-cli in your current project.\n\n```bash\nenvoy-cli init\n```\n\n**What it does :**\n- ✅ Validates that you're in a Node.js project (checks for `package.json`)\n- ✅ Creates `.env.example` if it doesn't exist\n- ✅ Generates `.envoyrc.json` configuration file with default settings\n- ✅ Provides helpful next steps\n\n**Example Output :**\n```\nInitializing envoy-cli configuration...\n\n✓ Created .env.example\n✓ .envoyrc.json file created successfully.\n✓ envoy-cli has been successfully initialized in your project !\n\nNext steps:\n  • First step\n  • Second step\n  • Third step\n```\n\n---\n\n### `check` - Verify Environment Variables\n\nScan your codebase and check the status of all environment variables.\n\n```bash\nenvoy-cli check\n```\n\n**Options:**\n- `--ci` - Exit with code 1 if issues are found (perfect for CI/CD pipelines)\n\n**What it shows :**\n\n1. **MISSING**: Variables used in your code but not in `.env.example`\n   - Shows the variable name\n   - Shows first file and line where it's used\n   - Shows total number of occurrences\n\n2. **UNUSED**: Variables in `.env.example` but not used in your code\n   - Helps identify outdated or unnecessary variables\n\n3. **SYNCED**: Variables that are properly configured\n   - Shows how many places each variable is used\n\n**Example Output :**\n```\nEnvoy - Check Environment Variables\n\nFound 15 environment variables in code\n\nMISSING in .env.example (3):\n  ✗ API_KEY\n    → First used in src/config.ts:12\n    → Also used in 2 other locations\n  ✗ DATABASE_URL\n    → First used in src/db/connection.ts:5\n  ✗ REDIS_URL\n    → First used in src/cache/redis.ts:8\n\nUNUSED in .env.example (1):\n  ⚠ OLD_API_TOKEN\n    → Not found in codebase\n\nSYNCED (11):\n  ✓ PORT\n    → Used in 3 locations\n  ✓ NODE_ENV\n    → Used in 5 locations\n  ...\n\n💡 Run \"envoy-cli sync --auto\" to fix automatically\n```\n\n**CI/CD Mode:**\n```bash\nenvoy-cli check --ci\n```\nExits with code 1 if any missing or unused variables are found, failing your pipeline.\n\n---\n\n### `sync` - Synchronize Variables\n\nSynchronize your `.env.example` file with the variables actually used in your code.\n\n```bash\nenvoy-cli sync [options]\n```\n\n**Options:**\n- `--auto` - Automatically add missing variables to `.env.example`\n- `--remove` - Automatically remove unused variables from `.env.example`\n- `--comments` - Add helpful comments showing where variables are used\n\n**Examples :**\n\n```bash\n# Add missing variables only\nenvoy-cli sync --auto\n\n# Remove unused variables only\nenvoy-cli sync --remove\n\n# Add missing and remove unused\nenvoy-cli sync --auto --remove\n\n# Add missing with location comments\nenvoy-cli sync --auto --comments\n```\n\n**With `--comments` enabled :**\n```env\n# Environment Variables\n\n# Used in src/config.ts:12\n# Also used in 2 other location(s)\nAPI_KEY=\n\n# Used in src/db/connection.ts:5\nDATABASE_URL=\n```\n\n**Example Output :**\n```\nStarting synchronization process...\n\n✓ Added API_KEY to .env.example\n✓ Added DATABASE_URL to .env.example\n✓ Added REDIS_URL to .env.example\n⚠ Removed OLD_API_TOKEN from .env.example\n\n✨ Synchronization complete !\n```\n\n---\n\n## Configuration\n\nenvoy-cli uses a `.envoyrc.json` file for configuration (created automatically by `init`).\n\n### Default Configuration\n\n```json\n{\n  \"exclude\": [\n    \"dist/**\",\n    \"build/**\",\n    \"coverage/**\"\n  ]\n}\n```\n\n### Available Options\n\n| Option | Type | Description | Default |\n|--------|------|-------------|---------|\n| `exclude` | `string[]` | Glob patterns to ignore during scanning | `[\"dist/**\", \"build/**\", \"coverage/**\"]` |\n\n### Custom Configuration Example\n\n```json\n{\n  \"exclude\": [\n    \"dist/**\",\n    \"build/**\",\n    \"coverage/**\",\n    \"node_modules/**\",\n    \".git/**\",\n    \"temp/**\",\n    \"*.test.ts\",\n    \"**/__tests__/**\"\n  ]\n}\n```\n\n---\n\n## Supported Patterns\n\nenvoy-cli automatically detects environment variables in multiple formats :\n\n### Node.js - Traditional Access\n\n```javascript\n// Direct access\nconst apiKey = process.env.API_KEY;\n\n// Bracket notation\nconst dbUrl = process.env['DATABASE_URL'];\nconst token = process.env[\"API_TOKEN\"];\n```\n\n### Node.js - Modern Destructuring\n\n```javascript\n// Simple destructuring\nconst { API_KEY } = process.env;\n\n// Multiple variables\nconst { API_KEY, DATABASE_URL, PORT } = process.env;\n\n// With renaming\nconst { API_KEY: apiKey, DATABASE_URL: dbUrl } = process.env;\n\n// With default values\nconst { PORT = '3000', NODE_ENV = 'development' } = process.env;\n\n// Mixed patterns\nconst {\n    API_KEY: apiKey = 'default_key',\n    DATABASE_URL,\n    PORT = '3000',\n    ...otherVars  // rest operator is ignored\n} = process.env;\n\n// With let/var (works too !)\nlet { REDIS_URL } = process.env;\nvar { CACHE_TTL } = process.env;\n```\n\n### Template Literals \n\n```javascript\n// In URLs\nconst apiUrl = `http://localhost:${process.env.PORT}/api`;\n\n// In connection strings\nconst dbUrl = `postgresql://user:pass@${process.env.DB_HOST}:${process.env.DB_PORT}/mydb`;\n\n// Multiple variables in one string\nconst url = `${process.env.PROTOCOL}://${process.env.HOST}:${process.env.PORT}`;\n```\n\n### Vite / Frontend Frameworks\n\n```javascript\n// Traditional Vite access\nconst apiUrl = import.meta.env.VITE_API_URL;\nconst mode = import.meta.env.VITE_MODE;\n\n// Vite destructuring \nconst { VITE_API_URL, VITE_MODE } = import.meta.env;\n\n// Vite template literals \nconst endpoint = `${import.meta.env.VITE_API_URL}/users`;\n```\n\n### Deno\n\n```javascript\n// Deno environment access\nconst apiKey = Deno.env.get('API_KEY');\nconst port = Deno.env.get('PORT');\n```\n\n### PowerShell\n\n```powershell\n# PowerShell environment variables\n$apiKey = $env:API_KEY\n$dbUrl = $env:DATABASE_URL\n```\n\n### Supported File Extensions\n\nenvoy-cli scans these file types by default:\n- `.ts` - TypeScript\n- `.tsx` - TypeScript React\n- `.js` - JavaScript\n- `.jsx` - JavaScript React\n- `.mjs` - ES Modules\n- `.cjs` - CommonJS\n\n---\n\n## 📚 Examples\n\n### Example 1: Basic Project Setup\n\n```bash\n# Start a new project\nmkdir my-app \u0026\u0026 cd my-app\nnpm init -y\n\n# Install envoy-cli\nnpm install -D envoy-cli\n\n# Initialize\nnpx envoy-cli init\n\n# Your code uses some env variables\necho \"const key = process.env.API_KEY;\" \u003e index.js\n\n# Check status\nnpx envoy-cli check\n# Output: MISSING in .env.example (1): API_KEY\n\n# Auto-fix\nnpx envoy-cli sync --auto\n# Output: ✓ Added API_KEY to .env.example\n```\n\n### Example 2: Team Collaboration\n\n```bash\n# Team member A adds new feature using env variables\ngit pull\nenvoy-cli check\n# Output: MISSING in .env.example (2): STRIPE_KEY, STRIPE_SECRET\n\n# Sync and commit\nenvoy-cli sync --auto --comments\ngit add .env.example\ngit commit -m \"Add Stripe environment variables\"\n\n# Team member B pulls changes\ngit pull\n# .env.example is now up to date!\n```\n\n### Example 3: Cleaning Up Old Variables\n\n```bash\n# After refactoring, check for unused variables\nenvoy-cli check\n# Output: UNUSED in .env.example (5): OLD_API_KEY, DEPRECATED_URL, ...\n\n# Remove unused variables\nenvoy-cli sync --remove\n# Output: ⚠ Removed OLD_API_KEY from .env.example\n#         ⚠ Removed DEPRECATED_URL from .env.example\n```\n\n### Example 4: Adding to Package Scripts\n\nAdd envoy-cli checks to your `package.json` :\n\n```json\n{\n  \"scripts\": {\n    \"env:check\": \"envoy-cli check\",\n    \"env:sync\": \"envoy-cli sync --auto --comments\",\n    \"env:clean\": \"envoy-cli sync --remove\",\n    \"pretest\": \"envoy-cli check --ci\",\n    \"prepare\": \"envoy-cli check\"\n  }\n}\n```\n\nThen use :\n```bash\nnpm run env:check    # Check status\nnpm run env:sync     # Auto-fix with comments\nnpm run env:clean    # Remove unused\n```\n\n---\n\n## CI/CD Integration\n\n### GitHub Actions\n\nCreate `.github/workflows/env-check.yml`:\n\n```yaml\nname: Environment Variables Check\n\non:\n  push:\n    branches: [main, develop]\n  pull_request:\n    branches: [main, develop]\n\njobs:\n  env-check:\n    runs-on: ubuntu-latest\n    \n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n      \n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n          cache: 'npm'\n      \n      - name: Install dependencies\n        run: npm ci\n      \n      - name: Check environment variables\n        run: npx envoy-cli check --ci\n      \n      - name: Comment on PR (if check fails)\n        if: failure() \u0026\u0026 github.event_name == 'pull_request'\n        uses: actions/github-script@v7\n        with:\n          script: |\n            github.rest.issues.createComment({\n              issue_number: context.issue.number,\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              body: 'Environment variable check failed! Please run `envoy-cli sync --auto` and commit the changes.'\n            })\n```\n\n### GitLab CI\n\nAdd to `.gitlab-ci.yml` :\n\n```yaml\nenv-check:\n  stage: test\n  image: node:20\n  script:\n    - npm ci\n    - npx envoy-cli check --ci\n  only:\n    - merge_requests\n    - main\n    - develop\n```\n\n### CircleCI\n\nAdd to `.circleci/config.yml`:\n\n```yaml\nversion: 2.1\n\njobs:\n  env-check:\n    docker:\n      - image: cimg/node:20.0\n    steps:\n      - checkout\n      - restore_cache:\n          keys:\n            - v1-dependencies-{{ checksum \"package-lock.json\" }}\n      - run: npm ci\n      - run: npx envoy-cli check --ci\n\nworkflows:\n  version: 2\n  build-and-test:\n    jobs:\n      - env-check\n```\n\n### Pre-commit Hook (Husky)\n\nInstall Husky:\n```bash\nnpm install -D husky\nnpx husky init\n```\n\nCreate `.husky/pre-commit`:\n```bash\n#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpx envoy-cli check --ci\n```\n\nNow every commit will verify environment variables!\n\n---\n\n## Development\n\n### Prerequisites\n\n- Node.js \u003e= 16.0.0\n- npm, pnpm, or yarn\n\n### Setup Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/LeDevNovice/envoy-cli.git\ncd envoy-cli\n\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Generate coverage report\nnpm run test:coverage\n\n# Build the project\nnpm run build\n\n# Run in development mode\nnpm run dev\n```\n\n### Available Scripts\n\n| Script | Description |\n|--------|-------------|\n| `npm run build` | Compile TypeScript to JavaScript |\n| `npm run dev` | Watch mode for development |\n| `npm start` | Run the compiled CLI |\n| `npm test` | Run all tests |\n| `npm run test:watch` | Run tests in watch mode |\n| `npm run test:coverage` | Generate test coverage report |\n\n### Running Locally\n\nAfter building, you can test the CLI locally:\n\n```bash\n# Build first\nnpm run build\n\n# Link globally\nnpm link\n\n# Now you can use envoy-cli anywhere\ncd /path/to/your/project\nenvoy-cli init\n```\n\n### Running Tests\n\n```bash\n# Run all tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests in watch mode (for development)\nnpm run test:watch\n```\n\n---\n\n## FAQ\n\n### Why doesn't envoy-cli work in Git Bash on Windows?\n\nGit Bash uses MinTTY which has compatibility issues with Node.js CLI apps. \nSee [Windows Users](#-windows-users) section for the solution.\n\n---\n\n## Contributing\n\nContributions are welcome ! Here's how you can help :\n\n### Reporting Bugs\n\n1. Check if the bug has already been reported in [Issues](https://github.com/LeDevNovice/envoy-cli/issues)\n2. If not, create a new issue with :\n   - Clear title and description\n   - Steps to reproduce\n   - Expected vs actual behavior\n   - Your environment (OS, Node version, etc...)\n\n### Suggesting Features\n\n1. Open an issue with the `enhancement` label\n2. Describe the feature and why it would be useful\n3. Provide examples of how it would work\n\n### Submitting Pull Requests\n\n1. Fork the repository\n2. Create a new branch : `git checkout -b feature/amazing-feature`\n3. Make your changes\n4. Write or update tests\n5. Ensure all tests pass : `npm test`\n6. Commit your changes : `git commit -m 'Add amazing feature'`\n7. Push to the branch: `git push origin feature/amazing-feature`\n8. Open a Pull Request\n\n### Development Guidelines\n\n- Write clear, descriptive commit messages\n- Follow the existing code style\n- Add tests for new features\n- Update documentation as needed\n- Keep PRs focused on a single feature/fix\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## Acknowledgments\n\n- Built with [Commander.js](https://github.com/tj/commander.js/) - CLI framework\n- Styled with [Chalk](https://github.com/chalk/chalk) - Terminal string styling\n- File globbing with [glob](https://github.com/isaacs/node-glob) - Pattern matching\n- Tested with [Vitest](https://vitest.dev/) - Fast unit testing\n- Inspired by the need for better environment variable management in team development projects\n\n---\n\n## Support \u0026 Contact\n\n- **Bug Reports** : [GitHub Issues](https://github.com/LeDevNovice/envoy-cli/issues)\n- **Twitter** : [@LeDevNovice](https://twitter.com/LeDevNovice)\n\n---\n\n## Star History\n\nIf you find this project useful, please consider giving it a star on GitHub !\n\n---\n\n**Made with ❤️ by [LeDevNovice](https://github.com/LeDevNovice)**\n\n*Never miss an environment variable again!*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fledevnovice%2Fenvoy-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fledevnovice%2Fenvoy-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fledevnovice%2Fenvoy-cli/lists"}