Repository-specific Nx monorepo structure, library placement rules, scoped path aliases, and migration guardrails for portal/workspace/app code. Use when this capability is needed.
Install
npx skillscat add tomevault-io/tomes/iptvnator-nx-architecture Install via the SkillsCat registry.
SKILL.md
IPTVnator Nx Architecture
Use this skill when deciding where code belongs, extracting libraries, changing imports, editing project tags, or refactoring portal/workspace/app boundaries.
Project Shape
apps/web: Angular renderer application.apps/electron-backend: Electron main process and native/runtime integration.apps/*-e2e: Playwright E2E projects.apps/*-mock-server: local development and E2E mock servers.libs/playlist/*: M3U/import/shared playlist functionality.libs/portal/*: Xtream, Stalker, and provider-neutral portal functionality.libs/workspace/*: workspace shell and dashboard.libs/ui/*: provider-neutral UI, playback, EPG, remote control, and pipes.libs/shared/*: contracts, database, and pure utility code.
Import Policy
- Use scoped aliases from
tsconfig.base.json, for example@iptvnator/servicesand@iptvnator/shared/interfaces. - Do not reintroduce legacy bare aliases such as
services,components, orshared-interfaces. - Prefer library public APIs (
src/index.ts) over deep imports unless a sub-entrypoint is explicitly configured. - Keep app-only code in
apps/*; shared behavior belongs in a domain library.
Tag Policy
- Every project should have
scope:*,domain:*, andtype:*tags. - Use
type:featurefor route/component orchestration,type:data-accessfor stores/API/persistence,type:uifor reusable components, andtype:utilfor pure helpers/contracts. - Keep
type:data-accessfrom depending ontype:featureortype:ui. - Add or update
@nx/enforce-module-boundariesconstraints when introducing new tag families.
Validation
pnpm nx show projects
pnpm nx lint <project>
pnpm nx test <project>When dependencies are not installed in a fresh worktree, run pnpm install --frozen-lockfile first.
Source: 4gray/iptvnator — distributed by TomeVault.