A modern, web-based database management interface for Supabase databases. Built with React, TypeScript, and Tailwind CSS, this application provides a comprehensive solution for managing your Supabase database tables with an intuitive user interface.
![Supabase DB Manager]
- Universal Database Connection: Connect to any Supabase database using URL and API key
- Intelligent Table Discovery: Advanced table detection using multiple discovery methods
- Complete CRUD Operations: Create, read, update, and delete records with full validation
- Smart Data Type Inference: Automatically detects and handles various data types
- Real-time Data Management: Live updates and refresh capabilities
- Export Capabilities: Export database schema and data in JSON or SQL formats
- Import Functionality: Import data from JSON and SQL files with validation
- Search & Pagination: Efficient data browsing with search and pagination
- Responsive Design: Works seamlessly across desktop, tablet, and mobile devices
- Error Handling: Comprehensive error handling with user-friendly messages
- Modern UI: Clean, professional interface with smooth animations
- Intuitive Navigation: Easy-to-use sidebar navigation and table selection
- Visual Feedback: Loading states, progress indicators, and status messages
- Data Visualization: Smart formatting for different data types (JSON, timestamps, UUIDs)
- React 18: Modern React with hooks and functional components
- TypeScript: Full type safety and enhanced developer experience
- Tailwind CSS: Utility-first CSS framework for rapid UI development
- Vite: Fast build tool and development server
- Lucide React: Beautiful, customizable icons
- Supabase Client: Official Supabase JavaScript client
- REST API: Direct integration with Supabase REST API
- PostgREST: Leverages PostgREST for database operations
- Handles Supabase client initialization and connection management
- Implements multiple table discovery strategies
- Provides unified interface for all database operations
The application uses a sophisticated multi-method approach to discover tables:
- OpenAPI Schema Parsing: Analyzes Supabase's auto-generated OpenAPI schema
- Endpoint Testing: Tests common table name patterns
- PostgREST Introspection: Attempts to use PostgREST's introspection capabilities
- Brute Force Discovery: Systematic testing of potential table names
- Automatic Type Inference: Determines data types from sample data
- Smart Formatting: Context-aware display formatting for different data types
- Type Conversion: Handles conversion between display and storage formats
src/
βββ components/ # React components
β βββ ConnectionForm.tsx # Database connection interface
β βββ Sidebar.tsx # Navigation and table listing
β βββ TableView.tsx # Main table data interface
β βββ ExportView.tsx # Database export functionality
β βββ ImportView.tsx # Database import functionality
βββ hooks/ # Custom React hooks
β βββ useSupabase.ts # Supabase integration hook
βββ types/ # TypeScript type definitions
β βββ database.ts # Database-related types
βββ App.tsx # Main application component
- Node.js 18+ and npm
- A Supabase project with database access
- Supabase URL and API key (anon or service_role)
-
Clone the repository
git clone <repository-url> cd supabase-db-manager
-
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
-
Get your Supabase credentials
- Go to your Supabase project dashboard
- Navigate to Settings β API
- Copy your Project URL and API key
-
Connect to your database
- Enter your Supabase URL (e.g.,
https://your-project.supabase.co
) - Enter your API key (anon key for read-only, service_role for full access)
- Optionally provide a connection name for easy identification
- Enter your Supabase URL (e.g.,
- Launch the application
- Enter your Supabase URL and API key
- Click "Connect to Database"
- Wait for table discovery to complete
- Select a table from the sidebar
- View, edit, or delete existing records
- Add new records using the "Add Row" button
- Use search functionality to find specific data
- Navigate through pages for large datasets
- Click "Export" in the sidebar
- Select tables to export
- Choose format (JSON or SQL)
- Configure options (schema, data)
- Click "Export Database" to download
- Click "Import" in the sidebar
- Upload a JSON or SQL file
- Review the validation results
- Click "Import Database" to proceed
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm run lint
- Run ESLint
- TypeScript: Strict type checking enabled
- ESLint: Comprehensive linting rules
- Prettier: Code formatting (recommended)
The application runs entirely in the browser and doesn't require environment variables. All configuration is done through the UI.
- Query Builder: Visual query construction interface
- Schema Editor: Visual database schema modification
- Bulk Operations: Multi-row operations and bulk data management
- Data Validation: Custom validation rules and constraints
- Keyboard Shortcuts: Power user keyboard navigation
- Relationship Visualization: Interactive database relationship diagrams
- Advanced Filtering: Complex filter conditions and saved filters
- Data Transformation: Built-in data transformation and cleaning tools
- Backup Scheduling: Automated backup and restore functionality
- User Management: Multi-user access with role-based permissions
- SQL Query Interface: Full SQL editor with syntax highlighting
- Performance Analytics: Database performance monitoring and optimization
- Migration Tools: Database migration and version control
- API Documentation: Auto-generated API documentation from schema
- Plugin System: Extensible architecture for custom functionality
- Offline Support: Progressive Web App with offline capabilities
- Real-time Collaboration: Multi-user real-time editing
- Advanced Caching: Intelligent data caching and synchronization
- Performance Optimization: Virtual scrolling for large datasets
- Accessibility: Full WCAG 2.1 AA compliance
- Follow TypeScript best practices
- Maintain component modularity
- Write comprehensive error handling
- Include proper type definitions
- Test across different Supabase configurations
- Use functional components with hooks
- Implement proper error boundaries
- Follow React best practices
- Maintain consistent naming conventions
This project is open source and available under the MIT License.
- Connection Failed: Verify your Supabase URL and API key
- Tables Not Found: Ensure your API key has proper permissions
- Export Errors: Check table permissions and data integrity
- Import Failures: Validate file format and data structure
- Check the browser console for detailed error messages
- Verify Supabase project settings and permissions
- Ensure your database has the required tables and data
- API Key Security: Never expose service_role keys in production
- Data Validation: All user inputs are validated and sanitized
- Error Handling: Sensitive information is not exposed in error messages
- Connection Security: All connections use HTTPS encryption
- Supabase Team: For the excellent database-as-a-service platform
- React Community: For the robust ecosystem and best practices
- Tailwind CSS: For the utility-first CSS framework
- Lucide: For the beautiful icon library
Built with β€οΈ for the Vibe coders community
Developer URL https://theodorosdimitriou.com/