Initial commit: HOA Financial Intelligence Platform MVP
Multi-tenant financial management platform for homeowner associations featuring: - NestJS backend with 16 modules (auth, accounts, transactions, budgets, units, invoices, payments, vendors, reserves, investments, capital projects, reports) - React + Mantine frontend with dashboard, CRUD pages, and financial reports - Schema-per-tenant PostgreSQL isolation with JWT-based tenant resolution - Docker Compose infrastructure (nginx, backend, frontend, postgres, redis) - Comprehensive seed data for Sunrise Valley HOA demo - 39 API endpoints with Swagger documentation - Double-entry bookkeeping with journal entries - Budget vs actual reporting and Sankey cash flow visualization Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
62
backend/src/app.module.ts
Normal file
62
backend/src/app.module.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { Module, MiddlewareConsumer, NestModule } from '@nestjs/common';
|
||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { AppController } from './app.controller';
|
||||
import { DatabaseModule } from './database/database.module';
|
||||
import { TenantMiddleware } from './database/tenant.middleware';
|
||||
import { AuthModule } from './modules/auth/auth.module';
|
||||
import { OrganizationsModule } from './modules/organizations/organizations.module';
|
||||
import { UsersModule } from './modules/users/users.module';
|
||||
import { AccountsModule } from './modules/accounts/accounts.module';
|
||||
import { FiscalPeriodsModule } from './modules/fiscal-periods/fiscal-periods.module';
|
||||
import { JournalEntriesModule } from './modules/journal-entries/journal-entries.module';
|
||||
import { BudgetsModule } from './modules/budgets/budgets.module';
|
||||
import { UnitsModule } from './modules/units/units.module';
|
||||
import { InvoicesModule } from './modules/invoices/invoices.module';
|
||||
import { PaymentsModule } from './modules/payments/payments.module';
|
||||
import { VendorsModule } from './modules/vendors/vendors.module';
|
||||
import { ReserveComponentsModule } from './modules/reserve-components/reserve-components.module';
|
||||
import { InvestmentsModule } from './modules/investments/investments.module';
|
||||
import { CapitalProjectsModule } from './modules/capital-projects/capital-projects.module';
|
||||
import { ReportsModule } from './modules/reports/reports.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
}),
|
||||
TypeOrmModule.forRootAsync({
|
||||
imports: [ConfigModule],
|
||||
inject: [ConfigService],
|
||||
useFactory: (configService: ConfigService) => ({
|
||||
type: 'postgres',
|
||||
url: configService.get<string>('DATABASE_URL'),
|
||||
autoLoadEntities: true,
|
||||
synchronize: false,
|
||||
logging: false,
|
||||
}),
|
||||
}),
|
||||
DatabaseModule,
|
||||
AuthModule,
|
||||
OrganizationsModule,
|
||||
UsersModule,
|
||||
AccountsModule,
|
||||
FiscalPeriodsModule,
|
||||
JournalEntriesModule,
|
||||
BudgetsModule,
|
||||
UnitsModule,
|
||||
InvoicesModule,
|
||||
PaymentsModule,
|
||||
VendorsModule,
|
||||
ReserveComponentsModule,
|
||||
InvestmentsModule,
|
||||
CapitalProjectsModule,
|
||||
ReportsModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
})
|
||||
export class AppModule implements NestModule {
|
||||
configure(consumer: MiddlewareConsumer) {
|
||||
consumer.apply(TenantMiddleware).forRoutes('*');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user