Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

RestWave 🌊

A modern, cross-platform REST API client built with Avalonia UI and .NET 9. RestWave provides an intuitive interface for testing and managing REST API requests with collection organization and advanced features.

RestWave Logo

Features

  • Native Cross-Platform Performance: Built with .NET and Avalonia UI - no Electron, no browser overhead, just fast native performance on Windows, macOS, and Linux
  • Fully Offline with Local Storage: Works completely offline with collections stored as files on your local file system - own your data, sync with Git, backup however you want
  • Server-Sent Events (SSE) Support: Real-time streaming response handling with automatic parsing, grouping, and live updates
  • Hierarchical Organization: Organize requests in nested folders that map directly to your file system structure
  • Developer-Friendly: Keyboard shortcuts, request cloning, syntax highlighting, and JSON formatting for efficient workflow
  • Privacy-First: No telemetry, no cloud dependencies, no data collection - your API tests stay on your machine

Screenshots

Coming Soon

Requirements

  • .NET 9.0 or later
  • Windows, macOS, or Linux

Installation

From Source

  1. Clone the repository:
git clone https://github.com/avi1989/restwave.git
cd restwave
  1. Build the application:
dotnet build RestWave.sln
  1. Run the application:
dotnet run --project RestWave

Binary Releases

Binary releases will be available soon

Usage

Making Your First Request

  1. Launch RestWave
  2. Enter your API endpoint URL
  3. Select the HTTP method (GET, POST, PUT, DELETE)
  4. Add headers if needed
  5. For POST/PUT requests, add your JSON body in the editor
  6. Click the "Invoke" button or press F5 to send the request
  7. View the response in the response panel

Organizing Requests with Collections

  1. Create a new collection from the File menu
  2. Add requests to collections for better organization
  3. Use nested folders to create hierarchical structures
  4. Collections are automatically saved and persist between sessions

Keyboard Shortcuts

  • Ctrl+S: Save current request
  • F5: Send/Submit current request
  • Ctrl+N: Create new request

Settings

Access settings to:

  • Change application theme (Light/Dark/System)
  • Configure requests directory path
  • Manage other preferences

Architecture

RestWave is built using:

  • Framework: .NET 9.0
  • UI Framework: Avalonia UI 11.3.2
  • Architecture Pattern: MVVM with CommunityToolkit.Mvvm
  • Text Editor: AvaloniaEdit with TextMate support for syntax highlighting
  • Styling: Fluent Design with Inter font family

Project Structure

RestWave/
├── Models/ # Data models and configuration
├── ViewModels/ # MVVM view models
├── Views/ # UI views and controls
├── Services/ # Business logic and data services
├── Assets/ # Images, icons, and resources
└── Styles/ # Application styling and themes

Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and test them
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Development Setup

  1. Ensure you have .NET 9.0 SDK installed
  2. Clone the repository
  3. Open RestWave.sln in your favorite IDE (Visual Studio, Rider, VS Code)
  4. Build and run the project

Code Style

  • Follow C# coding conventions
  • Use meaningful variable and method names
  • Add XML documentation for public APIs
  • Ensure proper error handling

Recent Updates

  • Collection Management: Refactored collection list for better organization
  • 🔧 Configuration: Fixed ConfigManager loading issues
  • 📋 Request Cloning: Added option to clone existing requests
  • 🎨 JSON Formatting: Implemented format button for JSON responses
  • 📱 Menu Integration: Added new request/collection options in menubar
  • ⚙️ Settings Panel: Implemented comprehensive settings management
  • 🎯 Nested Collections: Support for hierarchical request organization
  • ⌨️ Hotkeys: Save and submit request keyboard shortcuts

License

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

Roadmap

  • Import/Export collections (Postman, Insomnia formats)
  • Environment variables support
  • Tabbed Interface
  • GraphQL support
  • WebSocket testing

Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue if your problem isn't already reported
  3. Provide detailed information about your environment and the issue

Acknowledgments

  • Built with Avalonia UI - Cross-platform .NET UI framework
  • Powered by .NET 9 - Modern development platform
  • Icons and design inspired by modern REST client applications

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages