Skip to content

DBOS app that manages DBOS cloud account subscription

License

Notifications You must be signed in to change notification settings

dbos-inc/dbos-account-management

Repository files navigation

DBOS Cloud Account Management

This repository contains code for the DBOS Cloud account management app, which is built with DBOS Transact and Stripe and deployed on DBOS Cloud.

Overview

When a customer clicks "Upgrade to DBOS Pro" on the DBOS website, this app redirects them to a customized Stripe checkout page, where they enter payment information. After they pay, Stripe sends a notification to a webhook endpoint on this app. The webhook retrieves the customer's updated subscription status from Stripe, maps their Stripe customer ID to a DBOS Cloud account ID, and updates their subscription status in DBOS Cloud.

This repo demonstrates a complete production DBOS application, including cloud deployment and CI/CD, written in <500 lines of code. Specifically, it highlights:

  • Use of DBOS workflows, transactions, and communicators for reliable, exactly-once execution
  • Asynchronous and reliable event processing for Stripe Webhook
  • Integration with Stripe Billing and the Stripe Customer Portal
  • Integration with Auth0 for authentication and authorization
  • Using Knex.js for schema management and queries
  • Automated testing and deployment with the DBOS CLI and GitHub Actions
  • Unit tests for individual functions and endpoints with jest.

Code Layout

The main source code files:

  • src/
    • endpoints.ts HTTP endpoints
    • subscription.ts Workflows, transactions, and communicators for subscriptions
    • subscription.test.ts Unit tests
  • dbos-config.yaml DBOS configuration file
  • migrations/ Schema definition in Knex.js format

Files for CI/CD:

  • scripts/
    • dbos_deploy.sh Script that deploys this app to DBOS Cloud
    • subscription_integration_test.py Automated integration test for subscription that runs against staging and prod
  • .github/workflows/ Github Actions for deployment and testing