0e1d2fb0d1
Add a lazy/guarded Stripe client (boots without keys), Invoice/Payout schemas, per-currency Price.stripePriceIds, and a BillingService deriving partner/platform summaries, invoices and a partner-cut payout ledger. Partner and operator billing controllers plus a signature-verified Stripe webhook (Fastify raw body). Frontend: partner and operator billing pages and the operator tenant billing/audit tabs on real data. Gated behind new_billing_engine and BILLING_STRIPE_ENABLED; live money paths stay off until keys are set.
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { Module } from '@nestjs/common'
|
|
import { ConfigModule } from '@nestjs/config'
|
|
import { MongooseModule } from '@nestjs/mongoose'
|
|
import { AuditModule } from './audit/audit.module.js'
|
|
import { AuthModule } from './auth/auth.module.js'
|
|
import { BillingModule } from './billing/billing.module.js'
|
|
import { FlagsModule } from './flags/flags.module.js'
|
|
import { HealthModule } from './health/health.module.js'
|
|
import { IngestModule } from './ingest/ingest.module.js'
|
|
import { MeModule } from './me/me.module.js'
|
|
import { PartnersModule } from './partners/partners.module.js'
|
|
import { PricesModule } from './prices/prices.module.js'
|
|
import { SeedModule } from './seed/seed.module.js'
|
|
import { SubscriptionsModule } from './subscriptions/subscriptions.module.js'
|
|
import { TenantsModule } from './tenants/tenants.module.js'
|
|
import { UsersModule } from './users/users.module.js'
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({ isGlobal: true }),
|
|
MongooseModule.forRoot(
|
|
process.env.MONGODB_URI ?? 'mongodb://localhost:27017/dezky',
|
|
),
|
|
AuthModule,
|
|
AuditModule,
|
|
HealthModule,
|
|
TenantsModule,
|
|
PartnersModule,
|
|
UsersModule,
|
|
MeModule,
|
|
SubscriptionsModule,
|
|
PricesModule,
|
|
FlagsModule,
|
|
BillingModule,
|
|
IngestModule,
|
|
SeedModule,
|
|
],
|
|
})
|
|
export class AppModule {}
|