A configuration-driven React frontend for building reusable reports, widgets, and dashboards on top of the Generic SQL API.
The framework keeps responsibilities explicit:
JSON report/dashboard/widget configuration
-> validation and defaults
-> runtime filters, sorting and pagination
-> JSON request to the Generic SQL API
-> report grid or dashboard widget
Data can be described by a top-level universal JSON request or by a discovered SQL Resource ID. Frontend definitions keep display columns, controls, and initial sorting at the top level; the runtime derives the constrained SQL API envelope from that normalized configuration. SQL text, discovery, path resolution, validation, and execution remain backend responsibilities; the frontend does not load SQL files.
- JSON request and backend SQL-resource query modes
- JSON-configured columns, filters, grids, toolbars, widgets, dashboards, and navigation
- Reusable report, stat, table, and chart dashboard widgets
- Runtime filtering, sorting, and server-side pagination
- AG Grid-based
GenericGridwith column resizing, reordering, and configured grouping - Request caching and in-flight request deduplication
- Current-view and all-row CSV/Excel exports where enabled by configuration
- Browser-local saved report views
- Automated Vitest and React Testing Library coverage
- GitHub Actions checks for tests, lint, type-checking, and production builds
The application is built with React, TypeScript, Vite, Material UI, AG Grid, and Recharts.
The frontend is organized into configuration, definition/query engines, API integration, shared state, and presentation components. See the architecture guide and the SQL/JSON responsibility rules.
git clone git@github.com:itsshashanksp/Generic_Reporting_Framework.git
cd Generic_Reporting_Framework
npm ci
npm run devSet VITE_API_URL in a local .env file to the Generic SQL API endpoint used for live data. See Getting Started for details.
Run the project checks with:
npm test
npm run lint
npx tsc --noEmit
npm run build| Document | Description |
|---|---|
| Documentation index | Navigation for all project documentation |
| Architecture | Overall frontend architecture and request flow |
| Getting Started | Installation, configuration, and first run |
| Development | Project structure and developer workflows |
| Configuration reference | Complete report, dashboard, widget and menu properties |
| Query modes | JSON requests, SQL resource IDs and runtime merging |
| Feature behavior | Filtering, grid, export, saved views and cache details |
| Examples | Valid configurations and authoring recipes |
| Reports | Report definition and rendering architecture |
| Widgets | Reusable widget definitions and widget types |
| Dashboards | Dashboard configuration and runtime behavior |
| Testing | Test strategy, commands, and CI |
| Supported behavior | Capability matrix and known gaps |
| Backend capability matrix | Backend capabilities and frontend exposure |
| API reference | Exact read requests, runtime merge, responses and errors |
| Roadmap | Implemented, next, planned and deferred work |
| Changelog | Frontend change history |
Contributions are welcome. Read CONTRIBUTING.md before opening a change.
This project is available under the MIT License.