Skip to content

winse/avro-explorer

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Avro Explorer

Avro Explorer Logo

A professional Visual Studio Code extension for viewing and exploring Apache Avro files

Visual Studio Marketplace Version Open VSX Version License


πŸ“Έ UI Preview

Avro Explorer Interface

A powerful Avro file viewer with interactive data table, schema display, and flexible view modes.


✨ Features

πŸ“Š Interactive Data Table

  • Sort records by any column (click column header)
  • Virtualized Table - Smooth scrolling of large datasets with @blueprintjs/table
  • Inline Column Filtering - Filter records directly from each table column header
  • Cell Preview Panel - Click any cell to preview full content in resizable panel with JSON syntax highlighting
  • Pagination with customizable page size
  • Row selection with Windows-style highlighting
  • Export selected or all data
  • πŸ” Global Search - Search across all columns with Ctrl+F shortcut
  • πŸ“Š Column Charts - Visual distribution charts for column values
  • πŸ“ Column Operations - Show/hide columns, drag to reorder

πŸ“‹ Schema Display

  • Syntax-highlighted JSON schema view
  • Quick copy to clipboard
  • Shows type, name, and field count
  • πŸ”„ Two Modes - Fields list and JSON view switching

↔️ Flexible View Modes

  • Split View - Schema and records side by side
  • Schema Only - Focus on schema definition
  • Records Only - Full-screen data exploration
  • Resizable panels for custom layouts

🎨 Theme Aware

  • Blueprint 6 Dark Mode - Automatic bp6-dark theme synchronization
  • Consistent styling with editor colors
  • Smooth hover and selection effects

πŸ’Ύ Export Capabilities

  • Export to CSV (comma-separated values)
  • Export to JSON (formatted with indentation)
  • System save dialog for file location

πŸš€ Getting Started

Quick Start

  1. Double-click any .avro file in Explorer
  2. Or right-click -> Open With... -> Avro Explorer
  3. Or run command palette: Open in Avro Explorer

View Mode Switching

Icon Mode Description
⇆ Split Schema and records side by side
πŸ“‹ Schema Full schema view
πŸ“Š Records Full records table

Filtering Records

  1. Use the search box to filter across all columns
  2. Or select a specific column from the dropdown
  3. Results update in real-time

Sorting Records

Click on any column header to sort ascending/descending.

Exporting Data

  1. Click CSV or JSON button in the toolbar
  2. Choose save location in the dialog
  3. Data is exported in your chosen format

Previewing Cell Content

  1. Click on any cell in the data table
  2. A preview panel appears showing the full content
  3. For JSON objects, syntax highlighting is applied
  4. Drag the resizer to adjust panel height
  5. Toggle preview visibility with the eye icon in toolbar

πŸ“‹ Requirements

  • Visual Studio Code: 1.78.0 or higher
  • Operating System: Windows, macOS, Linux
  • Avro Files: Supports uncompressed and compressed Avro files (deflate, snappy)

Note: Supports both uncompressed and compressed Avro files. Long type values are automatically converted to strings for JavaScript compatibility.

⌨️ Commands

Command Description
avro-explorer.open Open current file in Avro Explorer

Access via Ctrl+Shift+P (or Cmd+Shift+P on Mac):

  1. Type "Avro Explorer"
  2. Select the command

πŸ› οΈ Development

Prerequisites

  • Node.js 18+
  • npm or yarn
  • VSCode for testing

Setup

# Clone the repository
git clone https://github.com/winse/data-viewer

git clone https://github.com/winse/avro-explorer.git
cd avro-explorer

# Install dependencies
npm install

# Start development watch mode
npm run watch

Build

# Compile and bundle (development)
npm run compile

# Production build (generates .vsix)
npm run package

Project Structure

data-viewer/           # Shared UI components library
avro-explorer/
β”œβ”€β”€ src/                     # Extension source (TypeScript)
β”‚   β”œβ”€β”€ commands/           # VSCode commands
β”‚   β”œβ”€β”€ webview/            # Message handlers and providers
β”‚   └── extension.ts        # Extension entry point
β”œβ”€β”€ webview/                # React WebView application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/     # React components
β”‚   β”‚   β”œβ”€β”€ hooks/          # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ styles/         # CSS styles
β”‚   β”‚   └── utils/          # Utility functions
β”‚   └── package.json        # Web dependencies
β”œβ”€β”€ images/                 # Icons and assets
β”œβ”€β”€ esbuild.config.js       # Bundler configuration
β”œβ”€β”€ tsconfig.json           # TypeScript config (extension)
β”œβ”€β”€ webview/tsconfig.json   # TypeScript config (webview)
└── package.json            # Extension manifest

Tech Stack

  • Extension: TypeScript + esbuild
  • WebView: React 18 + TypeScript
  • UI Framework: Blueprint 6 (Section, SectionCard, Table2)
  • Virtualized Table: @blueprintjs/table
  • Syntax Highlighting: Prism.js
  • Linting: ESLint + Prettier
  • data-viewer: Shared UI components library (used by both Parquet and Avro explorers)

πŸ“ Extension Manifest

{
  "name": "avro-explorer",
  "displayName": "Avro Explorer",
  "publisher": "winse",
  "version": "0.5.1",
  "engines": {
    "vscode": "^1.78.0"
  },
  "categories": ["Visualization"],
  "keywords": ["avro", "explorer", "viewer", "data", "schema"],
  "activationEvents": [
    "onCustomEditor:avro-explorer.avroEditor",
    "onCommand:avro-explorer.open"
  ],
  "main": "./dist/extension.js",
  "contributes": {
    "commands": [...],
    "customEditors": [...]
  }
}

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

πŸ™ Acknowledgments


Made with ❀️ by winse

About

Professional Avro file viewer with interactive data table, schema display, and export capabilities. Double-click to open .avro files directly.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 91.6%
  • JavaScript 8.4%