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!