managarten/apps-archived/maerchenzauber/apps/backend/src/app.module.ts
Till-JS 61d181fbc2 chore: archive inactive projects to apps-archived/
Move inactive projects out of active workspace:
- bauntown (community website)
- maerchenzauber (AI story generation)
- memoro (voice memo app)
- news (news aggregation)
- nutriphi (nutrition tracking)
- reader (reading app)
- uload (URL shortener)
- wisekeep (AI wisdom extraction)

Update CLAUDE.md documentation:
- Add presi to active projects
- Document archived projects section
- Update workspace configuration

Archived apps can be re-activated by moving back to apps/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 07:03:59 +01:00

72 lines
2.4 KiB
TypeScript

import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { ClsModule } from 'nestjs-cls';
import { ManaCoreModule } from '@mana-core/nestjs-integration';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import appConfig from './config/app.config';
import { validationSchema } from './config/validation.schema';
import { CharacterModule } from './character/character.module';
import { StoryModule } from './story/story.module';
import { CoreModule } from './core/core.module';
import { SupabaseModule } from './supabase/supabase.module';
import { SettingsModule } from './settings/settings.module';
import { HealthModule } from './health/health.module';
import { CommonModule } from './common/common.module';
import { RequestContextInterceptor } from './common/interceptors/request-context.interceptor';
import { CreatorsModule } from './creators/creators.module';
import { FeedbackModule } from './feedback/feedback.module';
@Module({
imports: [
// CLS Module must be first to initialize the context storage
ClsModule.forRoot({
global: true,
middleware: {
mount: true,
generateId: true,
},
}),
ConfigModule.forRoot({
isGlobal: true,
load: [appConfig],
validationSchema,
}),
CommonModule, // Add CommonModule early since it's global
// Mana Core Module for authentication
ManaCoreModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
manaServiceUrl: 'https://mana-core-middleware-111768794939.europe-west3.run.app',
appId: '8d2f5ddb-e251-4b3b-8802-84022a7ac77f',
serviceKey: configService.get<string>('MANA_SUPABASE_SECRET_KEY', ''),
signupRedirectUrl: configService.get<string>('SIGNUP_REDIRECT_URL', ''),
debug: configService.get('NODE_ENV') === 'development',
}),
inject: [ConfigService],
}),
CoreModule,
SupabaseModule,
CharacterModule,
StoryModule,
SettingsModule,
HealthModule,
CreatorsModule,
FeedbackModule,
],
controllers: [AppController],
providers: [
AppService,
// Register RequestContextInterceptor as a global interceptor
{
provide: APP_INTERCEPTOR,
useClass: RequestContextInterceptor,
},
],
})
export class AppModule implements NestModule {
configure(_consumer: MiddlewareConsumer) {
// Middleware configuration can be added here if needed
}
}