FlexiGrid is a dynamic data management application that allows users to create, edit, and manage datasets. With support for CSV imports and manual data modeling, FlexiGrid provides an intuitive interface for handling datasets. It uses client-server architecture to handle large datasets efficiently with advanced filtering and sorting capabilities.
- Dynamic Data Models: Create data models manually or import CSV files.
- Schema Inference: Automatically infer field types (e.g., text, number, date) from CSV files.
- Custom DataGrid: Powerful client-server DataGrid with:
- Advanced filtering (
contains,equals,inRange, etc.) - Pagination
- Sorting
- Advanced filtering (
- Data Management: Add, edit, delete data within datasets.
- Real-Time Updates: Reflect changes immediately in the UI.
- User-Friendly Interface: Built with Material UI for a clean and intuitive user experience.
- React with TypeScript
- Material UI for UI components
- AG-Grid Enterprise for DataGrid
- Vite for fast development and build tooling
- Express with TypeScript
- MongoDB as the database
- Multer for handling file uploads
- Docker for containerized deployment
-
Clone the repository:
git clone https://github.com/meryemefe/flexigrid.git cd flexigrid -
[Optional] To run the application without Docker:
# Install backend dependencies cd backend npm install npm run dev # Install frontend dependencies cd ../frontend npm install npm run dev
-
To run the application with Docker:
docker-compose up --build
-
Open your browser:
- Frontend: http://localhost:5173
- Backend: http://localhost:8080
- Creating Models
- Navigate to the "Create or Import Model" page.
- For manual creation:
- Define model fields with names and types (text, number, or date).
- For CSV imports:
- Upload a CSV file to generate a model schema and populate data automatically.
- Managing Data
- Double-click on a model to view its data.
- Use the DataGrid to:
- Filter rows with advanced conditions (e.g., contains, equals, greater than).
- Sort by any column.
- Add new data, edit or delete existing data.
FlexiGrid is designed with scalability in mind. Potential future improvements include:
- Supporting additional data types like boolean, double, and clob.
- Adding field validation (e.g., required, unique).
- Implementing dataset level authorization and access control.