VulCode
The integrations of the VulCode client panel: a service-to-service channel through which the panel changes the plan of VulBio pages, suspends, resumes and cancels them, while a nightly reconciliation evens out any lost signal. Plus a Flaem licence delivered with a ready install command, wallet top-ups through Stripe and notifications by email, Discord message and Web Push following the client's preferences. Application errors reach the team channel with personal data scrubbed.
Overview
The VulCode client panel is where a software house's client sees their projects, payments, tickets and the affiliate program. The panel also sells subscriptions to products that live as separate services: VulBio pages, Flaem licences, and next to them Atrium and Lokal. Each of them has to know which plan the client paid for and whether their account is suspended.
Then there is the money coming in through Stripe, and the notifications that have to reach the client where they will actually see them. This page describes how the panel talks to the rest of the world.
The service-to-service channel
The panel tells VulBio about a plan change, a suspension, a resumption and a cancellation of a page. The calls carry a shared secret in the X-Service-Token header, and the channel is closed by default: with no secret configured it is switched off, not left open.
None of these calls may break an operation in the panel. Cancelling a subscription has to succeed even when VulBio is not answering, so an error is logged rather than thrown further. The panel also tells a client who never created a page apart from a wrong service address: it takes only an explicit VulBio answer as "no page", not a bare 404.
Atrium and Lokal expose the same contract: a plan with the end of the paid period, a suspension with a reason and a shared secret in the same header.
Nightly reconciliation
Any single signal can get lost: the service is not answering, the network went down, a deploy is running. Without a safety net, one lost signal means a page running for free forever.
every night it goes through all of its VulBio orders.
the plan, the expiry date including any grace period, a suspension or a cancellation.
the operations are idempotent, so repeating them breaks nothing.
how many orders it checked, how many it cancelled, suspended and synced, and how many failed.
A product switched off in the panel does not exist for VulBio, just as it does not exist for the client: the panel sends it no signal, and reconciliation evens the state out once the product is switched back on.
Flaem licences and payments
A client who buys a Flaem licence gets a ready install command with the licence token in the panel. The token is checked when the team saves it and again when the command is put together, because it ends up in a root shell on the client's machine, and a character outside the allowed alphabet could end the argument early.
The wallet is topped up through Stripe. Renewals use the same wallet, and so does the affiliate program, which pays commissions straight into the balance.
Notifications
Every event worth a notification goes through one place that honours the client's preferences: the categories (projects, tickets, payments, the affiliate program, news and account matters) and the channels they want them on.
Notification channels
| Channel | How it reaches the client |
|---|---|
| An HTML message in the brand's colours | |
| Discord | A direct message from the VulCode bot |
| Web Push | A notification in the browser and in the panel installed on a phone |
| Panel | The notification list in the panel itself |
Web Push accepts only addresses of known browser push services, and urgency depends on the category. A ticket reply, money and account matters wake the phone, a project update can wait until the phone wakes up by itself, and an old announcement is not worth a buzz at all. The team gets panel events on its own Discord channel.
Error reports and team mail
Uncaught application errors go to the team channel on Discord. Reporting never throws into the application and never keeps the process alive, every string is scrubbed of personal data, and the same error never floods the channel: it has one message, edited with an occurrence counter.
The team's mailboxes are watched by a separate bot that reads them over IMAP and reports new mail on Discord, with a direction filter per mailbox, an exclusion list and a history that keeps the same message from arriving twice.
Questions about VulCode
More projects
More work from the same category - see how we tackle similar challenges.
Have a similar project?
Get in touch - a quote is free and comes back within an hour.



