Skip to content

steveire/qashmere

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qashmere

Qashmere is an experimental Qt 6 desktop application for exploring and learning Stripe’s REST APIs and event model.

Qashmere

It was built as a developer tool to better understand how Stripe’s request/response APIs interact with asynchronous events, and to evaluate the ergonomics of Qt 6’s newer REST-related APIs in a real-world scenario.

⚠️ Status: Experimental / learning project Qashmere is not intended for production use.


Motivation

Stripe’s API is more than a collection of REST endpoints. Many Stripe objects (such as Payment Intents) evolve over time and emit events when their state changes. Understanding how REST calls and events relate to each other is key to building correct integrations.

While tools like Postman and Bruno are excellent for crafting REST requests and workflows, they do not model Stripe’s object lifecycle or event-driven behavior particularly well.

Qashmere was created to:

  • Explore Stripe’s REST APIs and object model
  • Observe how REST requests and webhook events relate to each other
  • Experiment with Qt 6’s REST APIs, networking, and concurrency primitives
  • Build intuition by visualizing requests, responses, and events together

Features

  • Browse API collection
  • Browse and edit parameters of REST endpoints
  • Browse and edit query data for request
  • Browse and edit POST data for request
  • Browse and edit headers for request
  • Browse events sent by Stripe
  • Verify cryptographic signature of all Stripe events
  • Display all output from stripe listen process
  • Store and view all requests, responses and events in the session
  • Stripe hierarchical parameters presented as tree
  • UI indication of required parameters

Required Parameters

  • Configurable workflows

Configurable workflows


Architecture Overview

At a high level, Qashmere consists of:

  • Qt Widgets UI for displaying REST APIs, building requests and displaying responses and events
  • Qt REST APIs for making Stripe REST calls
  • QHttpServer to receive webhook events relayed from the Stripe CLI

Stripe events are delivered via the Stripe CLI, which maintains a WebSocket connection to Stripe and forwards events to a local HTTP server. This avoids the need for a publicly reachable webhook endpoint.

Qashmere architecture overview


Stripe Sandbox Only

Qashmere only works with Stripe sandbox (test mode) environments.

No real payments are processed, and no live Stripe credentials should be used. The application is intended purely as a learning and development aid.


Goals (and Non-Goals)

Goals

  • Learn Stripe’s REST and event model
  • Experiment with Qt 6 REST APIs in practice
  • Explore promise-like patterns using QFuture
  • Build a developer-oriented exploratory tool

Non-Goals

  • Production readiness
  • Complete Stripe API coverage
  • Stable or polished UX
  • Long-term API compatibility guarantees

Blog Post

This project accompanies a blog post describing the design decisions, experiments, and lessons learned while building Qashmere.

If you’re interested in the why as much as the how, the post provides much more context.

About

Qt6 desktop client for Stripe REST APIs and event notification

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors