A SaaS platform for B2B service management

SaaS applicationConfidential project

A technology service provider needed a place where business customers could manage access, check usage and handle subscriptions. The resulting application brings those tasks together with administrative tools for the people operating the service.

The work covered discovery, account and billing rules, interface and integration design, iterative delivery and maintenance. Changes can be checked in a preview environment before they reach production users.

Who it serves
Business customers using the service and the people responsible for operating and administering it.

Person and business account

A business customer needs access to the technology and the information required for everyday work: the active plan, available capacity, API keys and billing documents. These details originate in different parts of the system and in external services.

The design distinguishes the person signing in from the account that owns the resources. Access rules and operations can therefore refer to the appropriate business account rather than relying only on the current user session.

Scope of responsibility

Atomic Concept is responsible for discovery, domain, interface and API design, development, deployment and application maintenance.

Account access
Passwordless sign-in through an emailed link makes it straightforward to start and return to the dashboard.
Keys and usage
Customers manage API keys and check service usage and the limits associated with their plan.
Billing
Stripe integration handles subscriptions, access to the customer portal and invoices.
Administration
Service operators have tools to inspect accounts, usage and plan settings.
Service account documents, billing records and an access key

Who owns the resources?

The diagram distinguishes the person using the panel from the account associated with resources and billing.

Person
Signs in and performs permitted actions.
Business account
Provides the context for access to resources.
Account resources
Include the plan, capacity, keys and billing documents.
Service administration
Reviews accounts and plan settings.

From decisions to daily operations

The work began by identifying who performs each action, who owns the data and which billing states affect access. Those rules informed the screens, API contracts and integrations needed by customers and administrators.

Capabilities were delivered in stages. Alongside the dashboard, the application handles asynchronous asset operations whose result does not need to be available during a single request. A preview environment with a separate database supports checks before production publication.

Audit and incident diagnosis

A shared API request handler brings authentication, validation and error responses together. It makes it easier to apply consistent rules across operations and check whether a user can access an account-owned resource.

Audit events and server incidents serve different purposes. The former help trace selected actions; the latter are stored in the database for diagnosis. Diagnostic reporting after a response and rate-limited operational emails help communicate problems without multiplying notifications.

Data and ownership
PostgreSQL and Prisma store account, resource and usage data, while application rules determine who may manage them.
Payments
Stripe handles subscription flows and the billing portal, while the application takes plan status into account when granting service access.
Background work
Asset operations are separated from short user requests so work that takes longer can be handled independently.
Diagnostics
Keeping audit records separate from incidents helps select the right information when explaining an action or investigating an error.

Two kinds of record

This comparison explains the different roles of audit records and incident information in operating the platform.

Audit event
Helps trace a selected action.
Incident
Records information needed to diagnose a problem.

Technologies and their use

Next.js, React and TypeScript
Dashboard and application logic.
PostgreSQL and Prisma
Account and operation data.
Stripe
Subscriptions, customer portal and invoices.