Matflow is a modern, extensible Angular UI framework built on top of Angular CDK and Angular Material.
The project provides flexible and composable building blocks such as overlays, tables, and graphql utilities designed for scalable Angular applications and enterprise UI systems.
Matflow focuses on extensibility, composability, and modern Angular architecture, allowing developers to build advanced UI systems while maintaining performance and developer productivity.
- Built on Angular CDK
- Compatible with Angular 17+ / 18 / 19 / 20 / 21
- Standalone-first architecture
- Flexible Overlay system
- Extensible Table framework
- Plugin based architecture
- Fully TypeScript typed APIs
- Lightweight and treeβshakeable
- Designed for enterprise Angular applications
Matflow follows several core design principles.
Components are designed to be extended through directives, configuration objects, and plugin systems.
Matflow provides flexible UI primitives instead of rigid components.
Core infrastructure is built using Angular CDK to ensure stability, accessibility, and performance.
Matflow embraces modern Angular features including:
- Standalone APIs
- Typed templates
- Modern control flow (
@if,@for) - Directive composition patterns
Install Angular dependencies if not already installed:
npm install @angular/cdk @angular/materialInstall Matflow packages (once published):
npm install matflowTo start the demo application locally:
ng serveOnce the server is running, open:
http://localhost:4200/
The application will automatically reload whenever you modify any source files.
Matflow includes a flexible CDK-based popover system.
<button
#trigger="matflowPopoverTrigger"
[matflowPopoverTriggerFor]="popover"
(click)="trigger.toggle()">
Open Popover
</button>
<ng-template matflowPopover #popover="matflowPopover">
<div class="popover-panel">
Hello from Matflow π
</div>
</ng-template>Matflow includes a flexible declarative table system.
<table
mat-table
[dataSource]="data"
matflowTable>
<ng-container matflowTableColumns>
<!-- ID -->
<ng-container
matColumnDef="id"
matflowTableColumn="ID"
name="id"
queryable
required>
<th mat-header-cell *matHeaderCellDef>ID</th>
<td mat-cell *matCellDef="let row">
{{ row.id }}
</td>
</ng-container>
<!-- Name -->
<ng-container
matColumnDef="name"
matflowTableColumn="Name"
name="name"
queryable
groupable>
<th mat-header-cell *matHeaderCellDef>Name</th>
<td mat-cell *matCellDef="let row">
{{ row.name }}
</td>
</ng-container>
<!-- Email -->
<ng-container
matColumnDef="email"
matflowTableColumn="Email"
name="email"
queryable>
<th mat-header-cell *matHeaderCellDef>Email</th>
<td mat-cell *matCellDef="let row">
{{ row.email }}
</td>
</ng-container>
<!-- Active -->
<ng-container
matColumnDef="active"
matflowTableColumn="Active"
name="active">
<th mat-header-cell *matHeaderCellDef>Active</th>
<td mat-cell *matCellDef="let row">
{{ row.active }}
</td>
</ng-container>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
</table>Matflow is designed as a modular framework.
Module Description
Overlay Core overlay infrastructure Popover Contextual popover system Table Smart table framework Grid Advanced grid utilities Core Shared utilities and internal APIs
projects
β
β matflow-overlay
β β popover system
β
β matflow-table
β β table framework
β
β matflow-graphql
β β advanced graphql utilities
β
β demo
β demo application
Angular CLI includes powerful scaffolding tools.
Generate a component:
ng generate component component-nameList all schematics:
ng generate --helpBuild the project using:
ng buildThe compiled artifacts will be stored in the:
dist/
directory.
Execute unit tests with Vitest:
ng testRun end-to-end tests using:
ng e2eAngular CLI does not include an E2E framework by default, so you can integrate tools like:
- Playwright
- Cypress
- WebdriverIO
Planned features include:
- Advanced overlay positioning
- Table framework
- Column builder system
- Table plugin architecture
- Sorting and filtering plugins
- Pagination plugins
- Virtualized data rendering
- GraphQL integration utilities
Contributions are welcome.
- Fork the repository
- Create a feature branch
- Commit your changes
- Submit a pull request
MIT License
If you find Matflow useful, please consider starring the repository.