Skip to content

pixperk/quest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Quest - Terminal HTTP Client

A beautiful, modular terminal-based HTTP client built with Go, Bubble Tea, and Charm CLI. Think Postman, but in your terminal with a gorgeous TUI interface.

Quest Screenshot Quest Screenshot Quest Screenshot

โœจ Features

  • ๐ŸŽจ Beautiful TUI Interface - Powered by Charm's Bubble Tea and Lipgloss
  • ๐ŸŒ Full HTTP Support - GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
  • ๐Ÿ“Š Real-time Response - View responses with syntax highlighting
  • โšก Performance Metrics - Response time and status code display
  • ๐ŸŽฏ Easy Navigation - Keyboard-driven interface with tabs
  • ๐Ÿ“ฑ Responsive Design - Adapts to your terminal size
  • ๐Ÿ”ง Modular Architecture - Clean, maintainable codebase
  • ๐ŸŽช Custom Headers - Add and manage request headers
  • ๐Ÿ“ Request Body Support - JSON, XML, plain text support
  • ๐ŸŒˆ Color-coded Methods - Visual distinction for HTTP methods
  • ๐Ÿ’พ Clean Error Handling - Graceful error messages
  • ๐Ÿ“‚ Request Saving - Save requests to .quest files
  • ๐Ÿ”„ Response Sub-tabs - Separate views for headers and body
  • ๐Ÿ“œ Scrollable Method List - Better navigation through HTTP methods

๐Ÿš€ Installation

Prerequisites

  • Go 1.23+ installed on your system
  • A terminal that supports ANSI colors

Simple install (via Go driectly)

To install quest simply run:

go install github.com/pixperk/quest@latest

This will install the binary into your GOBIN (linux/macOS: $GOBIN, windows: %GOBIN%) which in most cases already is in your path.

Build from Source

  1. Clone the repository:
git clone https://github.com/pixperk/quest.git
cd quest
  1. Install dependencies:
go mod tidy
  1. Build the application:
go build -o quest .
  1. Run Quest:
./quest        # On Linux/macOS
quest.exe      # On Windows

Quick Install (one-liner)

This will download the source code and build quest, not add it to your PATH

git clone https://github.com/pixperk/quest.git && cd quest && go build -o quest . && ./quest

๐ŸŽฎ Usage

Interface Overview

Quest features a tabbed interface with four main sections:

  1. URL Tab - Enter your API endpoint and select HTTP method (๐ŸŒ ๐Ÿš€)
  2. Headers Tab - Add custom request headers (๐Ÿ“‹)
  3. Body Tab - Enter request body (for POST/PUT/PATCH) (๐Ÿ“)
  4. Response Tab - View formatted response with headers (๐Ÿ“Š)

Keyboard Shortcuts

Navigation

  • Ctrl+โ†’ / Ctrl+L - Next tab
  • Ctrl+โ† / Ctrl+H - Previous tab
  • Tab / Alt+โ†’ / Alt+L - Next field within current tab
  • Alt+โ† / Alt+H - Previous field within current tab
  • โ†‘/โ†“ or j/k - Navigate through HTTP methods
  • Enter - Select HTTP method

Actions

  • Ctrl+S - Send the HTTP request
  • Ctrl+A - Add header (in Headers tab)
  • Ctrl+X - Clear all headers (in Headers tab)
  • Ctrl+W - Save current request to .quest file
  • Ctrl+R - Load saved request
  • Shift+โ†/โ†’ - Switch between response sub-tabs (Headers/Body)
  • Esc - Cancel load dialog
  • / - Search saved requests (when in load dialog)
  • ? - Toggle help menu
  • q or Ctrl+C - Quit the application

Making Your First Request

  1. Enter URL: Type your API endpoint (e.g., https://jsonplaceholder.typicode.com/posts/1)
  2. Select Method: Press Tab to focus on methods, use โ†‘/โ†“ to select (default: GET)
  3. Add Headers (optional): Navigate to Headers tab, enter key-value pairs
  4. Add Body (optional): For POST/PUT/PATCH, navigate to Body tab and enter JSON/XML
  5. Send Request: Press Ctrl+S to send the request
  6. View Response: Automatically switches to Response tab with formatted output

Example Requests

Simple GET Request

URL: https://api.github.com/users/octocat
Method: GET

POST with JSON Body

URL: https://jsonplaceholder.typicode.com/posts
Method: POST
Headers:
  Content-Type: application/json
Body:
{
  "title": "My Post",
  "body": "This is my post content",
  "userId": 1
}

Authenticated Request

URL: https://api.example.com/protected
Method: GET
Headers:
  Authorization: Bearer your-token-here
  Accept: application/json

๐ŸŽจ Interface Walkthrough

URL Tab

  • URL Input: Enter your complete API endpoint with protocol (http/https)
  • Method Selection: Choose from 7 HTTP methods with color coding (now scrollable with โ†‘/โ†“):
    • ๐ŸŸข GET - Retrieve data
    • ๐Ÿ”ต POST - Create new resource
    • ๐ŸŸก PUT - Update/replace resource
    • ๐Ÿ”ด DELETE - Remove resource
    • ๐ŸŸฃ PATCH - Partial update
    • โšช HEAD - Headers only

Headers Tab

  • Add custom headers like Authorization, Content-Type, etc.
  • Press Ctrl+A to add a header after entering key and value
  • View all added headers below the input fields
  • Press Ctrl+X to clear all headers

Body Tab

  • Large text area for request body
  • Supports JSON, XML, plain text, or any format
  • Automatic Content-Type header for requests with body

Response Tab

  • Response Sub-tabs: Switch between Headers and Body views with Shift+โ†/โ†’
  • Headers Sub-tab: Clean display of all response headers
  • Body Sub-tab: Formatted response body with JSON auto-formatting
  • Status Code with color coding (green=2xx, yellow=3xx, orange=4xx, red=5xx)
  • Response Time measurement

Request Saving

  • Press Ctrl+W to save the current request to a .quest file
  • Requests are saved with URL, method, headers, and body
  • Saved requests persist between sessions

Built With

  • Go 1.23+ - Modern Go with latest features
  • Bubble Tea - TUI framework for rich terminal applications
  • Lipgloss - Styling and layout for terminal UIs
  • Bubbles - Common TUI components (textinput, viewport, etc.)

Design Principles

  • Modular: Clean separation of concerns
  • Responsive: Adapts to different terminal sizes
  • Accessible: Keyboard-driven interface
  • Beautiful: Carefully crafted visual design
  • Fast: Efficient rendering and HTTP client

๐ŸŽฏ Roadmap

Upcoming Features

  • Request history and recall
  • Save/load request collections
  • Environment variables and templating
  • Multiple authentication methods (Basic, OAuth, API Key)
  • Response export (JSON, text files)
  • Custom themes and color schemes
  • Request/response tabs for multiple concurrent requests
  • cURL command export
  • Request duration graphs
  • Configuration file support

Advanced Features

  • GraphQL support
  • WebSocket connections
  • Request scripting with JavaScript
  • Mock server integration
  • CI/CD integration
  • Team collaboration features

๐Ÿค Contributing

Contributions are welcome! 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
  4. Add tests if applicable
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Development Setup

git clone https://github.com/pixperk/quest.git
cd quest
go mod tidy
go run main.go

๐Ÿ“ License

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

๐Ÿ™ Acknowledgments


Made with โค๏ธ and Go

Quest - Making API testing beautiful, one terminal at a time.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages