A modern, open-source graphical interface for Amazon DynamoDB built with Electron. Manage your DynamoDB tables, scan and query data, and edit items with a beautiful, native desktop experience across Windows, macOS, and Linux.
- Automatic detection of AWS CLI credentials
- Support for multiple AWS profiles
- Easy profile and region switching
- Uses AWS SDK v3 for optimal performance
- Browse all DynamoDB tables in your AWS account
- View detailed table information (item count, size, indexes)
- Search and filter tables
- Favorite tables for quick access
- Sort by name, items, size, or creation date
- Powerful scan and query builder
- Support for partition key and sort key conditions
- Filter expressions with multiple operators
- Select specific indexes (GSI/LSI)
- Attribute projection (all attributes, keys only, or specific attributes)
- Pagination with "Load More" functionality
- Rich JSON editor powered by CodeMirror
- Real-time JSON validation
- Syntax highlighting and error detection
- Edit existing items or create new ones
- Toggle between standard JSON and DynamoDB JSON format
- Auto-formatting and line numbers
- Copy JSON to clipboard
- Clean, dark-themed interface
- Responsive design
- Collapsible JSON tree view for results
- Custom window controls and titlebar
- Keyboard shortcuts
🔹 Electron - Cross-platform desktop framework
🔹 React - Modern UI library
🔹 TypeScript - Type-safe development
🔹 AWS SDK v3 - DynamoDB client
🔹 CodeMirror - JSON editor with validation
🔹 TailwindCSS - Utility-first styling
🔹 Zod - Schema validation
🔹 Electron Vite - Lightning-fast build tool
Before running the application, ensure you have:
-
Node.js (v18 or higher)
-
AWS CLI configured with valid credentials
aws configure
Or manually create
~/.aws/credentialswith your access keys:[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY [profile-name] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY
# Clone the repository
git clone https://github.com/yourusername/dynamodb-gui
# Change directory
cd dynamodb-gui
# Install dependencies
npm installStart the development server:
npm run devThis launches the application in development mode with hot-reload enabled.
- Launch the application
- Select your AWS profile from the dropdown (default profile is pre-selected)
- Choose your AWS region
- Click "Connect" to load your tables
- View all tables in a sortable, searchable list
- Click the star icon to favorite frequently used tables
- Click on any table to view its details and data
- Select a table from the sidebar
- Choose between "Scan" or "Query" mode
- For Query mode:
- Enter the partition key value (required)
- Optionally add sort key conditions
- Add filters to narrow results (optional)
- Select attribute projection (all, keys only, or specific attributes)
- Click "Run" to execute
- Run a scan or query to display items
- Hover over any item to reveal the edit button (✏️)
- Modify the JSON in the editor
- Click "Format" to auto-format JSON
- Toggle "View DynamoDB JSON" to see the type-annotated format
- Click "Save" to update the item
- Navigate to a table
- Run any scan/query to see results
- Click "Create item" button
- Enter the JSON for your new item (must include partition key and sort key if applicable)
- Click "Save"
- Hover over any item in the results
- Click the delete button (🗑️)
- Click again to confirm deletion
- Alt (Windows) / ⌥ Option (macOS) - Toggle menu bar
- Ctrl+C / ⌘+C - Copy (in editor)
- Ctrl+A / ⌘+A - Select all (in editor)
Build the application for your platform:
# For Windows
npm run build:win
# For macOS
npm run build:mac
# For Linux
npm run build:linux
# Unpacked (for testing)
npm run build:unpackDistribution files will be in the dist directory.
dynamodb-gui/
├── app/ # Renderer process (React UI)
│ ├── components/
│ │ ├── dynamodb/ # DynamoDB-specific components
│ │ │ ├── DynamoDBApp.tsx # Main app container
│ │ │ ├── ConnectionHeader.tsx
│ │ │ ├── TablesView.tsx # Table listing
│ │ │ ├── ExplorerView.tsx # Scan/Query interface
│ │ │ └── DocumentEditor.tsx # JSON editor
│ │ ├── ui/ # Reusable UI components
│ │ └── window/ # Custom window controls
│ └── styles/ # Global styles
├── lib/
│ ├── conveyor/ # IPC communication layer
│ │ ├── api/ # Client-side API
│ │ ├── handlers/ # Server-side handlers
│ │ └── schemas/ # Zod validation schemas
│ ├── main/ # Electron main process
│ ├── preload/ # Preload scripts
│ └── services/
│ └── dynamodb-service.ts # DynamoDB SDK wrapper
└── resources/ # Build resources (icons, etc.)
- Uses AWS SDK's credential provider chain for secure authentication
- Context isolation enabled for security
- No credentials stored in the application
- All IPC communication is validated with Zod schemas
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Electron React App template
- Uses AWS SDK for JavaScript v3
- CodeMirror for the JSON editor
- Tailwind CSS for styling
If you find this project helpful, please give it a ⭐️ on GitHub!