Thanks to visit codestin.com
Credit goes to github.com

Skip to content

TeneoCast - Cross-platform indoor radio software platform for local businesses with real-time control, offline playback, and multi-tenant architecture built with Flutter and Spring Boot.

License

Notifications You must be signed in to change notification settings

saviobatista/teneocast

Repository files navigation

TeneoCast - Indoor Radio Software Platform

TeneoCast is a cross-platform, multi-tenant indoor radio software platform that empowers local businesses to run customized radio stations with real-time control, offline playback, and flexible infrastructure.

πŸ“Š Status

Build Status Test Coverage License Flutter Version Java Version

🎯 Overview

TeneoCast blends the Latin word "teneo" (to hold or possess) with "cast" (broadcast), capturing the essence of empowering users with control over audio streaming.

Core Interfaces

  • Player: Audio playback with smart controls and offline support (Windows, Android, Web)
  • Studio: Interface for local business owners to manage station preferences and send remote commands
  • Console: Admin panel for platform administrators to manage tenants, media libraries, and system analytics

πŸ—οΈ Architecture

TeneoCast System Architecture

Clients:
β”œβ”€β”€ Player (Flutter)
β”‚   β”œβ”€β”€ Windows (.exe)
β”‚   β”œβ”€β”€ Android (.apk)
β”‚   └── Web (Progressive Web App)
β”œβ”€β”€ Studio (Flutter Web)
└── Console (Flutter Web)

Backend Services (Spring Boot):
β”œβ”€β”€ auth-service     β†’ Authentication & authorization
β”œβ”€β”€ tenant-service   β†’ Multi-tenancy management
β”œβ”€β”€ media-service    β†’ Audio asset management
β”œβ”€β”€ player-service   β†’ WebSocket control & commands
β”œβ”€β”€ analytics-service β†’ Playback analytics & reporting
β”œβ”€β”€ tts-service      β†’ Text-to-speech generation
└── admin-service    β†’ Platform administration

Infrastructure:
β”œβ”€β”€ PostgreSQL  β†’ Relational data
β”œβ”€β”€ Redis       β†’ Caching & sessions
β”œβ”€β”€ Kafka       β†’ Event streaming (optional)
└── S3/MinIO    β†’ Audio file storage

πŸš€ Quick Start

Prerequisites

Note: Java, Flutter, and Node.js are not required locally as all services run in Docker containers.

Local Development

  1. Clone the repository

    git clone https://github.com/saviobatista/teneocast.git
    cd teneocast
  2. Verify your setup

    # Check Docker installation
    docker --version
    docker compose version
    
    # Ensure Docker daemon is running
    docker info
  3. Start the complete environment

    # Start all services (frontend, backend, and infrastructure)
    docker compose up -d
    
    # View logs for all services
    docker compose logs -f
    
    # Stop all services
    docker compose down

    What's included:

    • βœ… PostgreSQL database with automatic migrations
    • βœ… Redis cache
    • βœ… MinIO (S3-compatible storage)
    • βœ… Frontend applications (Player, Studio, Console)
    • βœ… Auth Service (user authentication)
    • 🚧 Additional backend services (in development)
  4. Access the applications

🚨 Troubleshooting

Common Issues:

  1. Port conflicts

    # Check what's using ports
    lsof -i :3000  # Frontend
    lsof -i :8081  # Auth service
    lsof -i :5432  # PostgreSQL
    # Kill the process or change ports in docker-compose.yml
  2. Docker permission issues

    sudo usermod -aG docker $USER
    # Log out and back in
  3. Services not starting

    # Check service health
    docker compose ps
    # Check logs for specific service
    docker compose logs auth-service
  4. Database connection issues

    # Restart PostgreSQL and dependent services
    docker compose restart postgres auth-service

Getting Help:

πŸ“ Project Structure

teneocast/
β”œβ”€β”€ apps/                    # Frontend applications
β”‚   β”œβ”€β”€ player/             # Cross-platform player (Flutter: Web, Windows, Android)
β”‚   β”œβ”€β”€ studio/             # Studio interface (Flutter Web)
β”‚   └── console/            # Admin console (Flutter Web)
β”œβ”€β”€ backend/                # Spring Boot services
β”‚   β”œβ”€β”€ auth-service/       # Authentication service
β”‚   β”œβ”€β”€ tenant-service/     # Tenant management
β”‚   β”œβ”€β”€ media-service/      # Media asset management
β”‚   β”œβ”€β”€ player-service/     # Player control & WebSocket
β”‚   β”œβ”€β”€ analytics-service/  # Analytics & reporting
β”‚   β”œβ”€β”€ tts-service/        # Text-to-speech service
β”‚   β”œβ”€β”€ admin-service/      # Admin operations
β”‚   └── common/             # Shared utilities & DTOs
β”œβ”€β”€ infrastructure/         # Docker, K8s, Terraform
β”œβ”€β”€ docs/                   # Documentation
β”œβ”€β”€ scripts/                # Build & deployment scripts
└── .github/workflows/      # CI/CD pipelines

πŸ›‘οΈ Security & Multi-tenancy

  • JWT-based authentication with role-based access control
  • Multi-tenant architecture with tenant isolation
  • Player pairing using secure one-time codes
  • WebSocket security with token-based authentication

πŸ”§ Development

Backend Services

Each backend service is a Spring Boot application with:

  • RESTful APIs
  • WebSocket support (player-service)
  • PostgreSQL integration
  • Redis caching
  • Comprehensive testing with Testcontainers

Frontend Applications

All frontend applications use Flutter with:

  • Responsive design
  • Offline-first architecture (Player)
  • Real-time updates via WebSocket
  • Modern UI/UX with Material Design

🚒 Deployment

Development

  • Docker Compose: Complete containerized development environment with all services
  • Single Command Setup: Everything runs with docker compose up -d

Production

  • Backend: AWS Fargate + RDS + ElastiCache
  • Frontend: S3 + CloudFront CDN
  • CI/CD: GitHub Actions with multi-platform builds

Docker Commands

# Start all services
docker compose up -d

# Start specific services
docker compose up -d postgres redis minio  # Infrastructure only
docker compose up -d frontend auth-service  # App services only

# View logs
docker compose logs -f                    # All services
docker compose logs -f frontend          # Specific service
docker compose logs -f auth-service      # Auth service logs

# Rebuild and restart services
docker compose up -d --build

# Stop services
docker compose down                       # Stop all
docker compose stop frontend             # Stop specific service

# Clean up (remove containers, networks, and volumes)
docker compose down -v --remove-orphans

πŸ“– Documentation

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

πŸ“„ License

TeneoCast uses a dual-licensing model:

  • πŸ†“ Free for individuals and small businesses (≀ 10 employees)
  • πŸ’Ό Commercial licenses for larger organizations

See LICENSE.md for detailed licensing information.

Copyright Β© 2024 TeneoCast. All rights reserved.

About

TeneoCast - Cross-platform indoor radio software platform for local businesses with real-time control, offline playback, and multi-tenant architecture built with Flutter and Spring Boot.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published