summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-08-10 01:17:48 -0400
committerFrank <[email protected]>2025-08-10 01:17:48 -0400
commit7fd2222976507b3488f4bee945f6fb0f73dde37b (patch)
tree4924b713cb6fe6e9f65436ba3e0a50dad1a4a0c3
parente86adb2ec81e9cbc507ed99fb7e11ed66c5b4c4a (diff)
downloadopencode-7fd2222976507b3488f4bee945f6fb0f73dde37b.tar.gz
opencode-7fd2222976507b3488f4bee945f6fb0f73dde37b.zip
wip: gateway
-rw-r--r--infra/cloud.ts77
1 files changed, 46 insertions, 31 deletions
diff --git a/infra/cloud.ts b/infra/cloud.ts
index 1d93d58da..37fe35a0d 100644
--- a/infra/cloud.ts
+++ b/infra/cloud.ts
@@ -2,36 +2,9 @@ import { WebhookEndpoint } from "pulumi-stripe"
import { domain } from "./stage"
import { web } from "./app"
-export const stripeWebhook = new WebhookEndpoint("StripeWebhook", {
- url: $interpolate`https://api.gateway.${domain}/stripe/webhook`,
- enabledEvents: [
- "checkout.session.async_payment_failed",
- "checkout.session.async_payment_succeeded",
- "checkout.session.completed",
- "checkout.session.expired",
- "customer.created",
- "customer.deleted",
- "customer.updated",
- "customer.discount.created",
- "customer.discount.deleted",
- "customer.discount.updated",
- "customer.source.created",
- "customer.source.deleted",
- "customer.source.expiring",
- "customer.source.updated",
- "customer.subscription.created",
- "customer.subscription.deleted",
- "customer.subscription.paused",
- "customer.subscription.pending_update_applied",
- "customer.subscription.pending_update_expired",
- "customer.subscription.resumed",
- "customer.subscription.trial_will_end",
- "customer.subscription.updated",
- "customer.tax_id.created",
- "customer.tax_id.deleted",
- "customer.tax_id.updated",
- ],
-})
+////////////////
+// DATABASE
+////////////////
const DATABASE_USERNAME = new sst.Secret("DATABASE_USERNAME")
const DATABASE_PASSWORD = new sst.Secret("DATABASE_PASSWORD")
@@ -54,6 +27,10 @@ new sst.x.DevCommand("Studio", {
},
})
+////////////////
+// AUTH
+////////////////
+
const GITHUB_CLIENT_ID_CONSOLE = new sst.Secret("GITHUB_CLIENT_ID_CONSOLE")
const GITHUB_CLIENT_SECRET_CONSOLE = new sst.Secret("GITHUB_CLIENT_SECRET_CONSOLE")
const GOOGLE_CLIENT_ID = new sst.Secret("GOOGLE_CLIENT_ID")
@@ -65,10 +42,44 @@ export const auth = new sst.cloudflare.Worker("AuthApi", {
link: [database, authStorage, GITHUB_CLIENT_ID_CONSOLE, GITHUB_CLIENT_SECRET_CONSOLE, GOOGLE_CLIENT_ID],
})
+////////////////
+// GATEWAY
+////////////////
+
+export const stripeWebhook = new WebhookEndpoint("StripeWebhook", {
+ url: $interpolate`https://api.gateway.${domain}/stripe/webhook`,
+ enabledEvents: [
+ "checkout.session.async_payment_failed",
+ "checkout.session.async_payment_succeeded",
+ "checkout.session.completed",
+ "checkout.session.expired",
+ "customer.created",
+ "customer.deleted",
+ "customer.updated",
+ "customer.discount.created",
+ "customer.discount.deleted",
+ "customer.discount.updated",
+ "customer.source.created",
+ "customer.source.deleted",
+ "customer.source.expiring",
+ "customer.source.updated",
+ "customer.subscription.created",
+ "customer.subscription.deleted",
+ "customer.subscription.paused",
+ "customer.subscription.pending_update_applied",
+ "customer.subscription.pending_update_expired",
+ "customer.subscription.resumed",
+ "customer.subscription.trial_will_end",
+ "customer.subscription.updated",
+ "customer.tax_id.created",
+ "customer.tax_id.deleted",
+ "customer.tax_id.updated",
+ ],
+})
+
const ANTHROPIC_API_KEY = new sst.Secret("ANTHROPIC_API_KEY")
const OPENAI_API_KEY = new sst.Secret("OPENAI_API_KEY")
const ZHIPU_API_KEY = new sst.Secret("ZHIPU_API_KEY")
-
const STRIPE_SECRET_KEY = new sst.Secret("STRIPE_SECRET_KEY")
const AUTH_API_URL = new sst.Linkable("AUTH_API_URL", {
properties: { value: auth.url.apply((url) => url!) },
@@ -91,6 +102,10 @@ export const gateway = new sst.cloudflare.Worker("GatewayApi", {
],
})
+////////////////
+// CONSOLE
+////////////////
+
export const console = new sst.cloudflare.x.StaticSite("Console", {
domain: `console.${domain}`,
path: "cloud/web",