{"id":38649188,"url":"https://github.com/arach/peal","last_synced_at":"2026-01-17T09:17:58.708Z","repository":{"id":301276146,"uuid":"1008693026","full_name":"arach/peal","owner":"arach","description":" Craft your signature sound","archived":false,"fork":false,"pushed_at":"2025-09-07T04:45:35.000Z","size":69383,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-01T11:17:54.891Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/arach.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2025-06-26T00:30:19.000Z","updated_at":"2025-09-07T04:45:38.000Z","dependencies_parsed_at":"2025-08-27T18:34:45.674Z","dependency_job_id":"d1dc2c75-9117-4047-a962-60493830f07a","html_url":"https://github.com/arach/peal","commit_stats":null,"previous_names":["arach/peal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arach/peal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arach%2Fpeal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arach%2Fpeal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arach%2Fpeal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arach%2Fpeal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arach","download_url":"https://codeload.github.com/arach/peal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arach%2Fpeal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-01-17T09:17:57.674Z","updated_at":"2026-01-17T09:17:58.679Z","avatar_url":"https://github.com/arach.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎵 Peal - Professional UI Sound Effects\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eProfessional UI sounds for web apps - CLI to manage sounds, thin Howler.js wrapper to play them\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#cli-commands\"\u003eCLI Commands\u003c/a\u003e •\n  \u003ca href=\"#library-api\"\u003eLibrary API\u003c/a\u003e •\n  \u003ca href=\"#web-app\"\u003eWeb App\u003c/a\u003e •\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Overview\n\nPeal is a professional sound library for web applications that includes:\n\n- **🎯 CLI Tool**: Quickly add curated UI sounds to your project\n- **📦 Library**: Lightweight Howler.js wrapper for playing sounds\n- **🌐 Web App**: Sound generation and exploration tool for creating custom effects\n\nThe CLI instantly copies high-quality UI sounds to your project and generates a helper file for easy playback.\n\n## ✨ Features\n\n### 🎯 CLI Tool\n- **Instant Setup**: Add professional UI sounds to any project in seconds\n- **Curated Collection**: 15+ high-quality sounds designed for web interfaces\n- **Auto-Generated Helper**: Creates a typed helper file with all your sounds\n- **Zero Configuration**: Works out of the box, no setup required\n\n### 📦 Library\n- **Lightweight**: Thin wrapper around Howler.js (~2KB gzipped)\n- **Cross-Platform**: Works in all modern browsers and React Native\n- **TypeScript First**: Full TypeScript support with generated types\n- **Performance**: Efficient sound loading and playback management\n\n### 🌐 Web App (Optional)\n- **Sound Generation**: Create custom UI sounds with real-time preview\n- **Waveform Visualization**: See the audio signature of generated sounds\n- **Export Options**: Download sounds as WAV files for use anywhere\n- **Advanced Controls**: Fine-tune frequency, duration, and effects\n\n## 🚀 Quick Start\n\nAdd professional UI sounds to your project in seconds:\n\n```bash\nnpx @peal-sounds/peal add success error notification\n```\n\nThis will:\n- Copy high-quality UI sounds to your project\n- Generate a helper file for easy playback\n- Automatically handle all file paths\n\n```javascript\nimport { peal } from './peal';\n\n// Use the generated methods - paths handled automatically\npeal.success();\npeal.error();\npeal.notification();\n\n// Or use the generic play method with options\npeal.play('success', { volume: 0.5 });\n```\n\n## 📦 Installation\n\n### As a CLI tool (Recommended)\n\nUse Peal without installing it globally:\n\n```bash\nnpx @peal-sounds/peal add [sounds...]\n```\n\nOr install globally for frequent use:\n\n```bash\nnpm install -g @peal-sounds/peal\n```\n\n### As a library\n\n```bash\nnpm install @peal-sounds/peal\n# or\npnpm add @peal-sounds/peal\n```\n\n## 🎯 CLI Commands\n\n### List available sounds\n```bash\nnpx @peal-sounds/peal list\n```\n\n### Play sounds\n```bash\n# Play a specific sound\nnpx @peal-sounds/peal play success\nnpx @peal-sounds/peal play click\n\n# Demo all sounds\nnpx @peal-sounds/peal demo\n\n# Demo with custom delay (ms)\nnpx @peal-sounds/peal demo --delay 2000\n```\n\n### Add sounds to your project\n```bash\n# Interactive selection\nnpx @peal-sounds/peal add\n\n# Add specific sounds\nnpx @peal-sounds/peal add click success error\n\n# Add to custom directory\nnpx @peal-sounds/peal add --dir ./assets/sounds\n\n# Generate TypeScript helper\nnpx @peal-sounds/peal add --typescript\n```\n\n### Remove sounds\n```bash\n# Interactive removal\nnpx @peal-sounds/peal remove\n\n# Remove specific sounds\nnpx @peal-sounds/peal remove click tap\n```\n\n## 🔊 Available Sounds\n\n- **UI Feedback**: `success`, `error`, `notification`, `click`, `tap`\n- **Transitions**: `transition`, `swoosh`\n- **Loading**: `loading`, `complete`\n- **Alerts**: `alert`, `warning`\n- **Messages**: `message`, `mention`\n- **Interactive**: `hover`, `select`, `toggle`\n- **System**: `startup`, `shutdown`, `unlock`\n\n## 📚 Library API\n\n### Generated Helper (Recommended)\n\nAfter running `npx @peal-sounds/peal add`, use the generated helper:\n\n```javascript\nimport { peal } from './peal';\n\n// Direct methods for each sound you added\npeal.success();\npeal.error();\npeal.click();\n\n// With options\npeal.success({ volume: 0.8 });\n```\n\n### Core API\n\n```javascript\nimport { peal } from './peal';\n\n// Play sounds\npeal.play('success', { volume: 0.5, loop: false, rate: 1.0 });\n\n// Control playback\npeal.stop('success');  // Stop specific sound\npeal.stop();           // Stop all sounds\npeal.pause('success'); // Pause specific sound\npeal.pause();          // Pause all sounds\n\n// Global controls\npeal.volume(0.8);      // Set global volume (0-1)\npeal.mute(true);       // Mute all sounds\n```\n\n### Advanced Usage\n\n```javascript\nimport { Peal } from '@peal-sounds/peal';\n\nconst customPeal = new Peal();\ncustomPeal.load('mySound', '/path/to/sound.wav');\ncustomPeal.play('mySound');\n```\n\n## 💻 Usage Examples\n\n### React\n\n```jsx\nimport { peal } from './peal';\n\nfunction SubmitButton({ onClick }) {\n  const handleClick = async () =\u003e {\n    peal.click();\n    try {\n      await onClick();\n      peal.success();\n    } catch (error) {\n      peal.error();\n    }\n  };\n\n  return (\n    \u003cbutton onClick={handleClick} onMouseEnter={() =\u003e peal.hover()}\u003e\n      Submit\n    \u003c/button\u003e\n  );\n}\n```\n\n### Vue\n\n```vue\n\u003ctemplate\u003e\n  \u003cbutton @click=\"handleSubmit\" @mouseenter=\"playHover\"\u003e\n    Submit\n  \u003c/button\u003e\n\u003c/template\u003e\n\n\u003cscript\u003e\nimport { peal } from './peal';\n\nexport default {\n  methods: {\n    playHover() {\n      peal.hover();\n    },\n    async handleSubmit() {\n      peal.click();\n      // Your submit logic\n    }\n  }\n}\n\u003c/script\u003e\n```\n\n### TypeScript\n\n```typescript\nimport { peal, PealOptions } from './peal';\n\nconst options: PealOptions = {\n  volume: 0.8,\n  loop: false\n};\n\npeal.play('success', options);\n```\n\n## 🌐 Web App Development\n\nFor local development of the web app (sound generation interface):\n\n```bash\ngit clone https://github.com/arach/peal.git\ncd peal\npnpm install\npnpm dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) to access the sound generation interface.\n\n## 🛠️ Tech Stack\n\n### CLI \u0026 Library\n- **Language**: TypeScript\n- **Audio Engine**: [Howler.js](https://howlerjs.com/)\n- **Build Tool**: [tsup](https://tsup.egoist.dev/)\n- **CLI Framework**: [Commander.js](https://github.com/tj/commander.js/)\n\n### Web App\n- **Framework**: Next.js 15 with App Router\n- **Styling**: Tailwind CSS\n- **Audio**: Web Audio API\n- **State**: Zustand\n\n## 🔗 Links\n\n- **npm Package**: [@peal-sounds/peal](https://www.npmjs.com/package/@peal-sounds/peal)\n- **GitHub**: [github.com/arach/peal](https://github.com/arach/peal)\n- **Web App**: [peal.app](https://peal.app) (Coming Soon)\n- **Issues**: [Report bugs](https://github.com/arach/peal/issues)\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m '✨ Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## 📝 License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eMade with 🎵 for better web experiences\u003c/strong\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farach%2Fpeal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farach%2Fpeal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farach%2Fpeal/lists"}