{"id":29619211,"url":"https://github.com/db-mobile/resonance","last_synced_at":"2026-05-03T01:02:06.870Z","repository":{"id":302011317,"uuid":"1010298855","full_name":"db-mobile/resonance","owner":"db-mobile","description":"Local-first, zero-account Open Source API Client","archived":false,"fork":false,"pushed_at":"2026-04-22T23:02:47.000Z","size":14433,"stargazers_count":31,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-23T00:23:20.976Z","etag":null,"topics":["api-rest","javascript","open-source","rust","tauri"],"latest_commit_sha":null,"homepage":"https://db-mobile.github.io/resonance/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/db-mobile.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-28T19:17:19.000Z","updated_at":"2026-04-22T23:03:07.000Z","dependencies_parsed_at":"2025-10-25T08:21:34.984Z","dependency_job_id":"48284bca-4761-4c1e-9ca9-9cbab22fcd06","html_url":"https://github.com/db-mobile/resonance","commit_stats":null,"previous_names":["db-mobile/resonance"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/db-mobile/resonance","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db-mobile%2Fresonance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db-mobile%2Fresonance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db-mobile%2Fresonance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db-mobile%2Fresonance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/db-mobile","download_url":"https://codeload.github.com/db-mobile/resonance/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db-mobile%2Fresonance/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32161325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"ssl_error","status_checked_at":"2026-04-22T17:06:19.037Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","javascript","open-source","rust","tauri"],"created_at":"2025-07-21T03:01:03.757Z","updated_at":"2026-04-23T01:01:15.400Z","avatar_url":"https://github.com/db-mobile.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Resonance\n\nA local-first, zero-account API client with excellent user experience built with Tauri. Resonance is designed to be resource-friendly — with a ~15MB bundle size and ~50MB memory footprint, it runs lean compared to Electron-based alternatives.\n\n![Resonance API Client](https://img.shields.io/badge/License-MIT-blue.svg)\n![Tauri](https://img.shields.io/badge/Tauri-v2.0.0-brightgreen.svg)\n![Rust](https://img.shields.io/badge/Rust-Latest-orange.svg)\n\n![Alt text](/assets/screenshots/main_window.png?raw=true \"Main interface showing API request configuration\")\n\n## Installation\n\n### Package Managers\n\n#### Flathub (Linux)\n\nInstall from Flathub:\n\n```bash\nflatpak install flathub io.github.db_mobile.resonance\n```\n\nRun the application:\n\n```bash\nflatpak run io.github.db_mobile.resonance\n```\n\n#### Snap (Linux)\n\nInstall from Snap Store:\n\n```bash\nsnap install db-mobile-resonance\n```\n\n#### AUR (Arch Linux)\n\nInstall via an AUR helper like `yay` or `paru`:\n\n```bash\nyay -S resonance-bin\n```\n\nOr manually with `makepkg`:\n\n```bash\ngit clone https://aur.archlinux.org/resonance-bin.git\ncd resonance-bin\nmakepkg -si\n```\n\n#### Homebrew (macOS)\n\nInstall via Homebrew:\n\n```bash\nbrew tap db-mobile/resonance\nbrew install --cask resonance\n```\n\n### From Source\n\n#### Prerequisites\n\n- **Node.js** v20.0.0 or higher\n- **Rust** (latest stable) - [Install Rust](https://www.rust-lang.org/tools/install)\n- **Git** (for cloning the repository)\n- **Platform-specific dependencies**:\n  - **Linux**: `sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libayatana-appindicator3-dev librsvg2-dev`\n  - **macOS**: Xcode Command Line Tools (`xcode-select --install`)\n  - **Windows**: Microsoft Visual Studio C++ Build Tools\n\n#### Building from Source\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/db-mobile/resonance.git\ncd resonance\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n```\n\n3. Start the application in development mode:\n\n```bash\nnpm run dev\n```\n\n### Build for Distribution\n\nBuild the application for production:\n\n```bash\nnpm run build:tauri\n```\n\nThe built application will be in `src-tauri/target/release/bundle/`.\n\n**Note:** Tauri creates native installers for each platform:\n\n- **Linux**: AppImage, .deb\n- **macOS**: .app, .dmg\n- **Windows**: .msi, .exe\n\n## Features\n\n### Collection Import \u0026 Management\n\n- **OpenAPI/Swagger Import**: Import OpenAPI 3.0 specifications (YAML/JSON) with automatic schema-based example generation\n- **Postman Import**: Import Postman Collection Format v2.0 and v2.1 files\n- **Postman Environment Import**: Import Postman environment files with variables\n- **Smart Folder Organization**: Both formats create consistent flat folder structures by path segment\n\n### Code Generation\n\n- **Multi-Language Export**: Generate request code in 9 languages:\n  - cURL, Python (requests), JavaScript (Fetch), JavaScript (Axios)\n  - Node.js (axios), Go (net/http), PHP (cURL), Ruby (net/http), Java (HttpClient)\n\n### GraphQL Support\n\n- **GraphQL Integration**: Dedicated editors for GraphQL queries and testing\n  - Dropdown selector to switch between JSON and GraphQL body modes\n  - GraphQL query editor with syntax highlighting\n  - Variables editor with JSON syntax highlighting and validation\n  - Query formatting with format button\n  - Auto-save functionality for queries and variables\n\n### gRPC Support\n\n- **gRPC Integration**: Native gRPC client with server reflection\n  - Automatic service and method discovery via gRPC reflection\n  - TLS support for secure connections\n  - Request metadata (headers) configuration\n  - Response metadata and trailers display\n  - JSON-based message editing with schema-generated skeletons\n  - Unary RPC support\n\n### WebSocket Support\n\n- **Native WebSocket Integration**: Native WebSocket client with persistent connections\n  - `ws://` and `wss://` support\n  - Reusable connections per request tab\n  - Handshake header configuration\n  - Message sending with transcript-style response display\n  - Request creation and persistence alongside HTTP and gRPC requests\n\n### Collection Runner\n\n- **Batch Request Execution**: Run multiple requests sequentially with configurable options\n  - Select requests from any collection and arrange execution order\n  - Post-response scripts for variable chaining between requests\n  - Stop on error or continue execution options\n  - Configurable delay between requests\n  - Real-time progress tracking and detailed results\n  - Save and reload runner configurations\n\n### Advanced Features\n\n- **Scripts \u0026 Automation**: Pre-request and test scripts with JavaScript execution (powered by Boa Engine)\n  - **Pre-request Scripts**: Modify requests dynamically (headers, body, auth signatures)\n  - **Test Scripts**: Validate responses with assertions and extract data\n  - Rich assertion API (`expect()`) for automated testing\n  - Environment variable integration for request chaining\n  - Console logging for debugging with timestamps\n  - Sandboxed execution with 10-second timeout for security\n- **Workspace Tabs**: Multiple concurrent request tabs with independent state and persistent storage\n- **Performance Metrics**: Detailed request timing breakdown (DNS, TCP, TLS, TTFB, download)\n- **Cookie Management**: Parse and display response cookies with full attribute support\n- **Request History**: Complete request/response history with search and replay capability\n- **Proxy Support**: HTTP/HTTPS/SOCKS proxy configuration with authentication and bypass lists\n- **Mock Server**: Local HTTP mock server for testing API clients without a backend\n  - Generate responses from OpenAPI schemas automatically\n  - Configure custom response bodies and delays per endpoint\n  - Enable/disable collections individually\n  - Real-time request logging and monitoring\n\n### Environment \u0026 Variables\n\n- **Environment Management**: Organize variables into environments (Development, Staging, Production, etc.)\n- **Variable Templating**: Use `{{ variableName }}` syntax for dynamic values in URLs, headers, and request bodies\n- **Dynamic Variables**: Auto-generated values with `{{$variableName}}` syntax (UUID, timestamps, random strings, etc.)\n- **Environment Switching**: Quick dropdown selector to switch between different API contexts\n- **Import/Export**: Share environments with your team or backup as JSON files\n\n### Authentication\n\n- **Multiple Auth Methods**: Bearer Token, Basic Auth, API Key, OAuth 2.0, Digest Auth\n- **Per-Request Configuration**: Set authentication at request, folder, or collection level\n- **Secure Credential Storage**: All credentials encrypted and stored securely\n\n### User Experience\n\n- **Keyboard Shortcuts**: Comprehensive shortcuts for all actions with platform-aware bindings (⌘/Ctrl)\n- **Multi-Theme Support**: Light, dark, system-adaptive, and black (OLED) themes with 9 accent colors\n- **Internationalization**: Translations for English, Brazilian Portuguese, German, Spanish, French and Italian\n- **Syntax Highlighting**: CodeMirror-based response viewer with automatic language detection\n- **Resizable Panels**: Customizable workspace layout with draggable panel dividers\n\n### Technical Features\n\n- **HTTP Version Control**: Support for HTTP/1.1 and HTTP/2\n- **Request Timeouts**: Configurable timeout settings per request\n- **Secure Architecture**: Tauri's secure IPC, CSP policies, and native system integration\n- **Persistent Storage**: Auto-save for collections, variables, environments, settings, and history\n- **Git-Friendly Storage**: Collections are stored as human-readable JSON files in a directory structure, making them easy to version control, diff, and collaborate on with Git\n- **Lightweight**: ~15MB bundle size, ~50MB memory usage (vs ~150MB/~200MB for Electron)\n\n## Usage\n\n### Getting Started\n\n1. **Import Collections**: Click the Import button and choose:\n   - **OpenAPI Collection**: For OpenAPI 3.0 specs (YAML/JSON)\n   - **Postman Collection**: For Postman v2.0/v2.1 files\n   - **Postman Environment**: To import Postman environment variables\n2. **Create Environments**: Set up environments (Development, Staging, Production) with environment-specific variables\n3. **Set Variables**: Define reusable variables like API keys and base URLs within each environment\n4. **Switch Environments**: Use the environment selector dropdown to quickly switch between different API contexts\n5. **Make Requests**: Select endpoints from the collections sidebar and configure path params, query params, headers, body, auth, and scripts\n6. **Add Scripts (Optional)**: Write pre-request scripts to modify requests dynamically or test scripts to validate responses\n7. **View Responses**: Examine response data in the tabbed viewer (Body, Headers, Cookies, Performance, Scripts for HTTP; Body transcript for WebSocket; Body, Metadata, Trailers for gRPC)\n8. **Export Code**: Generate request code in your preferred language for documentation or automation\n\n### Environment Management\n\nOrganize your API variables into separate environments:\n\n- **Create Multiple Environments**: Development, Staging, Production, or any custom environment\n- **Environment-Specific Variables**: Each environment has its own set of variables\n- **Quick Switching**: Use the dropdown selector to instantly switch between environments\n- **Import/Export**: Share environments with your team or backup as JSON files\n- **Manage Variables**: Full CRUD operations for environment variables through the Environment Manager\n\n### Variable System\n\nVariables use the `{{ variableName }}` syntax and can be used in:\n\n- Request URLs\n- Headers\n- Query parameters\n- Request bodies\n\nVariables are scoped to the active environment, allowing different values for different contexts.\n\nExample:\n\n```\nURL: {{ baseUrl }}/users/{{ userId }}\nHeader: Authorization: Bearer {{ apiKey }}\n```\n\nThe values of `baseUrl` and `apiKey` will automatically change when you switch environments.\n\n### Dynamic Variables\n\nDynamic variables use the `{{$variableName}}` syntax and generate values automatically at request time. They don't need to be defined in advance.\n\n| Variable                 | Description                   | Example Output                              |\n| ------------------------ | ----------------------------- | ------------------------------------------- |\n| `{{$uuid}}`              | Random UUID v4                | `550e8400-e29b-41d4-a716-446655440000`      |\n| `{{$timestamp}}`         | Unix timestamp (seconds)      | `1737129600`                                |\n| `{{$timestampMs}}`       | Unix timestamp (milliseconds) | `1737129600000`                             |\n| `{{$isoTimestamp}}`      | ISO 8601 formatted date       | `2026-01-17T12:00:00.000Z`                  |\n| `{{$randomInt}}`         | Random integer 0-1000         | `742`                                       |\n| `{{$randomInt:min:max}}` | Random integer in range       | `{{$randomInt:1:100}}` → `57`               |\n| `{{$randomString}}`      | Random 8-character string     | `xK9mPq2R`                                  |\n| `{{$randomString:N}}`    | Random N-character string     | `{{$randomString:16}}` → `xK9mPq2RaB3nLp8Y` |\n| `{{$randomEmail}}`       | Random email address          | `abc12345@example.com`                      |\n| `{{$randomName}}`        | Random full name              | `John Smith`                                |\n\n**Per-Request Consistency**: The same dynamic variable used multiple times within a single request will resolve to the same value. For example, using `{{$uuid}}` in both the URL and a header will produce identical UUIDs.\n\n### Authentication\n\nResonance supports multiple authentication methods:\n\n- **Bearer Token**: OAuth 2.0 and custom bearer tokens\n- **Basic Auth**: Username/password authentication with base64 encoding\n- **API Key**: Custom header or query parameter authentication\n- **OAuth 2.0**: Flexible OAuth 2.0 authentication with custom prefixes\n- **Digest Auth**: RFC 2617 compliant Digest authentication with MD5 hashing\n\nAll authentication credentials are automatically applied to requests and work seamlessly with the variable templating system.\n\n### Collection Import\n\n**OpenAPI Integration**\nResonance automatically:\n\n- Parses OpenAPI 3.0 specifications (YAML/JSON)\n- Generates intelligent example request bodies from schemas\n- Resolves schema references and nested objects\n- Groups endpoints by first path segment\n\n**Postman Integration**\nImport your existing Postman collections:\n\n- Supports Postman Collection Format v2.0 and v2.1\n- Preserves exact request examples from your collections\n- Automatically extracts collection variables\n- Import Postman environments to recreate your workflow\n- Full authentication mapping (Bearer, Basic, API Key, OAuth2, Digest)\n- Supports body modes (raw, urlencoded, formdata)\n\n### Mock Server\n\nTest your API clients without a running backend using Resonance's built-in mock server:\n\n**Getting Started with Mock Server**\n\n1. Click the Mock Server icon in the toolbar to open the mock server dialog\n2. Configure the port (default: 3000)\n3. Select which collections to mock by enabling their checkboxes\n4. Click \"Start Server\" to begin mocking\n\n**Features**\n\n- **Automatic Response Generation**: Generates realistic responses from OpenAPI schemas\n- **Custom Responses**: Override default responses with custom JSON for any endpoint\n- **Configurable Delays**: Add realistic latency by setting delays (0-30000ms) per endpoint\n- **Request Logging**: Monitor all incoming requests with method, path, status, and timing\n- **Request Routing**: Automatically intercepts and routes matching requests to the mock server\n\n**Per-Endpoint Configuration**\nClick the \"Edit\" button next to any endpoint to:\n\n- Set custom response body (JSON)\n- Configure request delay in milliseconds\n- Reset to schema-generated defaults\n\nThe mock server is perfect for:\n\n- Frontend development without backend dependencies\n- Testing error scenarios and edge cases\n- Simulating network latency and slow responses\n- API prototyping and demonstrations\n\n### Scripts \u0026 Testing\n\nAutomate your API testing and workflows with pre-request and test scripts written in JavaScript.\n\n**Getting Started with Scripts**\n\n1. Select an endpoint from your collections\n2. Click the **Scripts** tab in the request configuration area\n3. Write your scripts in the two available sub-tabs:\n   - **Pre-request Script**: Runs before the request is sent\n   - **Test Script**: Runs after receiving the response\n4. Scripts auto-save after 1 second of inactivity\n5. View script output in the **Scripts** response tab (console logs and test results)\n\n**Pre-request Script Examples**\n\nAdd dynamic authentication headers:\n\n```javascript\nconst apiKey = environment.get(\"API_KEY\");\nrequest.headers[\"Authorization\"] = `Bearer ${apiKey}`;\nconsole.log(\"Added auth header\");\n```\n\nGenerate timestamps and signatures:\n\n```javascript\nconst timestamp = Date.now();\nrequest.headers[\"X-Timestamp\"] = timestamp.toString();\nrequest.headers[\"X-Signature\"] = btoa(`${request.method}:${timestamp}`);\n```\n\n**Test Script Examples**\n\nValidate response and extract data:\n\n```javascript\n// Verify status code\nexpect(response.status).toBe(200);\n\n// Validate response structure\nexpect(response.body.user).toBeDefined();\nexpect(response.body.user.email).toMatch(/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/);\n\n// Extract token for next request\nconst token = response.body.token;\nenvironment.set(\"AUTH_TOKEN\", token);\nconsole.log(\"Token saved for subsequent requests\");\n```\n\nCheck performance:\n\n```javascript\nexpect(response.status).toBe(200);\nexpect(response.timings.total).toBeLessThan(1000);\nconsole.log(\"Response time:\", response.timings.total, \"ms\");\n```\n\n**Available APIs**\n\nScripts have access to powerful APIs:\n\n- `request` - Modify URL, method, headers, body, query params, path params\n- `response` (test only) - Access status, headers, body, cookies, timings\n- `environment` - Get/set/delete environment variables\n- `console` - Log messages (log, info, warn, error)\n- `expect()` - Rich assertion library (toBe, toEqual, toContain, toHaveProperty, toMatch, etc.)\n\n**Common Use Cases**\n\n- Request chaining (login → extract token → use in next request)\n- Dynamic authentication signature generation\n- Automated response validation and testing\n- Data extraction from responses\n- Performance testing and validation\n- Pagination handling with state management\n\nFor comprehensive documentation with more examples, troubleshooting, and API reference, see `SCRIPTS.md` in the repository.\n\n### GraphQL Queries\n\nResonance supports GraphQL queries with dedicated editors for queries and variables.\n\n**Using GraphQL Mode**\n\n1. Navigate to the **Body** tab in the request configuration area\n2. Use the dropdown selector at the top to switch from **JSON** to **GraphQL**\n3. Write your GraphQL query in the query editor\n4. Add variables in the variables editor (optional)\n5. Click the **Format** button to auto-format your query\n6. Send the request to see results\n\n**Query Editor Example**\n\n```graphql\nquery GetUser($userId: ID!) {\n  user(id: $userId) {\n    id\n    name\n    email\n    posts {\n      id\n      title\n      content\n    }\n  }\n}\n```\n\n**Variables Editor Example**\n\n```json\n{\n  \"userId\": \"123\"\n}\n```\n\n**Features**\n\n- **Syntax Highlighting**: Full GraphQL syntax highlighting in the query editor\n- **Variables Support**: Separate JSON editor for GraphQL variables with validation\n- **Auto-Format**: Format button to automatically format your GraphQL queries\n- **Auto-Save**: Queries and variables are automatically saved as you type\n- **Variable Templating**: Use environment variables in GraphQL queries and variables with `{{ variableName }}` syntax\n\n**Combined with Scripts**\nGraphQL works seamlessly with pre-request and test scripts:\n\n- Use pre-request scripts to modify GraphQL queries dynamically\n- Use test scripts to validate GraphQL response structure\n- Extract data from GraphQL responses and save to environment variables\n\n### Themes\n\nSwitch between themes in Settings:\n\n- **Light**: Clean, bright interface\n- **Dark**: Easy on the eyes for low-light environments\n- **System**: Automatically matches your OS theme\n- **Black (OLED)**: True black theme optimized for OLED displays\n\n### Accent Colors\n\nPersonalize your interface with 9 accent colors:\n\n- Green (default), Teal, Blue, Indigo, Purple, Yellow, Orange, Red, Pink\n\nAccent colors are applied to buttons, highlights, and interactive elements throughout the application.\n\n## Keyboard Shortcuts\n\nResonance includes comprehensive keyboard shortcuts to speed up your workflow. Press `Ctrl+/` (or `Cmd+/` on macOS) to view the shortcuts help dialog in the app.\n\n### Request Actions\n\n- `Ctrl/Cmd+Enter` - Send request\n- `Ctrl/Cmd+S` - Save request modifications\n- `Esc` - Cancel current request\n\n### Navigation\n\n- `Ctrl/Cmd+L` - Focus URL bar\n- `Ctrl/Cmd+B` - Toggle collections sidebar\n- `Ctrl/Cmd+H` - Toggle history sidebar\n\n### Actions\n\n- `Ctrl/Cmd+K` - Generate code (multi-language export)\n- `Ctrl/Cmd+O` - Import collection (shows import menu)\n- `Ctrl/Cmd+E` - Open environment manager\n\n### Settings \u0026 Help\n\n- `Ctrl/Cmd+,` - Open settings\n- `Ctrl/Cmd+/` or `Shift+/` - Show keyboard shortcuts help\n\n### Workspace Tabs\n\n- `Ctrl/Cmd+T` - Create new workspace tab\n- `Ctrl/Cmd+W` - Close current workspace tab\n- `Ctrl/Cmd+Tab` - Switch to next workspace tab\n- `Ctrl/Cmd+Shift+Tab` - Switch to previous workspace tab\n- `Ctrl/Cmd+1` through `Ctrl/Cmd+9` - Switch to workspace tab 1-9\n\n### Request Tabs\n\n- `Alt+1` - Switch to Path Params tab\n- `Alt+2` - Switch to Query Params tab\n- `Alt+3` - Switch to Headers tab\n- `Alt+4` - Switch to Authorization tab\n- `Alt+5` - Switch to Body tab\n- `Alt+6` - Switch to Scripts tab\n\n**Note:** On macOS, use `Cmd` instead of `Ctrl` for the main modifier. On macOS, `Alt` is displayed as `⌥` (Option). Shortcuts are platform-aware and automatically adapt.\n\n## Architecture\n\n### Project Structure\n\n```\nsrc/\n├── renderer.js          # Renderer process coordinator\n├── style.css           # Global styles\n├── modules/            # Modular renderer components\n│   ├── controllers/    # MVC controllers (Collection, Environment, History, Script, Proxy, WorkspaceTab, MockServer)\n│   ├── services/       # Business logic services (Script, Environment, Collection, etc.)\n│   ├── storage/        # Data persistence repositories (Script, Environment, Collection, etc.)\n│   ├── ui/            # UI components (dialogs, renderers, selectors, script editors)\n│   ├── variables/     # Variable processing and templating\n│   ├── schema/        # OpenAPI schema handling\n│   ├── ipcBridge.js   # Tauri IPC compatibility layer\n│   ├── codeGenerator.js       # Multi-language code export\n│   ├── cookieParser.js        # Cookie parsing and display\n│   ├── performanceMetrics.js  # Performance timing visualization\n│   ├── scriptSubTabs.js       # Script editor sub-tabs management\n│   └── [26+ other modules]\n├── themes/            # Theme CSS files\n└── i18n/             # Internationalization (5 languages)\n\nsrc-tauri/\n├── Cargo.toml         # Rust dependencies\n├── tauri.conf.json    # Tauri configuration\n└── src/\n    ├── main.rs        # Application entry point\n    └── commands/      # IPC command handlers\n        ├── api_request.rs    # HTTP request handling with reqwest\n        ├── proxy.rs          # Proxy configuration\n        ├── mock_server.rs    # Mock server with Axum\n        ├── scripts.rs        # JavaScript execution with Boa Engine\n        ├── store.rs          # Data persistence\n        └── import_export.rs  # OpenAPI/Postman parsing\n```\n\n### Key Technologies\n\n- **Tauri** (v2.0.0): Cross-platform desktop app framework with Rust backend\n- **Rust**: Backend language for performance and security\n- **reqwest** (v0.12): Async HTTP client with HTTP/2, SOCKS proxy support\n- **Axum** (v0.7): Mock server HTTP framework\n- **Boa Engine** (v0.19): JavaScript engine for script execution\n- **CodeMirror** (v6.x): Advanced syntax highlighting and code editing\n- **tauri-plugin-store**: Persistent configuration storage\n- **serde_yaml**: YAML parsing for OpenAPI specs\n- **esbuild** (v0.25.x): Fast JavaScript bundler\n- **Jest** (v30.0.x): Testing framework\n\n### Security Features\n\n- Tauri's secure IPC communication\n- Content Security Policy (CSP) enforcement\n- Native system integration without Node.js in renderer\n- Sandboxed JavaScript execution for scripts\n- Minimal attack surface with Rust backend\n\n## Development\n\n### Scripts\n\n- `npm run dev` - Start development server with hot reload\n- `npm run build` - Build frontend assets\n- `npm run build:tauri` - Build production application\n- `npm test` - Run tests with Jest\n- `npm run test:watch` - Run tests in watch mode\n- `npm run test:coverage` - Run tests with coverage report\n- `npm run lint` - Run ESLint to check code quality\n- `npm run lint:fix` - Automatically fix ESLint issues\n- `npm run format` - Format code with Prettier\n- `npm run format:check` - Check code formatting\n\n### Development Architecture\n\nThe application follows a modular MVC-like architecture:\n\n- **Models**: Data structures and storage repositories\n- **Views**: UI components and renderers\n- **Controllers**: Coordination between models and views\n- **Services**: Business logic and API interactions\n- **Commands**: Rust backend IPC handlers\n\n### Adding New Features\n\n1. Create modules in appropriate `src/modules/` subdirectories\n2. Export functionality from index files\n3. Import and initialize in `renderer.js`\n4. Add Tauri commands in `src-tauri/src/commands/` if backend functionality is needed\n5. Register commands in `src-tauri/src/main.rs`\n\n## Contributing\n\nWe welcome contributions! Please follow these guidelines:\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit your changes: `git commit -m 'Add amazing feature'`\n4. Push to the branch: `git push origin feature/amazing-feature`\n5. Open a Pull Request\n\n### Code Style\n\n- Use ES6 modules in frontend code\n- Use Rust idioms in backend code\n- Follow existing patterns and conventions\n- Maintain security best practices\n- Add JSDoc comments for public JavaScript APIs\n- Add Rustdoc comments for public Rust APIs\n- Use defensive programming in repository layer (validate data types, handle undefined)\n- **Code Quality Tools**:\n  - ESLint for JavaScript linting and quality checks\n  - Prettier for consistent code formatting\n  - Run `npm run lint` before committing\n  - Use `npm run format` to auto-format code\n  - Run `cargo clippy` for Rust linting\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- Create an issue for bug reports or feature requests\n- Check existing issues before creating new ones\n- Provide detailed information for faster resolution\n\n## Roadmap\n\n### Completed\n\n- [x] OpenAPI 3.0 import with schema-based generation\n- [x] Postman collection import (v2.0 \u0026 v2.1)\n- [x] Postman environment import\n- [x] Multi-language code generation (9 languages)\n- [x] Workspace tabs for concurrent requests\n- [x] Performance metrics and timing breakdown\n- [x] Cookie management and display\n- [x] Proxy support with authentication (HTTP/HTTPS/SOCKS)\n- [x] Variable templating system with environment support\n- [x] Dynamic variables (UUID, timestamps, random values)\n- [x] Multi-theme support (4 themes with 9 accent colors)\n- [x] Internationalization (5 languages)\n- [x] Authentication support (Bearer, Basic, API Key, OAuth2, Digest)\n- [x] Request history with search and replay\n- [x] Environment management (Dev, Staging, Production, custom)\n- [x] Keyboard shortcuts for all major actions\n- [x] Mock server with custom responses and delays\n- [x] Collection export (OpenAPI format)\n- [x] Pre-request and test scripts with JavaScript execution (Boa Engine)\n- [x] Automated testing framework with rich assertion API\n- [x] Request chaining with environment variable integration\n- [x] GraphQL support with dedicated query and variables editors\n- [x] Tauri v2 migration for smaller bundle and better performance\n- [x] gRPC support with server reflection and unary RPC\n- [x] WebSocket support with native backend transport and handshake headers\n- [x] Collection runner for batch request execution with variable chaining\n\n### Planned\n\n- [ ] Response comparison and diff view\n- [ ] Plugin system for extensions\n- [ ] Team collaboration features\n\n## Acknowledgments\n\n- Built with [Tauri](https://tauri.app/)\n- Inspired by modern API development tools\n\n---\n\nMade with love for the API development community\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdb-mobile%2Fresonance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdb-mobile%2Fresonance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdb-mobile%2Fresonance/lists"}