{"id":43769135,"url":"https://github.com/kluth/broady","last_synced_at":"2026-02-05T16:09:45.561Z","repository":{"id":327736335,"uuid":"1110572988","full_name":"kluth/broady","owner":"kluth","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-05T12:16:34.000Z","size":292,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-08T21:42:12.810Z","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/kluth.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-05T11:53:50.000Z","updated_at":"2025-12-05T12:16:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kluth/broady","commit_stats":null,"previous_names":["kluth/broady"],"tags_count":null,"template":false,"template_full_name":"nrwl/angular-template","purl":"pkg:github/kluth/broady","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kluth%2Fbroady","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kluth%2Fbroady/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kluth%2Fbroady/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kluth%2Fbroady/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kluth","download_url":"https://codeload.github.com/kluth/broady/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kluth%2Fbroady/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29125135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T14:05:12.718Z","status":"ssl_error","status_checked_at":"2026-02-05T14:03:53.078Z","response_time":65,"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-02-05T16:09:44.671Z","updated_at":"2026-02-05T16:09:45.553Z","avatar_url":"https://github.com/kluth.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎥 Broady - Professional Streaming Platform\n\n\u003cdiv align=\"center\"\u003e\n\n![Broady](https://img.shields.io/badge/Broady-Streaming-blueviolet?style=for-the-badge\u0026logo=video)\n![Angular](https://img.shields.io/badge/Angular-20-red?style=for-the-badge\u0026logo=angular)\n![Firebase](https://img.shields.io/badge/Firebase-Integrated-orange?style=for-the-badge\u0026logo=firebase)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue?style=for-the-badge\u0026logo=typescript)\n![Nx](https://img.shields.io/badge/Nx-Monorepo-143055?style=for-the-badge\u0026logo=nx)\n\n**The most advanced open-source streaming studio built with Angular 20, Firebase, AI, and cutting-edge web technologies.**\n\n[Features](#features) • [Quick Start](#-quick-start) • [Documentation](#-documentation) • [API Reference](#-api-reference) • [Contributing](#-contributing)\n\n\u003c/div\u003e\n\n---\n\n## 🌟 Features\n\n### 🎬 Core Streaming\n- **Multi-Platform Streaming**: Simultaneously stream to Twitch, YouTube, Facebook, Kick, TikTok, and custom RTMP\n- **Scene Management**: Unlimited scenes with smooth transitions\n- **Source Management**: Support for webcams, screen capture, images, videos, browser sources, and more\n- **Audio Mixer**: Professional multi-channel audio mixing with filters and effects\n- **Video Preview**: Real-time preview with performance monitoring\n- **Studio Mode**: Preview and program output with transitions\n\n### ☁️ Cloud Integration (Firebase)\n- **Authentication**: Email/password and Google OAuth\n- **Cloud Scene Storage**: Sync scenes across devices\n- **Scene Sharing**: Collaborate with other users\n- **Stream Analytics**: Comprehensive streaming statistics\n- **Real-time Collaboration**: Multi-user scene editing\n- **Cloud Functions**: Server less backend processing\n- **Remote Config**: Dynamic feature flags and configuration\n- **Performance Monitoring**: Track app performance in real-time\n- **Crashlytics**: Automatic error reporting\n- **App Check**: Security and abuse prevention\n- **Dynamic Links**: Deep linking support\n- **Push Notifications (FCM)**: Stream alerts and notifications\n- **ML Kit**: Machine learning capabilities\n\n### 🤖 AI-Powered Features\n- **Auto-Captions**: Real-time speech-to-text transcription\n- **Scene Recommendations**: AI suggests optimal scene setups\n- **Chat Moderation**: Intelligent content filtering\n- **Audio Enhancement**: AI-powered noise reduction and voice enhancement\n- **Title Generation**: AI-generated engaging stream titles\n- **Chatbot**: Automated chat responses\n- **Multi-Provider Support**: OpenAI (GPT-4), Google Gemini, Anthropic Claude\n\n### 🎵 Royalty-Free Music Library\n- **Integrated Music Browser**: Browse thousands of royalty-free tracks\n- **Multi-API Support**: Pixabay, Free Music Archive, Incompetech, Bensound\n- **Smart Filtering**: Filter by genre, mood, BPM, duration, license\n- **Playlist Management**: Create and manage custom playlists\n- **Built-in Player**: Full audio playback controls\n- **5 Default Tracks**: Ready to use out of the box\n\n### 💬 Advanced Chat Integration\n- **Multi-Platform Chat**: Unified chat from Twitch, YouTube, Facebook, Discord\n- **Chat Overlays**: Display chat on stream\n- **Chat Filtering**: Search and filter messages\n- **Chat Moderation**: Automated and manual moderation tools\n- **Chat Export**: Save chat logs\n\n### 🔔 Alerts \u0026 Notifications\n- **Customizable Alerts**: Followers, subscribers, donations, raids, hosts, cheers\n- **Alert Queue**: Manage alert display order\n- **Alert Templates**: Pre-made templates with customization\n- **Alert History**: Track all alerts\n- **Test Mode**: Preview alerts before going live\n\n### 🎨 Overlays Manager\n- **Multiple Overlay Types**: Webcam, text, images, videos, browser sources, alert boxes, chat boxes, timers, scoreboards, logos\n- **Drag \u0026 Drop**: Intuitive overlay positioning\n- **Layer Management**: Full control over overlay stacking\n- **Preset System**: Save and load overlay configurations\n\n### 📊 Analytics \u0026 Statistics\n- **Stream Statistics**: Real-time FPS, bitrate, dropped frames\n- **Viewer Analytics**: Peak viewers, average viewers, engagement metrics\n- **Performance Metrics**: CPU usage, memory usage, network stats\n- **Historical Data**: Track performance over time\n- **Export Reports**: Download analytics in various formats\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n```bash\nNode.js \u003e= 18.0.0\nnpm \u003e= 9.0.0\nAngular CLI \u003e= 17.0.0\nFirebase CLI \u003e= 13.0.0\n```\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-username/broady.git\ncd broady\n\n# Install dependencies\nnpm install\n\n# Copy environment template\ncp .env.example .env.local\n\n# Configure your credentials in .env.local\n# See SETUP.md for detailed configuration instructions\n\n# Start development server\nnpx nx serve studio\n\n# Build for production\nnpx nx build studio --configuration=production\n```\n\n### Firebase Setup\n\n```bash\n# Install Firebase CLI\nnpm install -g firebase-tools\n\n# Login to Firebase\nfirebase login\n\n# Initialize Firebase project\nfirebase init\n\n# Deploy to Firebase Hosting\nnpm run deploy\n```\n\n---\n\n## 📚 Documentation\n\n### Core Documentation\n- **[SETUP.md](./SETUP.md)** - Complete setup and configuration guide\n- **[API_DOCUMENTATION.md](./API_DOCUMENTATION.md)** - API reference for all services\n- **[ARCHITECTURE.md](./ARCHITECTURE.md)** - System architecture and design patterns\n\n### Service Documentation\n- **Firebase Service** - Cloud integration, authentication, storage\n- **AI Service** - Machine learning and AI capabilities\n- **Music Library Service** - Royalty-free music integration\n- **Streaming Service** - Multi-platform streaming\n- **Audio Service** - Audio processing and mixing\n- **Scene Service** - Scene and source management\n\n---\n\n## 🏗️ Architecture\n\n```\nbroady/\n├── apps/\n│   ├── studio/              # Main streaming application\n│   ├── shop/                # E-commerce (optional)\n│   └── api/                 # Backend API\n├── libs/\n│   └── streaming/\n│       └── core/\n│           ├── components/  # UI Components\n│           │   ├── alerts-system/\n│           │   ├── chat-integration/\n│           │   ├── cloud-sync/\n│           │   ├── multistream/\n│           │   ├── overlays-manager/\n│           │   └── ...\n│           ├── services/    # Business Logic\n│           │   ├── firebase.service.ts\n│           │   ├── firebase-enhanced.service.ts\n│           │   ├── ai.service.ts\n│           │   ├── music-library.service.ts\n│           │   ├── streaming.service.ts\n│           │   └── ...\n│           └── models/      # Data Models\n├── functions/               # Firebase Cloud Functions\n├── firebase.json            # Firebase configuration\n├── .env.example             # Environment template\n└── README.md\n```\n\n---\n\n## 🔐 Environment Configuration\n\nSee `.env.example` for a complete list of environment variables. Key configurations include:\n\n### Firebase\n```bash\nFIREBASE_API_KEY=your-api-key\nFIREBASE_PROJECT_ID=your-project-id\nFIREBASE_APP_ID=your-app-id\n```\n\n### AI Services\n```bash\nOPENAI_API_KEY=sk-...\nGOOGLE_GEMINI_API_KEY=AIza...\nANTHROPIC_API_KEY=sk-ant-...\n```\n\n### Music APIs\n```bash\nPIXABAY_API_KEY=...\nBENSOUND_LICENSE_KEY=...\n```\n\n### Streaming Platforms\n```bash\nTWITCH_CLIENT_ID=...\nYOUTUBE_API_KEY=...\nFACEBOOK_APP_ID=...\n```\n\n---\n\n## 🛠️ Development\n\n### Commands\n\n```bash\n# Development\nnpx nx serve studio                    # Start dev server\nnpx nx test streaming-core            # Run unit tests\nnpx nx lint studio                     # Lint code\nnpx nx build studio                    # Build app\n\n# Firebase\nfirebase emulators:start              # Start Firebase emulators\nfirebase deploy                        # Deploy to Firebase\nfirebase deploy --only hosting        # Deploy hosting only\nfirebase deploy --only functions      # Deploy functions only\n\n# Testing\nnpx nx test streaming-core            # Unit tests\nnpx nx e2e studio-e2e                 # E2E tests\nnpx nx affected -t test               # Test affected projects\n\n# Code Generation\nnpx nx g @nx/angular:component        # Generate component\nnpx nx g @nx/angular:service          # Generate service\nnpx nx g @nx/angular:library          # Generate library\n```\n\n### Project Structure\n\n```typescript\n// libs/streaming/core/src/index.ts\nexport * from './lib/services/firebase.service';\nexport * from './lib/services/ai.service';\nexport * from './lib/services/music-library.service';\nexport * from './lib/components/cloud-sync/cloud-sync';\n// ... more exports\n```\n\n---\n\n## 📱 Firebase Features\n\n### Authentication\n```typescript\nimport { FirebaseService } from '@org/streaming-core';\n\n// Sign in with email\nawait firebase.signInWithEmail(email, password);\n\n// Sign in with Google\nawait firebase.signInWithGoogle();\n\n// Sign out\nawait firebase.signOut();\n```\n\n### Cloud Storage\n```typescript\n// Save scene to cloud\nconst cloudScene = await firebase.saveSceneToCloud(scene, true);\n\n// Load scene from cloud\nconst scene = await firebase.loadSceneFromCloud(sceneId);\n\n// Share scene\nawait firebase.shareScene(sceneId, ['user@example.com']);\n```\n\n### Analytics\n```typescript\n// Start tracking stream\nconst sessionId = await firebase.startStreamSession('My Stream', 'Twitch');\n\n// End stream session\nawait firebase.endStreamSession(sessionId);\n\n// Get analytics\nconst analytics = await firebase.fetchAnalytics();\n```\n\n### Cloud Messaging (FCM)\n```typescript\nimport { FirebaseEnhancedService } from '@org/streaming-core';\n\n// Request notification permission\nawait firebaseEnhanced.requestNotificationPermission();\n\n// Get FCM token\nconst token = await firebaseEnhanced.getFCMToken();\n\n// Send notification\nawait firebaseEnhanced.sendNotification({\n  title: 'New Follower!',\n  body: 'You have a new follower',\n  imageUrl: 'https://...',\n});\n\n// Subscribe to topic\nawait firebaseEnhanced.subscribeToTopic('stream-alerts');\n```\n\n### Remote Config\n```typescript\n// Fetch remote config\nawait firebaseEnhanced.fetchRemoteConfig();\n\n// Get config values\nconst aiEnabled = firebaseEnhanced.getRemoteConfigBoolean('feature_ai_enabled', true);\nconst maxQuality = firebaseEnhanced.getRemoteConfigString('max_stream_quality', '1080p');\n```\n\n### Performance Monitoring\n```typescript\n// Start performance trace\nconst trace = firebaseEnhanced.startTrace('stream_setup');\n\n// Add metrics\nfirebaseEnhanced.addTraceMetric('stream_setup', 'scene_count', 5);\n\n// Stop trace\nfirebaseEnhanced.stopTrace('stream_setup');\n\n// Track network request\nfirebaseEnhanced.trackNetworkRequest('/api/scenes', 250, 200);\n```\n\n### Crashlytics\n```typescript\n// Log crash\nfirebaseEnhanced.logCrash('Fatal error occurred', stackTrace, { userId: '123' });\n\n// Log non-fatal error\nfirebaseEnhanced.logNonFatalError(error);\n\n// Set user ID\nfirebaseEnhanced.setUserId('user-123');\n```\n\n---\n\n## 🤖 AI Features\n\n### Auto-Captions\n```typescript\nimport { AIService } from '@org/streaming-core';\n\n// Generate captions\nconst captions = await ai.generateCaptions(audioBlob);\n\n// Use captions\ncaptions.forEach(segment =\u003e {\n  console.log(`${segment.start}s - ${segment.end}s: ${segment.text}`);\n});\n```\n\n### Scene Recommendations\n```typescript\n// Get AI scene recommendations\nconst recommendations = await ai.getSceneRecommendations({\n  currentScenes: ['Main', 'BRB'],\n  streamType: 'gaming',\n  audience: 'casual',\n});\n\nrecommendations.forEach(rec =\u003e {\n  console.log(`${rec.sceneName}: ${rec.reason} (${rec.confidence * 100}%)`);\n});\n```\n\n### Audio Enhancement\n```typescript\n// Enhance audio\nconst result = await ai.enhanceAudio(audioBlob, {\n  reduceNoise: true,\n  normalizeVolume: true,\n  enhanceVoice: true,\n});\n```\n\n---\n\n## 🎵 Music Library\n\n### Search Music\n```typescript\nimport { MusicLibraryService } from '@org/streaming-core';\n\n// Search Pixabay\nconst tracks = await music.searchPixabay('electronic', { minDuration: 120 });\n\n// Search Free Music Archive\nconst fmaTracks = await music.searchFreeMusicArchive('gaming', 'Electronic');\n\n// Filter tracks\nmusic.setFilters({\n  genre: 'Electronic',\n  mood: 'energetic',\n  bpm: { min: 120, max: 140 },\n  license: 'CC0',\n});\n```\n\n### Playback Control\n```typescript\n// Play track\nmusic.play(track);\n\n// Pause\nmusic.pause();\n\n// Next track\nmusic.playNext();\n\n// Set volume\nmusic.setVolume(0.8);\n```\n\n### Playlist Management\n```typescript\n// Create playlist\nconst playlist = music.createPlaylist('Gaming Music', 'High-energy tracks');\n\n// Add to playlist\nmusic.addToPlaylist(playlist.id, track);\n\n// Play playlist\nmusic.playPlaylist(playlist.id);\n```\n\n---\n\n## 🔥 Firebase Cloud Functions\n\nDeploy serverless backend functions:\n\n```bash\ncd functions\nnpm install\nfirebase deploy --only functions\n```\n\nExample Cloud Function:\n\n```typescript\nimport * as functions from 'firebase-functions';\nimport * as admin from 'firebase-admin';\n\nadmin.initializeApp();\n\nexport const onStreamStart = functions.firestore\n  .document('streams/{streamId}')\n  .onCreate(async (snap, context) =\u003e {\n    const stream = snap.data();\n\n    // Send FCM notification\n    await admin.messaging().send({\n      topic: 'stream-alerts',\n      notification: {\n        title: `${stream.username} is live!`,\n        body: stream.title,\n      },\n    });\n\n    return null;\n  });\n```\n\n---\n\n## 🧪 Testing\n\n### Unit Tests\n```bash\nnpx nx test streaming-core\nnpx nx test studio\n```\n\n### E2E Tests\n```bash\nnpx nx e2e studio-e2e\nnpx nx e2e studio-e2e --watch\n```\n\n### Firebase Emulators\n```bash\nfirebase emulators:start\n```\n\n---\n\n## 📦 Deployment\n\n### Firebase Hosting\n```bash\n# Build for production\nnpx nx build studio --configuration=production\n\n# Deploy\nfirebase deploy --only hosting\n\n# Deploy with custom message\nfirebase deploy -m \"Release v1.0.0\"\n```\n\n### Docker\n```bash\n# Build Docker image\ndocker build -t broady .\n\n# Run container\ndocker run -p 4200:80 broady\n```\n\n### Kubernetes\n```bash\n# Deploy to Kubernetes\nkubectl apply -f k8s/deployment.yaml\n```\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.\n\n### Development Workflow\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---\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- **Firebase** - Backend infrastructure\n- **Angular** - Frontend framework\n- **Nx** - Monorepo tools\n- **OpenAI** - AI capabilities\n- **Pixabay** - Royalty-free music\n- **Kevin MacLeod** - Incompetech music\n\n---\n\n## 📞 Support\n\n- **Documentation**: [docs.broady.dev](https://docs.broady.dev)\n- **Discord**: [Join our community](https://discord.gg/broady)\n- **Email**: support@broady.dev\n- **Issues**: [GitHub Issues](https://github.com/your-username/broady/issues)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ by the Broady Team**\n\n[⭐ Star us on GitHub](https://github.com/your-username/broady) • [🐦 Follow on Twitter](https://twitter.com/broady)\n\n\u003c/div\u003e\n\n---\n\n# Original Nx Repository Documentation\n\n---\n\n# Nx Angular Repository\n\n\u003ca alt=\"Nx logo\" href=\"https://nx.dev\" target=\"_blank\" rel=\"noreferrer\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png\" width=\"45\"\u003e\u003c/a\u003e\n\n✨ A repository showcasing key [Nx](https://nx.dev) features for Angular monorepos ✨\n\n## 📦 Project Overview\n\nThis repository demonstrates a production-ready Angular monorepo with:\n\n- **2 Applications**\n\n  - `studio` - Professional streaming studio application\n  - `shop` - Angular e-commerce application with product listings and detail views\n  - `api` - Backend API with Docker support serving product data\n\n- **Libraries**\n\n  - `@org/streaming-core` - Core streaming functionality with Firebase, AI, and Music integration\n  - `@org/feature-products` - Product listing feature (Angular)\n  - `@org/feature-product-detail` - Product detail feature (Angular)\n  - `@org/data` - Data access layer for shop features\n  - `@org/shared-ui` - Shared UI components\n  - `@org/models` - Shared data models\n  - `@org/products` - API product service library\n\n- **E2E Testing**\n  - `shop-e2e` - Playwright tests for the shop application\n  - `studio-e2e` - Playwright tests for the streaming studio\n\n## 🚀 Quick Start\n\n```bash\n# Clone the repository\ngit clone \u003cyour-fork-url\u003e\ncd \u003cyour-repository-name\u003e\n\n# Install dependencies\nnpm install\n\n# Serve the streaming studio\nnpx nx serve studio\n\n# Serve the Angular shop application\nnpx nx serve shop\n\n# ...or you can serve the API separately\nnpx nx serve api\n\n# Build all projects\nnpx nx run-many -t build\n\n# Run tests\nnpx nx run-many -t test\n\n# Lint all projects\nnpx nx run-many -t lint\n\n# Run e2e tests\nnpx nx e2e shop-e2e\n\n# Run tasks in parallel\nnpx nx run-many -t lint test build e2e --parallel=3\n\n# Visualize the project graph\nnpx nx graph\n```\n\n## ⭐ Featured Nx Capabilities\n\nThis repository showcases several powerful Nx features:\n\n### 1. 🔒 Module Boundaries\n\nEnforces architectural constraints using tags. Each project has specific dependencies it can use:\n\n- `scope:shared` - Can be used by all projects\n- `scope:shop` - Shop-specific libraries\n- `scope:api` - API-specific libraries\n- `scope:streaming` - Streaming-specific libraries\n- `type:feature` - Feature libraries\n- `type:data` - Data access libraries\n- `type:ui` - UI component libraries\n\n**Try it out:**\n\n```bash\n# See the current project graph and boundaries\nnpx nx graph\n\n# View a specific project's details\nnpx nx show project studio --web\n```\n\n[Learn more about module boundaries →](https://nx.dev/features/enforce-module-boundaries)\n\n### 2. 🐳 Docker Integration\n\nThe API project includes Docker support with automated targets and release management:\n\n```bash\n# Build Docker image\nnpx nx docker:build api\n\n# Run Docker container\nnpx nx docker:run api\n\n# Release with automatic Docker image versioning\nnpx nx release\n```\n\n**Nx Release for Docker:** The repository is configured to use Nx Release for managing Docker image versioning and publishing. When running `nx release`, Docker images for the API project are automatically versioned and published based on the release configuration in `nx.json`. This integrates seamlessly with semantic versioning and changelog generation.\n\n[Learn more about Docker integration →](https://nx.dev/recipes/nx-release/release-docker-images)\n\n### 3. 🎭 Playwright E2E Testing\n\nEnd-to-end testing with Playwright is pre-configured:\n\n```bash\n# Run e2e tests\nnpx nx e2e shop-e2e\nnpx nx e2e studio-e2e\n\n# Run e2e tests in CI mode\nnpx nx e2e-ci shop-e2e\n```\n\n[Learn more about E2E testing →](https://nx.dev/technologies/test-tools/playwright/introduction#e2e-testing)\n\n### 4. ⚡ Vitest for Unit Testing\n\nFast unit testing with Vite for Angular libraries:\n\n```bash\n# Test a specific library\nnpx nx test streaming-core\nnpx nx test data\n\n# Test all projects\nnpx nx run-many -t test\n```\n\n[Learn more about Vite testing →](https://nx.dev/recipes/vite)\n\n### 5. 🔧 Self-Healing CI\n\nThe CI pipeline includes `nx fix-ci` which automatically identifies and suggests fixes for common issues:\n\n```bash\n# In CI, this command provides automated fixes\nnpx nx fix-ci\n```\n\nThis feature helps maintain a healthy CI pipeline by automatically detecting and suggesting solutions for:\n\n- Missing dependencies\n- Incorrect task configurations\n- Cache invalidation issues\n- Common build failures\n\n[Learn more about self-healing CI →](https://nx.dev/ci/features/self-healing-ci)\n\n## 📁 Project Structure\n\n```\n├── apps/\n│   ├── studio/         [scope:streaming]   - Professional streaming studio\n│   ├── shop/           [scope:shop]        - Angular e-commerce app\n│   ├── shop-e2e/                           - E2E tests for shop\n│   ├── studio-e2e/                         - E2E tests for studio\n│   └── api/            [scope:api]         - Backend API with Docker\n├── libs/\n│   ├── streaming/\n│   │   └── core/                           - Streaming core library\n│   ├── shop/\n│   │   ├── feature-products/               - Product listing\n│   │   ├── feature-product-detail/         - Product details\n│   │   ├── data/                           - Data access\n│   │   └── shared-ui/                      - UI components\n│   ├── api/\n│   │   └── products/                       - Product service\n│   └── shared/\n│       └── models/                         - Shared models\n├── functions/          - Firebase Cloud Functions\n├── firebase.json       - Firebase configuration\n├── .firebaserc         - Firebase projects\n├── .env.example        - Environment template\n├── nx.json             - Nx configuration\n├── tsconfig.json       - TypeScript configuration\n└── eslint.config.mjs   - ESLint with module boundary rules\n```\n\n## 🏷️ Understanding Tags\n\nThis repository uses tags to enforce module boundaries:\n\n| Project          | Tags                              | Can Import From                       |\n| ---------------- | --------------------------------- | ------------------------------------- |\n| `studio`         | `scope:streaming`                 | `scope:streaming`, `scope:shared`     |\n| `shop`           | `scope:shop`                      | `scope:shop`, `scope:shared`          |\n| `api`            | `scope:api`                       | `scope:api`, `scope:shared`           |\n| `streaming-core` | `scope:streaming`, `type:feature` | `scope:streaming`, `scope:shared`     |\n| `data`           | `scope:shop`, `type:data`         | `scope:shared`                        |\n| `models`         | `scope:shared`, `type:data`       | Nothing (base library)                |\n\n## 📚 Useful Commands\n\n```bash\n# Project exploration\nnpx nx graph                                    # Interactive dependency graph\nnpx nx list                                     # List installed plugins\nnpx nx show project studio --web               # View project details\n\n# Development\nnpx nx serve studio                            # Serve streaming studio\nnpx nx serve shop                              # Serve Angular shop\nnpx nx serve api                               # Serve backend API\nnpx nx build studio                            # Build streaming studio\nnpx nx test streaming-core                     # Test streaming library\nnpx nx lint studio                             # Lint streaming studio\n\n# Running multiple tasks\nnpx nx run-many -t build                       # Build all projects\nnpx nx run-many -t test --parallel=3          # Test in parallel\nnpx nx run-many -t lint test build            # Run multiple targets\n\n# Affected commands (great for CI)\nnpx nx affected -t build                       # Build only affected projects\nnpx nx affected -t test                        # Test only affected projects\n\n# Docker operations\nnpx nx docker:build api                        # Build Docker image\nnpx nx docker:run api                          # Run Docker container\n\n# Firebase operations\nfirebase emulators:start                       # Start Firebase emulators\nfirebase deploy                                # Deploy to Firebase\nfirebase deploy --only hosting                 # Deploy hosting only\nfirebase deploy --only functions               # Deploy functions only\n```\n\n## 🎯 Adding New Features\n\n### Generate a new Angular application:\n\n```bash\nnpx nx g @nx/angular:app my-app\n```\n\n### Generate a new Angular library:\n\n```bash\nnpx nx g @nx/angular:lib my-lib\n```\n\n### Generate a new Angular component:\n\n```bash\nnpx nx g @nx/angular:component my-component --project=my-lib\n```\n\n### Generate a new API library:\n\n```bash\nnpx nx g @nx/node:lib my-api-lib\n```\n\n### Generate a Firebase Cloud Function:\n\n```bash\ncd functions\nfirebase functions:shell\n```\n\nYou can use `npx nx list` to see all available plugins and `npx nx list \u003cplugin-name\u003e` to see all generators for a specific plugin.\n\n## Nx Cloud\n\nNx Cloud ensures a [fast and scalable CI](https://nx.dev/ci/intro/why-nx-cloud?utm_source=nx_project\u0026utm_medium=readme\u0026utm_campaign=nx_projects) pipeline. It includes features such as:\n\n- [Remote caching](https://nx.dev/ci/features/remote-cache?utm_source=nx_project\u0026utm_medium=readme\u0026utm_campaign=nx_projects)\n- [Task distribution across multiple machines](https://nx.dev/ci/features/distribute-task-execution?utm_source=nx_project\u0026utm_medium=readme\u0026utm_campaign=nx_projects)\n- [Automated e2e test splitting](https://nx.dev/ci/features/split-e2e-tasks?utm_source=nx_project\u0026utm_medium=readme\u0026utm_campaign=nx_projects)\n- [Task flakiness detection and rerunning](https://nx.dev/ci/features/flaky-tasks?utm_source=nx_project\u0026utm_medium=readme\u0026utm_campaign=nx_projects)\n\n## Install Nx Console\n\nNx Console is an editor extension that enriches your developer experience. It lets you run tasks, generate code, and improves code autocompletion in your IDE. It is available for VSCode and IntelliJ.\n\n[Install Nx Console \u0026raquo;](https://nx.dev/getting-started/editor-setup?utm_source=nx_project\u0026utm_medium=readme\u0026utm_campaign=nx_projects)\n\n## 🔗 Learn More\n\n- [Nx Documentation](https://nx.dev)\n- [Angular Monorepo Tutorial](https://nx.dev/getting-started/tutorials/angular-monorepo-tutorial)\n- [Module Boundaries](https://nx.dev/features/enforce-module-boundaries)\n- [Docker Integration](https://nx.dev/recipes/nx-release/release-docker-images)\n- [Playwright Testing](https://nx.dev/technologies/test-tools/playwright/introduction#e2e-testing)\n- [Vite with Angular](https://nx.dev/recipes/vite)\n- [Nx Cloud](https://nx.dev/ci/intro/why-nx-cloud)\n- [Releasing Packages](https://nx.dev/features/manage-releases)\n- [Firebase Documentation](https://firebase.google.com/docs)\n- [Angular Documentation](https://angular.dev)\n\n## 💬 Community\n\nJoin the Nx community:\n\n- [Discord](https://go.nx.dev/community)\n- [X (Twitter)](https://twitter.com/nxdevtools)\n- [LinkedIn](https://www.linkedin.com/company/nrwl)\n- [YouTube](https://www.youtube.com/@nxdevtools)\n- [Blog](https://nx.dev/blog)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ using Nx, Angular, Firebase, and AI**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkluth%2Fbroady","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkluth%2Fbroady","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkluth%2Fbroady/lists"}