Inspiration
Desktop app for CloudSlash - v2.6. CloudSlash is a desktop application that turns a cloud account into a statement you can read. It runs entirely on your machine: no agents, no keys to paste, nothing uploaded.
What it does
Cloud dashboards show you a total. Almost none show you a cause. The tooling that does lives behind a sales call or a service account pointed at production, and I did not want the second one aimed at my own account.
How I built it
The interface is hand-written. TypeScript and plain DOM, a CSS token layer, charts drawn as SVG, no component framework anywhere. It is styled as a printed ledger rather than a dashboard: ruled hairlines and dot leaders instead of cards and shadows, tabular figures
Under it, a Go engine. Scanners fan out across a worker pool, findings land in a graph, heuristics and optional CEL policy rules decide what counts as waste, and exporters render the statement, the dashboard, the Terraform-correlated view and the remediation plan.
How it uses RevenueCat
RevenueCat handles support end to end. The catalog is products, packages and the cloudslash_pro entitlement; the paywall was generated in the Paywall AI Editor and is attached to the offering the app pins, with a targeting rule serving it. Checkout is RevenueCat Web Billing backed by Paddle, using the purchases-js SDK.
Support is framed as a donation, and nothing in the app is gated — every report, the remediation plan and the rollback script are free. The entitlement exists so the flow is genuine, not to hold a feature back. Patreon and Open Collective sit alongside the plans as a second, gateway-free path.
Challenges I ran into
Throwing the first interface away. The first version used a native GUI toolkit, and the charts rendered as ASCII blocks inside code fences. It looked like a terminal pretending to be an app. Rebuilding it as a web shell cost days and is the only reason the result looks deliberate.
Consent, properly. Reading ~/.aws tells tells you who someone works for and which environments they touch, so the app asks before it looks and refuses a live scan until it has an answer. Demo mode needs no permission, because it reads nothing.
What I learned
Mostly I learned that restraint is a feature. The hardest part was not adding things.
What's next for CloudSlash - GUI
Made for Shipaton. CloudSlash Desktop app.
Built With
- aws-sdk-for-go
- css
- github-actions
- go
- gtk4
- opentelemetry
- paddle
- puppeteer
- revenuecat
- svg
- typescript
- vite
- wails
- webkitgtk
Log in or sign up for Devpost to join the conversation.