Skip to content

darrenburns/posting

Repository files navigation

Posting.

Posting is an powerful HTTP client which brings Postman-like functionality to your terminal.

It's designed for those who prefer working in a terminal environment and enjoy fast, keyboard-centric user interfaces.

image

It's still a work in progress and far from feature complete. Please don't open any bug reports yet - although I'm happy to hear ideas/suggestions!

Installation

Posting can be installed via pipx:

pipx install posting

Python 3.11 or later is required.

More installation methods (brew, etc) will be added soon.

Collections

Requests can be stored inside "collections" on your file system. A collection is simply a directory containing one or more requests.

Each request is stored as a simple YAML file, suffixed with .posting.yaml - easy to read, understand, and version control!

Here's a quick example of a *.posting.yaml file.

name: Create user
description: Adds a new user to the system.
method: POST
url: https://jsonplaceholder.typicode.com/users
body: |-
  {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com"
  }
headers:
- name: Content-Type
  value: application/json
- name: Some-Header
  value: Some value
  enabled: false
params:
- name: sendWelcomeEmail
  value: 'true'

To open a collection, simply pass the path to the --collection option when launching Posting:

posting --collection path/to/collection

The supplied directory will be recursively searched for files matching **/*.posting.yaml, and they'll appear in the sidebar.

If you don't supply a collection directory, the current working directory will be used.

To save the currently open request, press ctrl+s.

Navigation

Posting can be navigated using either mouse or keyboard.

Jump mode

Jump mode is the fastest way to get around in Posting.

Press ctrl+o to enter jump mode.

A key overlay will appear on the screen, allowing you to jump to any widget by pressing the corresponding key.

jumpmode.mov

Tab navigation

tab and shift+tab will move focus between widgets, and j/k will move around within a widget.

Keyboard shortcuts

Important keyboard shortcuts are displayed at the bottom of the screen.

However, there are many other shortcuts available - these will be documented soon.

Command palette

Some functionality in Posting doesn't warrant a dedicated keyboard shortcut (for example, switching to a specific theme), and can instead be accessed via the command palette.

To open the command palette, press ctrl+p.

posting-theme-switching-10jun24.mov

Animation

You can turn off animations by setting the environment variable TEXTUAL_ANIMATIONS=none.

Planned Features

  • Keyboard Friendly: Navigate and iterate on your APIs using simple keyboard shortcuts.
  • File System Storage: Your collections are saved as files, meaning you can easily sync them using version control or your favorite cloud provider.
  • Multiplatform: Run on MacOS, Linux and Windows.
  • Template Variables: Define variables and substitute them into your requests.
  • Powerful Text and JSON Editor: Offers tree-sitter powered syntax highlighting, undo/redo, copy/paste, and more.
  • Runs Over SSH: Send requests from a remote host via SSH.
  • Your Idea Here: Please let me know if you have opinions on the features above, or any other ideas!