Repository Map

August 10, 2026 · View on GitHub

Scope: where things live and which package owns what. This is the quickest orientation document after AGENTS.md.

Top level

  • Root package.json defines the npm workspace and orchestration scripts (build:all, test:all, start:all, lint:frontend, pack:backend) so you can run common dotnet and npm tasks from the repository root.
  • src/dotnet/ contains the .NET solution and publishable NuGet packages.
  • src/npm/ contains the npm workspace and publishable @laczynski/datagrid* packages.
  • samples/ contains runnable demo applications that reference the library packages (local path or published versions).
  • docs/ contains implementation guides and technical documentation.
  • artifacts/ is the default output folder for packed NuGet packages (gitignored).

.NET map

Solution shape

  • src/dotnet/DataGrid.slnx is the solution entry point.
  • Directory.Packages.props manages NuGet package versions centrally.
  • Directory.Build.props applies shared metadata and version to packable projects.

Package responsibilities

PackageOwns
DataGrid.AbstractionsGridQuery, GridResult, filter/sort types, GridExportRequest / GridExportResult, GridExportFormats, GridExportContentTypes.GetFilename, attributes, GridQueryJson, FilterNodeJsonConverter
DataGrid.CoreSchema discovery, expression builders, IQueryable extensions, GridOptions, CSV/Excel export, IGridExportWriter, GridExportWriterRegistry, GridExportPipeline, GridExportWriterRegistration
DataGrid.EntityFrameworkCoreToGridResultAsync, ExportAsync, ExportToCsvAsync, ExportToXlsxAsync

Export layout

Shared export planning (GridExportExecutor) lives in DataGrid.Core. Built-in writers: CSV (BCL) and Excel (ClosedXML).

FormatPackageEntry point
AnyDataGrid.EntityFrameworkCoreExportAsync
CSVDataGrid.Core / EFExportToCsv / ExportToCsvAsync
ExcelDataGrid.Core / EFExportToXlsx / ExportToXlsxAsync
CustomconsumerIGridExportWriter + GridExportPipeline, register via GridExportWriterRegistration.Configure or GridExportOptions.Writers

The npm grid shows Export and Export selected dropdowns (CSV and Excel) when export is configured.

Internal layout (Core)

  • Schema/ — field discovery and GridFieldInfo
  • Internal/ — expression builders, type classification, value conversion, CsvGridExporter, XlsxGridExporter (not public API)

Tests

  • src/dotnet/tests/DataGrid.UnitTests/ — xUnit tests colocated by concern (FilterTests, SortAndPagingTests, GridQueryContractTests, etc.)
  • Uses EF Core InMemory for integration-style tests without a real database.

npm map

Workspace shape

  • src/npm/package.json is a pointer only — workspaces and scripts live at the repository root.
  • Each package has its own package.json, build config, and src/ folder.

Package responsibilities

PackageOwns
@laczynski/datagridTypeScript models mirroring GridQuery / GridResult, formatGridError, formatLocalDateTime, buildGridExportBody, downloadGridExport
@laczynski/datagrid-primengcreateGridResource(), GridResourceFactory, <dg-prime-data-grid>, dgColumn / dgEmpty directives, filter feed
@laczynski/datagrid-uicreateGridResource(), GridResourceFactory, <dg-ui-data-grid>, dgColumn / dgEmpty directives, filter feed (@laczynski/lui)
@laczynski/datagrid-spartancreateGridResource(), GridResourceFactory, <dg-spartan-data-grid>, column filters, export, views — spartan-ui-alignment.md
@laczynski/datagrid-cliAngular schematics — spartan-grid (filter-editors L2 / full L3); see spartan-l3-hlm.md

PrimeNG package layout

  • create-grid-resource.ts, grid-resource-factory.ts — signal-based grid state store
  • grid-state-storage.ts — optional session / local persistence (persistState)
  • table/dgColumn, dgEmpty, column filter component, column resolution
  • sort-mapper.ts, filter-mapper.ts, match-mode-options.ts, lazy-load-mapper.ts — PrimeNG lazy-load bridge (barrel re-exports from the first three)
  • filter-feed.ts — interactive filter query feed UX

Tests

  • @laczynski/datagrid — Vitest (models.spec.ts, grid-error-codes.spec.ts, format-local-datetime.spec.ts).
  • @laczynski/datagrid-primeng — Vitest (lazy-load-mapper.spec.ts, filter-feed.spec.ts); integration via samples/showcase-ui.

Samples map

  • samples/README.md describes the showcase apps (showcase-api, showcase-ui) — a compatibility matrix for data types, operators, and grid scenarios (not a business-domain demo).
  • Samples consume published or locally packed packages — they are not part of the library API surface.
  • Use samples instead of downstream consumer repos for manual end-to-end verification before release.

Dependency graph

DataGrid.Abstractions

        ├── DataGrid.Core
        │         └── DataGrid.EntityFrameworkCore

@laczynski/datagrid

        ├── @laczynski/datagrid-primeng
        ├── @laczynski/datagrid-ui
        ├── @laczynski/datagrid-spartan
        └── @laczynski/datagrid-cli (schematics; devDependency in consumer apps)

Transport contracts must stay aligned between DataGrid.Abstractions and @laczynski/datagrid.