### Start Stalker Mock Server Source: https://github.com/4gray/iptvnator/blob/master/apps/stalker-mock-server/README.md Commands to start the mock server locally. Use `serve-with-watch` for auto-restarts on source changes or `run-many` to start both the mock server and the Angular dev server. ```bash nx serve stalker-mock-server ``` ```bash nx run stalker-mock-server:serve-with-watch ``` ```bash nx run-many --targets=serve --projects=stalker-mock-server,web ``` -------------------------------- ### Start Xtream Mock Server Source: https://github.com/4gray/iptvnator/blob/master/apps/xtream-mock-server/README.md Use these commands to start the mock server with different configurations. The serve-with-watch option enables auto-restarting on code changes. ```bash pnpm nx run xtream-mock-server:serve ``` ```bash pnpm nx run xtream-mock-server:serve-with-watch ``` ```bash pnpm run serve:marketing-demo ``` ```bash pnpm run serve:marketing-demo:web ``` -------------------------------- ### Install mpv on Ubuntu Source: https://github.com/4gray/iptvnator/wiki/What-is-mpv-video-player-and-how-to-install-it-on-different-operating-systems? Use this command in the terminal to install mpv on Ubuntu systems. You will be prompted for your password and to confirm the installation. ```bash sudo apt-get install mpv ``` -------------------------------- ### Create IPTVnator Installers Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Creates installers and executables for the IPTVnator application. This is the final step for distributing the app. ```bash # Create installers/executables pnpm run make:app # or nx run electron-backend:make ``` -------------------------------- ### Install IPTVnator via Snap Source: https://github.com/4gray/iptvnator/blob/master/README.md Install the IPTVnator application on Linux using Snap. This command requires sudo privileges. ```shell $ sudo snap install iptvnator ``` -------------------------------- ### Serve Electron Backend Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/sqlite-db-worker.md Starts the Electron backend development server. ```bash pnpm nx serve electron-backend ``` -------------------------------- ### Install Dependencies with pnpm Source: https://github.com/4gray/iptvnator/blob/master/README.md Installs project dependencies using pnpm. Ensure Node.js with pnpm is installed first. ```bash $ corepack enable $ pnpm install ``` -------------------------------- ### Account Info Request (Direct) Source: https://github.com/4gray/iptvnator/blob/master/apps/xtream-mock-server/README.md Example cURL command to fetch account information directly from the mock server. ```bash curl "http://localhost:3211/player_api.php?username=user1&password=pass1" ``` -------------------------------- ### Install IPTVnator via AUR Helper (yay) Source: https://github.com/4gray/iptvnator/blob/master/README.md Install the iptvnator-bin package from the Arch User Repository (AUR) using the yay helper. This is for Arch Linux and Manjaro users. ```shell $ yay -S iptvnator-bin ``` -------------------------------- ### Install IPTVnator on Gentoo Source: https://github.com/4gray/iptvnator/blob/master/README.md Install IPTVnator on Gentoo by enabling the gentoo-zh overlay, syncing repositories, and emerging the package. This process involves multiple steps. ```shell sudo eselect repository enable gentoo-zh sudo emerge --sync gentoo-zh sudo emerge iptvnator-bin ``` -------------------------------- ### Build Electron Backend Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Builds the Electron backend application. This is a necessary step before packaging or creating installers. ```bash # Build backend (Electron) pnpm run build:backend # or nx build electron-backend ``` -------------------------------- ### Install Dependencies with pnpm Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/nx-workspace-boundaries.md Install project dependencies using pnpm. This command is crucial before using Nx discovery or targets in a fresh worktree. ```bash pnpm install --frozen-lockfile pnpm nx show projects ``` -------------------------------- ### Install IPTVnator via Homebrew Source: https://github.com/4gray/iptvnator/blob/master/README.md Install the IPTVnator application on macOS using the Homebrew package manager. ```shell $ brew install iptvnator ``` -------------------------------- ### Serve Backend with Startup Diagnostics (Nx) Source: https://github.com/4gray/iptvnator/blob/master/README.md Starts the Electron backend with opt-in Electron tracing enabled using Nx. This is an alternative to the pnpm command for enabling startup diagnostics. ```bash $ IPTVNATOR_TRACE_STARTUP=1 nx serve electron-backend ``` -------------------------------- ### Serve Backend with Nx Source: https://github.com/4gray/iptvnator/blob/master/README.md Starts the Electron backend application using the Nx command. This is an alternative to the pnpm serve:backend command. ```bash $ nx serve electron-backend ``` -------------------------------- ### Install mpv on macOS using Homebrew Source: https://github.com/4gray/iptvnator/wiki/What-is-mpv-video-player-and-how-to-install-it-on-different-operating-systems? After installing Homebrew, use this command in the terminal to install the mpv media player on your macOS system. ```bash brew install mpv ``` -------------------------------- ### Serve Electron Backend Application Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Serves the Electron backend application, which also starts the frontend. Use this for full Electron app development. ```bash # Serve the Electron app (starts both frontend and backend) pnpm run serve:backend # or nx serve electron-backend ``` -------------------------------- ### Renderer Process App Update Install Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/electron-security.md Triggers the installation of a downloaded application update from the renderer process. This typically involves restarting the application. ```javascript window.electron.installAppUpdate() ``` -------------------------------- ### Serve Backend with pnpm Source: https://github.com/4gray/iptvnator/blob/master/README.md Starts the Electron backend application using pnpm. This command also runs the Angular dev server. ```bash $ pnpm run serve:backend ``` -------------------------------- ### Electron IPC Preload Script Example Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md An example of an Electron IPC preload script. This script exposes the 'window.electron' API via contextBridge and defines all IPC channels, ensuring a clear contract between the main process and the renderer. ```typescript // Exposes window.electron API via contextBridge // All IPC channels defined here (playlist operations, EPG, database CRUD, external players, etc.) // The canonical TypeScript contract is ElectronBridgeApi in libs/shared/interfaces/src/lib/electron-api.interface.ts; global.d.ts, apps/web/src/typings.d.ts, and main.preload.ts must reference this shared type instead of maintaining separate method lists. ``` -------------------------------- ### Install mpv on Arch Linux Source: https://github.com/4gray/iptvnator/wiki/What-is-mpv-video-player-and-how-to-install-it-on-different-operating-systems? Use this command in the terminal to install mpv on Arch Linux systems. It utilizes the pacman package manager. ```bash sudo pacman -S mpv ``` -------------------------------- ### Serve Backend with Disabled Hardware Acceleration Source: https://github.com/4gray/iptvnator/blob/master/README.md Starts the Electron backend with hardware acceleration disabled. Use this to debug renderer freezes or GPU/compositor issues. ```bash $ IPTVNATOR_DISABLE_HARDWARE_ACCELERATION=1 pnpm run serve:backend ``` -------------------------------- ### Force X11/XWayland on Linux for Wayland Issues Source: https://github.com/4gray/iptvnator/blob/master/README.md Workaround for GNU/Linux systems where IPTVnator fails to start due to Wayland or Ozone platform initialization errors. This forces the application to use X11/XWayland. ```bash iptvnator --ozone-platform=x11 ``` -------------------------------- ### Live Categories Request (Direct) Source: https://github.com/4gray/iptvnator/blob/master/apps/xtream-mock-server/README.md Example cURL command to retrieve live TV categories directly from the mock server. ```bash curl "http://localhost:3211/player_api.php?username=user1&password=pass1&action=get_live_categories" ``` -------------------------------- ### Configure Playwright Web Server Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/xtream-mock-server.md Add this configuration to your Playwright setup to include the Xtream Mock Server as a web server. Ensure the command and URL match your project's setup. ```typescript { command: 'pnpm nx run xtream-mock-server:serve', url: 'http://localhost:3211/health', reuseExistingServer: !process.env['CI'], cwd: workspaceRoot, } ``` -------------------------------- ### Nx Command Execution Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Examples of using the Nx CLI to run specific targets for projects. Use 'nx run :' for single commands and 'nx run-many' for multiple. ```bash pnpm nx run : # Example: pnpm nx run web:build # Example: pnpm nx run electron-backend:serve ``` ```bash pnpm nx run-many --target=test --all ``` -------------------------------- ### VOD Details Request (Direct) Source: https://github.com/4gray/iptvnator/blob/master/apps/xtream-mock-server/README.md Example cURL command to fetch specific VOD (movie) details directly from the mock server. ```bash curl "http://localhost:3211/player_api.php?username=user1&password=pass1&action=get_vod_info&vod_id=20000" ``` -------------------------------- ### Series Info Request (Direct) Source: https://github.com/4gray/iptvnator/blob/master/apps/xtream-mock-server/README.md Example cURL command to retrieve specific series information directly from the mock server. ```bash curl "http://localhost:3211/player_api.php?username=user1&password=pass1&action=get_series_info&series_id=30000" ``` -------------------------------- ### Serve Remote Control Web App Locally Source: https://github.com/4gray/iptvnator/blob/master/apps/remote-control-web/README.md Starts the Electron backend, which includes the HTTP server for the remote control web app. Access the app via http://localhost:8765. ```bash # Start Electron backend (includes HTTP server) nx serve electron-backend # Access at http://localhost:8765 ``` -------------------------------- ### Get Live Streams Sample Item Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/xtream-mock-server.md A sample item from the `get_live_streams` response, illustrating the structure of a single live stream entry. ```json { "num": 1, "name": "Acme Corp TV", "stream_type": "live", "stream_id": 10000, "stream_icon": "https://picsum.photos/seed/live-10000/100/100", "epg_channel_id": "channel-10000.mock", "category_id": "101", "tv_archive": 0, "tv_archive_duration": 0 } ``` -------------------------------- ### Display Program Timings and Details Source: https://github.com/4gray/iptvnator/blob/master/libs/ui/epg/src/lib/epg-item-description/epg-item-description.component.html Renders the start and end times of a program using the date pipe, along with the program's duration and category if available. ```html {{ startMs | date: 'EEE d MMM' : '' : currentLocale() }} {{ startMs | date: 'HH:mm' }} – {{ stopMs | date: 'HH:mm' }} @if (duration) { {{ duration }} } @if (epgProgram.category) { {{ epgProgram.category }} } ``` -------------------------------- ### Get EPG Info Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-epg.md Retrieves bulk Electronic Program Guide information for a specified period. This is the primary source for active panel data. ```APIDOC ## GET load.php?type=itv&action=get_epg_info ### Description Retrieves bulk Electronic Program Guide information for a specified period. This is the primary source for active panel data. ### Method GET ### Endpoint `load.php?type=itv&action=get_epg_info&period={hours}&JsHttpRequest=1-xml` #### Query Parameters - **period** (integer) - Required - The number of hours for which to retrieve EPG data. Typically set to 168. ### Response #### Success Response (200) - **js.data** (object) - An object where keys are channel IDs and values are arrays of EPG program objects. Each program object contains id, name, descr, time, time_to, start_timestamp, and stop_timestamp. ### Response Example ```json { "js": { "data": { "45": [ { "id": "1", "name": "Program Title", "descr": "Program description", "time": "2025-01-15 14:00:00", "time_to": "2025-01-15 16:00:00", "start_timestamp": "1736949600", "stop_timestamp": "1736956800" } ] } } } ``` ``` -------------------------------- ### Check Embedded MPV Node Addon Build Output Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/embedded-mpv-native.md After starting the application with development flags, use this command to verify if the `embedded_mpv.node` addon has been built successfully in the native build output directory. ```bash ls apps/electron-backend/native/build/Release/embedded_mpv.node ``` -------------------------------- ### Get Short EPG Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-epg.md Retrieves a short Electronic Program Guide listing for a specific channel. This endpoint is used as a fallback for active panels. ```APIDOC ## GET load.php?type=itv&action=get_short_epg ### Description Retrieves a short Electronic Program Guide listing for a specific channel. This endpoint is used as a fallback for active panels. ### Method GET ### Endpoint `load.php?type=itv&action=get_short_epg&ch_id={channel_id}&size={n}&JsHttpRequest=1-xml` #### Query Parameters - **ch_id** (string) - Required - The ID of the channel to retrieve EPG data for. - **size** (integer) - Optional - The number of EPG items to retrieve. Defaults to 10 for active panel fallback. ### Response #### Success Response (200) - **js.data** (array) - An array of EPG items, each containing id, ch_id, name, descr, time, time_to, duration, start_timestamp, and stop_timestamp. ### Response Example ```json { "js": { "data": [ { "id": "123", "ch_id": "45", "name": "Program Title", "descr": "Program description", "time": "2025-01-15 14:00:00", "time_to": "2025-01-15 14:30:00", "duration": "1800", "start_timestamp": "1736949600", "stop_timestamp": "1736951400" } ] } } ``` ``` -------------------------------- ### Serve Backend with Startup Diagnostics Source: https://github.com/4gray/iptvnator/blob/master/README.md Starts the Electron backend with opt-in Electron tracing enabled for startup diagnostics. Logs are written to the Electron terminal output, aiding in debugging white screens or frozen routes. ```bash $ IPTVNATOR_TRACE_STARTUP=1 pnpm run serve:backend ``` -------------------------------- ### EpgProgram Interface Definition Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/m3u-playlist-module.md Defines the structure for an Electronic Program Guide (EPG) entry, including start and stop times, channel, title, description, and category. ```typescript interface EpgProgram { start: string; // ISO string stop: string; // ISO string channel: string; // TVG ID title: string; desc: string | null; category: string | null; episodeNum?: string | null; iconUrl?: string | null; rating?: string | null; } ``` -------------------------------- ### Enable Startup Tracing Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/sqlite-db-worker.md Enables broad startup tracing, including BrowserWindow lifecycle, IPC calls, DB worker activity, and SQL tracing. Use this when a renderer route freezes before DevTools become usable. ```bash IPTVNATOR_TRACE_STARTUP=1 pnpm run serve:backend ``` -------------------------------- ### Install Homebrew Package Manager on macOS Source: https://github.com/4gray/iptvnator/wiki/What-is-mpv-video-player-and-how-to-install-it-on-different-operating-systems? This command installs the Homebrew package manager on macOS. It requires a bash shell and downloads the installation script from GitHub. ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` -------------------------------- ### Enable Full Startup Tracing Source: https://github.com/4gray/iptvnator/blob/master/AGENTS.md Use this command to enable comprehensive tracing of the Electron application's startup process. This is useful for diagnosing initialization issues. ```bash IPTVNATOR_TRACE_STARTUP=1 nx serve electron-backend ``` -------------------------------- ### Enable Window Tracing Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/sqlite-db-worker.md Logs BrowserWindow loading, navigation, `unresponsive`, and `render-process-gone` transitions. ```bash IPTVNATOR_TRACE_WINDOW=1 ``` -------------------------------- ### Stalker EPG API: get_short_epg Response Example Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-epg.md This is an example of the JSON response structure for the `get_short_epg` endpoint. The data is normalized into `EpgItem[]`. ```json { "js": { "data": [ { "id": "123", "ch_id": "45", "name": "Program Title", "descr": "Program description", "time": "2025-01-15 14:00:00", "time_to": "2025-01-15 14:30:00", "duration": "1800", "start_timestamp": "1736949600", "stop_timestamp": "1736951400" } ] } } ``` -------------------------------- ### Run Frontend Tests Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Execute frontend tests using pnpm or nx. Use the `ci` configuration for coverage. ```bash # Run frontend tests pnpm run test:frontend # or pnpm nx test web # Run tests with coverage when needed pnpm nx test web --configuration=ci ``` -------------------------------- ### Import Database Access Utilities Source: https://github.com/4gray/iptvnator/blob/master/libs/shared/database/README.md Import functions for initializing and accessing the database. Use `getDatabase` and `initDatabase` for full access in electron-backend, and `getReadOnlyDatabase` for read-only access in agent-backend. ```typescript import { getDatabase, initDatabase } from '@iptvnator/shared/database'; // Read-only access (agent-backend) import { getReadOnlyDatabase } from '@iptvnator/shared/database'; ``` ```typescript import { content, categories, playlists, type Content } from '@iptvnator/shared/database'; ``` -------------------------------- ### Stalker EPG API: get_epg_info Response Example Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-epg.md This is an example of the JSON response structure for the `get_epg_info` endpoint. The store supports this channel-keyed bulk shape as the primary contract. ```json { "js": { "data": { "45": [ { "id": "1", "name": "Program Title", "descr": "Program description", "time": "2025-01-15 14:00:00", "time_to": "2025-01-15 16:00:00", "start_timestamp": "1736949600", "stop_timestamp": "1736956800" } ] } } } ``` -------------------------------- ### Electron Backend Main Entry Point Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md The main entry point for the Electron backend application. This file is responsible for bootstrapping the Electron app and initializing the database. ```typescript constructor() { effect(() => { console.log('Count changed:', this.count()); }); } ``` -------------------------------- ### Step Rail Component Source: https://github.com/4gray/iptvnator/blob/master/apps/website/src/content/blog/blog-components-demo.mdx Guides users through a series of steps with a title and a list of step descriptions. ```mdx ``` -------------------------------- ### Build Electron Backend with CI/NX Settings Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/sqlite-db-worker.md Builds the Electron backend with specific CI and Nx task runner settings, skipping the Nx cache. ```bash CI=1 NX_TASKS_RUNNER_DYNAMIC_OUTPUT=false pnpm nx run electron-backend:build --skip-nx-cache ``` -------------------------------- ### get_categories Response Shape Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-mock-server.md Example JSON structure for the 'get_categories' API response, containing a list of category objects. ```json { "js": [ { "id": "2001", "title": "Action", "alias": "action" }, ... ] } ``` -------------------------------- ### Serve Backend with Embedded MPV (macOS Development) Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/embedded-mpv-native.md This command is used for local macOS development when the vendored runtime does not yet exist. It allows using the Homebrew-installed MPV for the backend build and starts the Electron app with the experimental feature enabled. ```bash pnpm run serve:backend:embedded-mpv ``` -------------------------------- ### Get Short EPG Sample Item Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/xtream-mock-server.md A sample item from the `get_short_epg` response. Note that `title` and `description` are base64-encoded. ```json { "epg_listings": [ { "id": "1000000", "epg_id": "channel-10000.mock", "title": "base64encodedTitle", "description": "base64encodedDescription", "start": "2024-01-01 12:00:00", "end": "2024-01-01 12:30:00", "start_timestamp": "1704110400", "stop_timestamp": "1704112200" } ] } ``` -------------------------------- ### create_link Response Shape Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-mock-server.md Example JSON structure for the 'create_link' API response, providing a stream URL and related information. ```json { "js": { "cmd": "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8", "streamer_id": "1", "load": "", "error": "" } } ``` -------------------------------- ### Build and Stage Runtime for macOS ARM64 Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/embedded-mpv-native.md This command sequence first builds the embedded MPV runtime for macOS ARM64 and then stages it. This is useful for temporary testing of PR artifacts. ```bash pnpm embedded-mpv:build-runtime -- arm64 /tmp/embedded-mpv-prefix pnpm embedded-mpv:stage-runtime -- darwin arm64 /tmp/embedded-mpv-prefix ``` -------------------------------- ### Run Backend Tests Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Execute backend tests using pnpm or nx. ```bash # Run backend tests pnpm run test:backend # or pnpm nx test electron-backend ``` -------------------------------- ### Package IPTVnator Application Source: https://github.com/4gray/iptvnator/blob/master/CLAUDE.md Packages the Electron application, creating distributable files without installers. This is useful for testing the packaged app. ```bash # Package the app (creates distributable without installers) pnpm run package:app # or nx run electron-backend:package ``` -------------------------------- ### Display User Details and Server Information Source: https://github.com/4gray/iptvnator/blob/master/libs/portal/xtream/feature/src/lib/account-info/account-info.component.html When the load state is ready and account info is available, this section displays the username, user details, allowed formats, server host, and server details. It iterates through arrays to present structured information. ```html @else if (accountInfo(); as info) { {{ 'XTREAM.ACCOUNT_INFO.USER_INFO' | translate }} ### {{ info.user_info.username || '-' }} @for (row of userDetails(); track row.labelKey) { {{ row.labelKey | translate }} @if (row.translateValue) { {{ row.value | translate }} } @else { {{ row.value }} } } {{ 'XTREAM.ACCOUNT_INFO.ALLOWED_FORMATS' | translate }} @for (format of allowedFormats(); track format) { {{ format }} } @empty { \- } {{ 'XTREAM.ACCOUNT_INFO.SERVER_INFO' | translate }} ### {{ serverHost() }} @for (row of serverDetails(); track row.labelKey) { {{ row.labelKey | translate }} {{ row.value }} } {{ 'XTREAM.ACCOUNT_INFO.PORTS' | translate }} @for (port of ports(); track port.labelKey) { {{ port.labelKey | translate }} {{ port.value }} } } ``` -------------------------------- ### Fetch Live Categories via PWA Proxy Source: https://github.com/4gray/iptvnator/blob/master/apps/xtream-mock-server/README.md This command demonstrates fetching live categories through the PWA proxy, which then forwards the request to the mock server. ```bash curl "http://localhost:3211/xtream?url=http://localhost:3211&username=user1&password=pass1&action=get_live_categories" ``` -------------------------------- ### get_short_epg Response Shape Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/stalker-mock-server.md Example JSON structure for the 'get_short_epg' API response, detailing current and upcoming EPG data for channels. ```json { "js": { "data": [ { "id": "1", "name": "Channel Name: Program Title", "start": "2026-02-21T10:00:00.000Z", "stop": "2026-02-21T12:00:00.000Z", "start_timestamp": 1740128400, "stop_timestamp": 1740135600, "descr": "...", "category": "News" } ] } } ``` -------------------------------- ### Enable Electron Player Tracing Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/validation-map.md Enable tracing for Electron external-player. Set the IPTVNATOR_TRACE_PLAYER environment variable to 1 before running the serve:backend command. ```bash IPTVNATOR_TRACE_PLAYER=1 pnpm run serve:backend ``` -------------------------------- ### Channel List Rendering Source: https://github.com/4gray/iptvnator/blob/master/libs/ui/epg/src/lib/multi-epg/multi-epg-container.component.html Iterates over filtered channels to display their icons and names. Uses a helper function to get the channel icon. ```html @for (item of filteredChannels(); track item.id; let i = $index) { @if (getChannelIcon(item)) { } {{ getChannelName(item) }} } ``` -------------------------------- ### Build IPTVNator Docker Image Source: https://github.com/4gray/iptvnator/blob/master/docker/README.md Builds the Docker image for IPTVNator. Use this command to create a local image for testing or deployment. ```bash docker build -t 4gray/iptvnator -f docker/Dockerfile . ``` -------------------------------- ### Stalker Mock Server Project Structure Source: https://github.com/4gray/iptvnator/blob/master/apps/stalker-mock-server/README.md Overview of the directory and file structure for the Stalker mock server application. ```tree apps/stalker-mock-server/ ├── src/ │ ├── main.ts # Express bootstrap │ └── app/ │ ├── scenarios.ts # MAC → scenario config mapping │ ├── data-generator.ts # Seeded faker data generation │ ├── data-store.ts # Lazy per-MAC in-memory cache │ └── routes/ │ ├── portal.route.ts # /portal.php dispatcher │ └── handlers/ │ ├── handshake.handler.ts │ ├── do-auth.handler.ts │ ├── get-categories.handler.ts │ ├── get-ordered-list.handler.ts │ ├── get-seasons.handler.ts │ ├── create-link.handler.ts │ ├── favorites.handler.ts │ ├── get-epg-info.handler.ts │ ├── get-short-epg.handler.ts │ └── get-genres.handler.ts ├── project.json ├── tsconfig.json └── README.md ``` -------------------------------- ### Get Account Info Response Shape Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/xtream-mock-server.md This JSON structure represents the response for the `get_account_info` action, detailing user and server information. ```json { "user_info": { "username": "user1", "password": "pass1", "status": "active", "exp_date": "4102444799", "is_trial": "0", "active_cons": "1", "max_connections": "2", "allowed_output_formats": ["m3u8", "ts", "rtmp"] }, "server_info": { "url": "http://localhost:3211", "port": "3211", "timezone": "UTC", "timestamp_now": 1234567890 } } ``` -------------------------------- ### Verify Package Layout for Windows Source: https://github.com/4gray/iptvnator/blob/master/docs/architecture/sqlite-db-worker.md Verifies the package layout for Windows. ```bash pnpm run verify:package-layout -- windows ```