Platform Repository Structure¶
InfraLynx is intentionally split across a small repository ecosystem so runtime code, documentation, governance, design direction, and infrastructure concerns can evolve without collapsing into a single unstructured repository.
Repository Ecosystem¶
infralynx-platformfor the runtime application, UI, API, worker, shared packages, tests, and migrationsinfralynx-docsfor architecture, API, operations, ADRs, onboarding, and public-facing written guidanceinfralynx-infrafor infrastructure-as-code, deployment pipelines, and hosting configurationinfralynx-standardsfor governance, contribution policy, templates, and development rulesinfralynx-designfor UI and UX standards, branding, design-system direction, and shared visual assets
Current Program Status¶
- Program snapshot:
v0.1.0-alpha+chunk31 - Current chunk:
31.1 - Current phase:
Scale / Reliability - Next milestone:
Chunk 32 -> API Versioning - Target release:
v1.0.0
Platform Monorepo¶
The infralynx-platform repository is a buildable monorepo foundation designed to keep runtime concerns, shared packages, migrations, and deployment-facing assets separated from the start.
Structure Overview¶
apps/webfor the user-facing application shellapps/apifor API delivery and request orchestrationapps/workerfor asynchronous processing and integrationspackages/configfor shared configuration metadata and helperspackages/core-domainfor base entities, statuses, permissions, and rolespackages/authfor identity, session, and authorization scaffoldspackages/auditfor audit record contractspackages/cache-corefor Redis-backed caching abstractions, TTL policies, and invalidation helperspackages/db-performancefor pagination standards, query review metadata, and index strategy helperspackages/media-corefor media metadata, validation, linking, and access-control helperspackages/media-storagefor filesystem and future cloud-backed object storage adapterspackages/event-corefor explicit integration event recordspackages/webhooksfor webhook configuration and delivery contractspackages/job-corefor job lifecycle, retry, and job-log contractspackages/job-queuefor queue abstraction and file-backed queue persistencepackages/schedulerfor recurring schedule definitions, cron parsing, and job-trigger orchestrationpackages/backupfor backup archive, restore preview, and data-safety orchestrationapps/api/src/cachefor API-side cache orchestration, scoped keys, and invalidation boundariespackages/domain-corefor core platform boundaries and domain contractspackages/sharedfor reusable utilities with low couplingtestsfor shared testing structuremigrationsfor engine-specific migration organizationdeployfor application deployment-facing assets
Naming Conventions¶
- apps are named by runtime role
- packages use singular, purpose-specific names
- directories should describe ownership, not implementation detail
- shared packages must remain intentionally small to avoid accidental coupling
Boundary Rules¶
apps/*consume packages and compose runtime behaviorpackages/domain-coredefines platform-level boundaries and contractspackages/core-domain,packages/auth, andpackages/auditdefine reusable platform service contractspackages/media-coredefines media metadata, linking, and tenant-aware access contractspackages/media-storagedefines object storage adapters and must not own metadata policypackages/ipam-domaindefines VRF, prefix, IP address, VLAN, and allocation contractspackages/dcim-domaindefines site, rack, device, interface, power, and cable contractspackages/network-domaindefines cross-domain bindings, topology edges, and path-tracing helperspackages/uidefines shell navigation, tokens, and shared UI contractspackages/sharedmust not become an unreviewed dumping ground- database-engine specifics belong under
migrations/*, not mixed into app code
UI Integration Layer¶
The web application uses a three-part data integration boundary:
apps/web/src/servicesfor transport and normalizationapps/web/src/hooksfor request lifecycle orchestrationapps/web/src/statefor reducer-backed UI state
This keeps frontend rendering decoupled from raw API payload structure.
Rack Visualization Layer¶
Rack visualization is split across two ownership areas:
packages/ui/src/rack-systemfor rack geometry, unit-slot generation, and selection helpersapps/web/src/components/rackfor React rendering and interaction behavior
This keeps positioning logic reusable and prevents rendering components from owning the underlying rack math.
Topology Visualization Layer¶
Topology visualization is split across three ownership areas:
packages/network-domain/src/topology-viewfor deterministic device-node and cable-edge generationpackages/ui/src/topologyfor graph filtering and selection helpersapps/web/src/components/topologyfor rendering and interaction behavior
This keeps graph generation reusable, keeps filters consistent, and prevents the web app from becoming the owner of network topology rules.
IPAM Tree Visualization Layer¶
IPAM tree visualization is split across three ownership areas:
packages/ipam-domainfor hierarchy validation and utilization helperspackages/ui/src/ipam-treefor reusable tree models and flattened rowsapps/web/src/components/ipam-treefor rendering and interaction behavior
This keeps hierarchy rules authoritative in the domain layer and prevents the UI from rebuilding prefix trees during rendering.
Search Integration Layer¶
Search is split across three ownership areas:
packages/core-domain/src/searchfor query normalization, matching, ranking, and grouping rulesapps/web/src/services/searchfor search transport and response normalizationapps/web/src/components/searchfor global search rendering and grouped result interaction
This keeps the UI decoupled from backend record assembly and prevents domain search logic from fragmenting across multiple frontend components.
Navigation Integration Layer¶
Navigation is split across three ownership areas:
packages/ui/src/navigationfor route metadata, grouping, breadcrumb, and context contractsapps/web/src/layoutfor shell composition and structural layout ownershipapps/web/src/components/layout/navigationfor sidebar, breadcrumb, and context navigation rendering
This keeps navigation rules centralized and prevents individual pages from inventing inconsistent hierarchy behavior.
Data Interaction Layer¶
Phase 1 CRUD and read-only resource interaction is split across four ownership areas:
apps/api/src/inventoryfor persisted inventory contracts, list/detail payloads, and CRUD mutation handlingapps/web/src/servicesfor API transport and normalizationapps/web/src/pages/*for resource-level list, detail, and form compositionapps/web/src/components/forms,apps/web/src/components/tables, andapps/web/src/components/detailfor reusable interaction primitives
This keeps the UI decoupled from storage details and keeps CRUD behavior consistent across domains.
Media Service Layer¶
Media handling is split across three ownership areas:
packages/media-corefor metadata, links, validation, and RBAC-aware access checkspackages/media-storagefor storage adaptersapps/api/src/mediafor HTTP upload and retrieval endpoints
This keeps file handling independent from UI code and prevents domain models from owning file storage concerns.
Job Engine Layer¶
Background work is split across four ownership areas:
packages/job-corefor job records, state transitions, retry rules, and log contractspackages/job-queuefor queue storage and leasing behaviorapps/api/src/jobsfor HTTP job creation and status retrievalapps/worker/src/jobsfor asynchronous processing and handler execution
This keeps asynchronous execution separate from request handling and prevents domain packages from owning queue infrastructure.
Scheduler Layer¶
Recurring and timed trigger behavior is split across three ownership areas:
packages/schedulerfor schedule contracts, cron parsing, next-run calculation, and persisted schedule stateapps/api/src/schedulerfor schedule CRUD and visibility endpointsapps/worker/src/jobsfor due-schedule evaluation and job enqueueing
This keeps the scheduler focused on trigger creation and leaves execution to the job engine.
Backup And Restore Layer¶
Backup and restore behavior is split across three ownership areas:
packages/backupfor archive creation, restore validation, restore rollback safety, and engine strategy contractsapps/api/src/backupfor HTTP backup management and restore endpointsapps/worker/src/jobsfor asynchronous scheduled backup execution
This keeps data-safety flows centralized and prevents restore logic from leaking into domain packages.
Query And Index Strategy Layer¶
Database performance planning is split across three ownership areas:
packages/db-performancefor pagination standards, critical query reviews, explain-plan guidance, and index definitionsmigrations/postgres,migrations/mssql, andmigrations/mariadbfor engine-specific index migrationsapps/api/src/inventoryandapps/api/src/index.tsfor applying shared pagination and deterministic sort behavior on active read surfaces
This keeps performance rules explicit before the persistent database adapters land and avoids scattering query semantics across unrelated packages.
Import And Export Layer¶
Transfer behavior is split across three ownership areas:
packages/data-transferfor schema rules, parsing, validation, and file-backed transfer stateapps/api/src/importfor validation, commit, and async-import endpointsapps/api/src/exportfor format-aware export endpoints
This keeps transport formats consistent across domains and prevents ad hoc import logic from leaking into runtime services.
Event And Webhook Layer¶
Integration events are split across four ownership areas:
packages/event-corefor stored event contractspackages/webhooksfor webhook configuration, filtering, signing, and delivery recordsapps/api/src/webhooksfor event and webhook HTTP endpoints plus emission orchestrationapps/worker/src/jobsfor asynchronous webhook delivery execution
This keeps outbound integrations explicit and prevents API request handlers from performing direct remote callbacks.