gURL is just another fancy cURL. I am building this because I want to learn Go & desktop app development using Wails, plus it's something that is useful in my day-to-day work.
It's still in early stage, essential features are implemented.
- Simple UI to configure HTTP Requests
- Workspaces to organize different orgs
- Request history
- Request collections
- Environments
- Request examples
- Response preview for supported media types (Images, Audio, Video, Pdfs etc)
- Import & Export
- Linux & Mac Os supported, Windows support in progress
- Web client is also present, can be self hosted
- Multi-user system, invitations to shared workspaces
- Integration with Git hosting to sync (WIP).
This project is designed with a shared core + multiple clients architecture. The goal is to keep all business logic centralized while allowing different frontends (desktop and web) to reuse the same underlying functionality.
- Shared Core: business logic shared avoiding duplication.
- Platform agnostic frontend: dynamically switches implementations based on runtime environment.
- Thin Clients: Client modules act as thin wrappers on top of shared core.
- Separation of Concerns: Clear boundaries between,
- UI (
frontend/) - Transport (
/desktop,/web) - Business Logic (
shared/)
- UI (
desktop/
- A standalone Go module built using Wails.
- Acts as the desktop client.
- Integrates the Angular frontend via Wails.
- Communicates with the frontend through Wails JS bindings.
- Reuses all core logic from the shared/ module.
web/
- A Go module that uses the standard net/http package.
- Exposes RESTful APIs for backend operations
- Serves the Angular SPA (static files)
- Also depends on the shared/ module for all core functionality.
shared/
-
The core module containing all reusable business logic.
-
Designed to be platform-agnostic and shared across both desktop and web clients.
-
Submodules
db/- Repository layer for interacting with SQLite.
- Handles persistence and data access.
assets/- embeds static assets in the final binary
executor/- Responsible for executing HTTP requests.
- Includes logic for request handling, response parsing, and detection.
import_export- Handles import/export functionality.
- Supports Workspace, collections, requests, environment exports to
.json& imports from.json
frontend/
-
Angular SPA
-
Built with Program to interface architecture:
-
Declares abstractions for Storage, Executor, Exporter.
-
Provides concrete implementations based on runtime environment
Environment Implementation Strategy Web Calls backend via REST APIs Desktop Uses Wails JS bindings -
allows the same frontend codebase to work in both desktop & client mode and can be extended further.
- Workspace Operations - import/export, delete, rename etc.
- Importing Open API 2.0, 3.0 and 3.1 specs as usable collections
- Oauth 1.0 & 2.0 authorization support.
- WSS, GRPC, SOAP support.
- pre & post scripts.
- Mock server
- Git integration
- Web Hooks testing & replayability
- Ability to execute collections and add tests
- OAS generation
MIT






