⚡ Sangsakala Proxy 🏠 Home
Skip to content
View ratomirjovanovic's full-sized avatar
🤞
I may be slow to respond.
🤞
I may be slow to respond.

Block or report ratomirjovanovic

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ratomirjovanovic/README.md
Ratomir Jovanovic. Payments and security engineering, founder of Payshen. 18 years across SaaS, fintech and payments.

LinkedIn X: @heyratomir

I have spent 18 years building software across SaaS, fintech and payments, much of it in regulated, audited and security-sensitive environments. Today most of my open-source time goes into PandaWard, a local application security assessment engine that keeps evidence for every finding and says plainly what it did not test. Alongside it I build payment infrastructure at Payshen, maintain tooling for payment developers and review payment, webhook and auth code in other projects.

Now

Venture Role and focus
PandaWard Maintainer, main open-source project. Local, evidence-based application security assessment as a Go CLI and a Claude Code plugin.
Payshen Founder and Managing Director. Payment orchestration: every provider through one integration, each payment routed to the provider most likely to approve it, retried elsewhere only when that is safe, with the reason recorded.
PandaPayLens Maintainer. Open-source, local-first payment error decoder and transaction timeline visualizer.
afend Founder. Guided ISO/IEC 27001:2022 readiness, from risk register to an auditor-ready handoff.
Nanotesting Founder. Automated security assessment for websites, APIs and repositories.
SodaSoft Founder. Venture studio for software products: design, engineering and launch.

Open source

Application security assessment for your own repositories that also tells you what it did not test. Most scanners print alerts and stop; PandaWard keeps a ledger of every control it could check, how it checked it and the redacted evidence, and lists every control it could not decide. Passive by default, network tests only after a person approves the scope. Formerly PenSec, renamed in 0.2.0.

PandaWard findings explorer for a deliberately vulnerable sample app: confirmed and suspected findings with severity, file and control
  • Honest coverage: only PASS and FAIL are decisive; blocked, unsupported or suspected controls never count as secure.
  • Evidence, not opinions: each finding links to a redacted, SHA-256 addressed evidence record and is fingerprinted across runs, so a fix counts only when the check runs again.
  • No AI-confirmed findings: review agents can only record hypotheses, and the engine reads and redacts the cited lines itself.
  • Wide static coverage: secrets, injection sinks, CI/CD, containers, Terraform, Android and iOS manifests, webhooks, MCP and LLM output reaching exec sinks.
  • Reports and CI: HTML, Markdown, JSON, SARIF 2.1.0 and CSV, with a --fail-on gate. Release binaries are reproducible, with checksums, an SBOM and signed provenance.
/plugin marketplace add ratomirjovanovic/pandaward
/plugin install pandaward@pandaward            # macOS and Linux
/plugin install pandaward-windows@pandaward    # Windows
/pandaward:scan

Live demo · Website · Docs · Quick start · Releases · Roadmap

Paste an API response, webhook or postback and see what the provider reported, what the code means, which events belong together and what looks wrong. Nothing leaves the browser.

Play the 60 second PandaPayLens demo video: a synthetic Adyen log with two authorizations for one order is analyzed and a possible double charge is flagged.
  • Deterministic analysis: structural provider detection, documented error catalogs, correlation by explicit identifiers and explainable diagnostic rules.
  • Wide coverage: card processors, wallets, pay-by-bank, crypto and high-risk billing providers, each with an honest capability manifest.
  • Privacy by design: sensitive data redacted from everything shown or exported, identifiers masked, strict Content Security Policy, no server-side processing.
  • Three ways to run it: a static demo, an offline CLI and a Next.js app with a passkey-protected admin area.

Live demo · Demo video (1 min) · Docs · Releases · Roadmap · Good first issues

Payshen SDKs

Official client libraries for the Payshen payment orchestration API: payments, captures, voids, refunds, events and webhook verification. Published and maintained on four registries.

npm @payshen/sdk PyPI payshen Packagist payshen/payshen-php WordPress.org plugin

PHP · Python · WooCommerce

Code reviews in other projects

Recent public reviews, mostly payment, webhook and security changes. The last column shows what GitHub recorded after the review: whether the author pushed changes, whether I approved, and whether the pull request was merged.

20 pull requests in 16 projects · 9 revised by their authors after the review · 7 merged

Project Pull request reviewed Since the review
better-auth/better-auth #12049 fix(account): share and guard concurrent provider token refreshes Revised after review
better-auth/better-auth #12014 fix(stripe): refetch subscription in subscription webhooks Closed
DataDog/dd-trace-js #10932 fix(appsec): wrap shared Stripe webhooks methods only once Closed
paypal/paypal-js #1100 fix(paypal-js): only reuse a pending v6 script for the same namespace Revised after review
standard-webhooks/standard-webhooks #348 Sign binary payloads byte for byte (JavaScript, Python) Merged after revision
modelcontextprotocol/go-sdk #1451 auth/extauth: send resource in client credentials token requests Merged after revision
juspay/hyperswitch-web #1829 fix: preserve 3DS messages before closing fullscreen frames Merged
medusajs/medusa #17538 fix(medusa): reject webhooks for nonexistent providers Merged
payloadcms/payload #19024 fix(plugin-ecommerce): drop cart items from Stripe payment intent metadata Closed
Adyen/adyen-web #4273 Fix/prevent duplicate 3DS2 challenge completion Merged after revision
anthropics/anthropic-sdk-typescript #1284 fix(client): keep the abort listener while the Response is held Open
mark3labs/mcp-go #1123 fix(oauth): refresh an access token shortly before it expires Open

Issues raised in other projects

Problems I found while integrating or reviewing other projects, reported upstream.

Project Issue Status
go-pay/gopay #558 Is there a private way to report a security issue? Open
payloadcms/payload #19055 plugin-ecommerce: restore the Stripe cart drift check with a metadata digest,... Open
getlago/lago #842 [BUG]: No private way to report a security issue on GitHub Open
svix/svix-webhooks #2763 php: Webhook accepts an empty or non-base64 secret and verifies with an empty... Fixed
Adyen/adyen-node-api-library #1816 [Bug]: HmacValidator accepts a malformed HMAC key as an empty key Open
golang/go #82658 x/oauth2: DeviceAccessToken panics on a negative or very large interval Open
medusajs/medusa #17544 [Bug]: Payment providers removed from config are never disabled in payment_pr... Fixed
supabase/ssr #209 tsconfig.json: outDir without rootDir triggers TS6059 / migration warning whe... Fixed

Contributions to other projects

Fixes I wrote for other projects that their maintainers merged.

Project Pull request Merged
Adyen/adyen-node-api-library #1817 fix(hmac): reject malformed HMAC keys and compare signatures exactly 2026-11-03
Adyen/adyen-dotnet-api-library #1899 fix(hmac): reject an empty HMAC key 2026-11-03
Adyen/adyen-java-api-library #2100 fix(hmac): don't include the HMAC key in the invalid key exception 2026-11-03
svix/svix-webhooks #2768 php: fix Webhook::fromRaw 2026-10-30
svix/svix-webhooks #2765 php: reject an empty or non-base64 webhook secret 2026-10-29

The Adyen fixes follow #1816, an HMAC validation issue I reported and Adyen confirmed. Related fixes for the PHP, Python, Go and Ruby libraries are in review.

Project facts

PandaWard at a glance: latest release, control domains, report formats and license.

This card and the review list above are generated daily from public GitHub data. My contribution activity is GitHub's own overview, below this README.

What I work on

Area Focus
Payments and fintech PSP integrations, orchestration and routing, decline and error semantics, webhooks, settlement and reconciliation
Application security Static analysis and evidence-based assessment, secrets handling, CI/CD and supply chain, webhook and auth review
GRC ISO/IEC 27001 readiness, risk and supplier management, control evidence, secure design
Engineering TypeScript, Go and Python services, API clients and SDKs, testing and CI, documentation that matches the code

Toolbox

Area Tools
Languages Go, TypeScript, JavaScript, Python, PHP, Dart, Kotlin
Frameworks Node.js, React, Next.js, Tailwind CSS, Laravel, Flutter
Data and cloud PostgreSQL, Vercel, AWS, Google Cloud Neon serverless Postgres
Delivery Docker, GitHub Actions, Git, Bash

Pinned Loading

  1. supabase/ssr supabase/ssr Public

    Supabase clients for use in server-side rendering frameworks.

    TypeScript 213 35

  2. PandaPayLens PandaPayLens Public

    Source-available payment error decoder and transaction flow visualizer for Stripe, Adyen, payabl. and more.

    TypeScript 54

  3. pandaward pandaward Public

    Local, evidence-based application security assessment engine and Claude Code plugin

    Go 81