Files
mariavel/frontend/README.md
T

3.0 KiB

Mariavel - Modern Database Management Tool (Frontend)

Mariavel is a premium, glassmorphic database management interface built for MariaDB/MySQL. It provides an IDE-like experience for managing databases, tables, and executing complex SQL queries.

🚀 Features

  • Data Explorer: High-performance data viewing using MUI X Data Grid with server-side pagination.
  • SQL Console: Interactive SQL editor powered by Monaco Editor (the core of VS Code) with syntax highlighting and direct execution.
  • Technical Metadata: Detailed table and database specifications including engine, collation, and storage sizes.
  • Bulk Actions: Perform maintenance tasks like Truncate, Drop, and Optimize on multiple tables simultaneously.
  • Transfer Tools: Robust import/export capabilities supporting SQL files and compressed archives.
  • Responsive Design: Modern, glassmorphic UI with dark mode support and a fluid layout.

🏗️ Architecture & SOLID Principles

The application has been recently refactored to follow SOLID principles, ensuring a maintainable and scalable codebase:

Single Responsibility Principle (SRP)

Components have been decoupled into specialized units:

  • DatabaseTablesGrid: Dedicated to table listing and bulk operations.
  • SqlConsole: Isolated SQL editing and result rendering.
  • TechnicalOverview: Focused on metadata presentation.
  • MainContent: Orchestrates high-level layout and navigation.

Logic Separation (Custom Hooks)

Business logic and data fetching are extracted into custom hooks:

  • useTableData: Manages paginated data fetching and row mapping.
  • useTableSchema: Handles column definitions and type mapping from SQL to UI.

Type Safety

  • Verbatim Module Syntax: Configured for strict type-only imports (import type), improving build performance and code clarity.
  • Centralized Types: Shared interfaces are located in src/types/database.ts.

🛠️ Technology Stack

📂 Directory Structure

src/
├── components/     # Specialized UI components (DatabaseTablesGrid, SqlConsole, etc.)
├── hooks/          # Custom hooks for logic separation (useTableData, useTableSchema)
├── services/       # API service layers
├── store/          # Zustand global state management
├── types/          # Shared TypeScript interfaces
├── theme/          # MUI theme configuration
└── App.tsx         # Main application entry point

🚥 Getting Started

  1. Install dependencies:
    npm install
    
  2. Start development server:
    npm run dev
    
  3. Build for production:
    npm run build