(To read up on how to use the site, check out the previous post Effortless Data Generation for Developers.)
DataDiluvium is a web-based tool I’ve built designed to help developers, database administrators, and data engineers generate realistic test data based on SQL schema definitions. The tool takes SQL table definitions as input and produces sample data in various formats, making it easier to populate development and testing environments with meaningful data.
Project Overview
The core functionality of DataDiluvium includes:
- SQL schema parsing and validation
- Customizable data generation rules per column
- Support for foreign key relationships
- Multiple export formats (JSON, CSV, XML, Plain Text, SQL Inserts)
- Real-time preview of generated data
- Dark mode support
- Responsive design
Prerequisites and Setup
Development Environment
-
Node.js and npm
- Node.js version 18.x or higher
- npm version 9.x or higher
- Installation: Node.js Official Website
-
Git
- For version control
- Installation: Git Official Website
-
Code Editor
- VS Code (or Cursor?)
- Extensions:
- ESLint
- Prettier
- Tailwind CSS IntelliSense
- TypeScript and JavaScript Language Features
Core Technologies
-
Next.js 15.1.3
- React framework for production
- App Router architecture
- Server-side rendering capabilities
- Installation:
npx create-next-app@latest
-
TypeScript
- For type-safe JavaScript
- Included with Next.js setup
- Version: 5.x
-
Tailwind CSS
- Utility-first CSS framework
- For responsive design
- Dark mode support
- Installation: Included with Next.js setup
Additional Dependencies
-
SQL Parser
- For parsing SQL schema definitions
- We’ll use
node-sql-parserfor SQL parsing capabilities
-
Data Generation Libraries
fakerfor generating realistic datauuidfor unique identifier generationdate-fnsfor date manipulation
Project Structure
datadiluvium/
├── src/
│ ├── app/ # Next.js app router pages
│ ├── components/ # Reusable React components
│ ├── lib/ # Core functionality
│ │ ├── generators/ # Data generation logic
│ │ ├── parsers/ # SQL parsing logic
│ │ └── types/ # TypeScript type definitions
│ └── styles/ # Global styles
├── public/ # Static assets
└── package.json # Project dependencies
Initial Setup Steps
-
Create a new Next.js project:
npx create-next-app@latest datadiluvium --typescript --tailwind --eslint -
Navigate to the project directory:
cd datadiluvium -
Install additional dependencies:
npm install node-sql-parser @faker-js/faker uuid date-fns -
Configure TypeScript and ESLint:
- The Next.js setup will create these configurations
- Additional rules may be added as needed
-
Set up Tailwind CSS:
- Configuration will be created by Next.js
- Custom theme settings can be added later
Development Guidelines
-
Code Style
- Use TypeScript for all new files
- Follow ESLint and Prettier configurations
- Use functional components with hooks
- Implement proper error handling
-
Git Workflow
- Use feature branches
- Write meaningful commit messages
- Follow conventional commits format
-
Testing Strategy
- Unit tests for data generation logic
- Integration tests for SQL parsing
- Component tests for UI elements
NOTE: for each of these I’m going to try to follow them. It’s always tough to get a 1000% consistency across a code base!
Next Steps
In the next part of this series, we’ll dive into implementing the core SQL parsing functionality and the schema input interface. We’ll explore how to:
- Parse SQL schema definitions
- Validate table structures
- Create a user-friendly interface for schema input
- Implement real-time validation and error handling
Stay tuned for Part 2, where we’ll begin building the foundation of the DataDiluvium App!