Key Features • Architecture • Components • How To Use • Screenshots • License
- Adjust audio levels
- Switch between channels
- Access Electronic Program Guide
- Obtain statistics related to viewed channels and channel categories
- Set up automation rules
Communicates directly with the TV.
Subscribes to WSS event streams and forwards data over Kafka to the Service and Optimization Layer components.
Interface is responsible for direct communication with LG Smart TVs running the WebOS operating system.
The Interface is communicating with the TVs over a WebSocket Secure (WSS) connection, and all requests are directly proxied to the TV.
Processes data received over Kafka in Real-Time, then caches and forwards them to the Presentation Layer with Server-Sent Events.
Control Service is responsible for caching most state information of the TV to Redis and serving all these data to the Presentation Layer when requested.
Also, since the Presentation Layer does not communicate via the interface directly, TV commands are going through the Control Service over to the Interface.
Statistics Service is responsible for dynamic processing of state changes of the TV in order to produce various statistics out of such data (i.e. viewed channels and channel categories, TV uptime, etc.).
Meta-Data Service is responsible for providing Channel and Electronic Program Guide meta-data to other services, such as Statistics Service.
Automation Service is responsible for managing and scheduling various automation rules (i.e. turning on the TV based on a Cron schedule).
EPG Scraping service is responsible for scraping Electronic Program Guide data from various online data sources.
Since the WebOS API refuses to send the fetched EPG data from the ISP and Teleman's previous data source, iptv-org's EPG repository has been taken down, they have to be scraped with this service.
Authentication Service is responsible for onboarding and authenticating users.
This service is in early-stage, and authentication / authorization features are not complete yet.
Receives data in Real-Time through Server-Sent Events from the Service and Optimization Layer, then caches them in Redux stores.
A NextJS front-end application with Redux.
Subscribes to Server-Sent Event streams of the Service and Optimization Layer components, and refreshes data in Real-Time in the Redux stores.
A running instance of the following:
- Apache Kafka
- MongoDB
- PostgreSQL
- Redis
- Configure Kafka, Mongo, PostgreSQL and Redis
- In case of
control-service
,stats-service
,meta-service
,automation-service
, copyapplication-sample.properties
and rename it toapplication.properties
, then provide your configuration - In case of
authentication-service
, provide thePOSTGRES_CONNECTION_STRING
environment variable
- In case of
- Configure interface
- Copy
environment.sample.ts
and rename it toenvironment.ts
, then provide your configuration
- Copy
- Start the applications
- In case of
control-service
,stats-service
,meta-service
,automation-service
, executegradle bootRun
- In case of
authentication-service
, executecargo run
- In case of
interface
andfrontend
, executeyarn dev
- In case of
- Register a user, then log in with it
AGPL-3.0