Skip to content

Latest commit

 

History

History
32 lines (25 loc) · 2.14 KB

README.md

File metadata and controls

32 lines (25 loc) · 2.14 KB

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