because I got bored of customising my CV for every job
1import { AuthModule, AuthorizationModule, UserModule } from "@cv/auth";
2import {
3 BaseModule,
4 DatabaseModule,
5 ResendModule,
6 TemplateModule,
7} from "@cv/system";
8import { ApolloDriver, type ApolloDriverConfig } from "@nestjs/apollo";
9import { Module } from "@nestjs/common";
10import { ConfigModule, ConfigService } from "@nestjs/config";
11import { GraphQLModule } from "@nestjs/graphql";
12import { JwtModule } from "@nestjs/jwt";
13import type { Request, Response } from "express";
14import { AppConfigModule } from "@/config/config.module";
15import { validate } from "@/config/env.validation";
16import { AdminModule } from "./admin/admin.module";
17import { AiCallLogModule } from "./admin/ai-call-log.module";
18import { AppModule as AppModuleComponent } from "./app/app.module";
19import { ApplicationStatusModule } from "./application/application-status/application-status.module";
20import { ApplicationModule } from "./application/application.module";
21import { AuthenticationModule } from "./authentication/authentication.module";
22import { CurrentUserModule } from "./current-user/current-user.module";
23import { CVParserModule } from "./cv-parser/cv-parser.module";
24import { CVTemplateModule } from "./cv-template/cv-template.module";
25import { DataImportModule } from "./data-import/data-import.module";
26import { SeedModule } from "./database/seed/seed.module";
27import { EducationModule } from "./education/education.module";
28import { CompanyModule } from "./job-experience/company/company.module";
29import { EmploymentModule } from "./job-experience/employment/employment.module";
30import { LevelModule } from "./job-experience/level/level.module";
31import { RoleModule } from "./job-experience/role/role.module";
32import { SkillModule } from "./job-experience/skill/skill.module";
33import { OnboardingModule } from "./onboarding/onboarding.module";
34import { OrganizationModule } from "./organization/organization.module";
35import { ProfileModule } from "./profile/profile.module";
36import { UserAiSettingsModule } from "./user-settings/user-ai-settings.module";
37import { ProjectQMessengerModule } from "./messenger/messenger.module";
38import { JobTypeModule } from "./vacancies/job-type/job-type.module";
39import { VacancyModule } from "./vacancies/vacancy.module";
40
41@Module({
42 imports: [
43 ConfigModule.forRoot({
44 isGlobal: true,
45 validate,
46 }),
47 JwtModule.registerAsync({
48 global: true,
49 imports: [ConfigModule],
50 useFactory: async (configService: ConfigService) => {
51 const secret = configService.getOrThrow<string>("JWT_SECRET");
52 return {
53 secret,
54 signOptions: { expiresIn: "24h" },
55 };
56 },
57 inject: [ConfigService],
58 }),
59 GraphQLModule.forRoot<ApolloDriverConfig>({
60 driver: ApolloDriver,
61 autoSchemaFile: true,
62 sortSchema: true,
63 context: ({ req, res }: { req: Request; res: Response }) => ({
64 req,
65 res,
66 }),
67 }),
68 AiCallLogModule,
69 AppConfigModule,
70 BaseModule,
71 DatabaseModule,
72 ResendModule,
73 TemplateModule,
74 AuthModule,
75 AuthorizationModule,
76 AuthenticationModule,
77 CurrentUserModule,
78 UserModule,
79 AppModuleComponent,
80 SkillModule,
81 CompanyModule,
82 RoleModule,
83 LevelModule,
84 EmploymentModule,
85 OrganizationModule,
86 JobTypeModule,
87 VacancyModule,
88 ApplicationStatusModule,
89 ApplicationModule,
90 CVParserModule,
91 CVTemplateModule,
92 DataImportModule,
93 ProjectQMessengerModule,
94 EducationModule,
95 SeedModule,
96 UserAiSettingsModule,
97 OnboardingModule,
98 ProfileModule,
99 AdminModule,
100 ],
101 providers: [],
102})
103export class AppModule {}