Skip to content

Commit

Permalink
Merge pull request #1209 from urizennnn/chore/maintenance
Browse files Browse the repository at this point in the history
chore(codebase):updated half the codebase and implemented module alia…
  • Loading branch information
incredible-phoenix246 authored Feb 26, 2025
2 parents 8c41ab3 + bb9bf4c commit ee5322f
Show file tree
Hide file tree
Showing 143 changed files with 703 additions and 670 deletions.
Empty file added .eslint.rc
Empty file.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
package-lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
Expand Down Expand Up @@ -400,3 +401,4 @@ dist
*.dev
*.prod


82 changes: 82 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import eslint from '@eslint/js';
import tseslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import importPlugin from 'eslint-plugin-import';

export default [
eslint.configs.recommended,
{
files: ['**/*.{ts,tsx}'],
plugins: {
'@typescript-eslint': tseslint,
import: importPlugin,
},
languageOptions: {
parser: tsParser,
globals: {
console: 'readonly',
process: 'readonly',
__dirname: 'readonly',
Buffer: 'readonly',
describe: 'readonly',
it: 'readonly',
beforeEach: 'readonly',
afterEach: 'readonly',
beforeAll: 'readonly',
afterAll: 'readonly',
expect: 'readonly',
jest: 'readonly',
fetch: 'readonly',
Express: 'readonly',
BufferEncoding: 'readonly',
},
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 13,
sourceType: 'module',
project: ['./tsconfig.json'],
},
},
rules: {
'@typescript-eslint/no-floating-promises': 'warn',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-empty-interface': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'import/no-restricted-paths': [
'error',
{
zones: [
{
target: './src/**/domain/**.*ts',
from: './src/**/infra/**/*.ts',
},
{
target: './src/**/domain/**.*ts',
from: './src/**/usecases/**/*.ts',
},
{
target: './src/**/domain/**.*ts',
from: './src/**/app/**/*.ts',
},
],
},
],
},
},
{
ignores: ['build/', 'public/', '/docs'],
},
{
files: ['**/*.{js,ts,tsx,jsx}'],
settings: {
'import/resolver': {
typescript: {},
},
},
},
];
136 changes: 80 additions & 56 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "hng_boilerplate_nestjs",
"type": "module",
"version": "0.0.1",
"description": "",
"author": "",
Expand Down Expand Up @@ -33,90 +34,91 @@
"postinstall": "npm install --platform=linux --arch=x64 sharp"
},
"dependencies": {
"@css-inline/css-inline": "^0.14.1",
"@css-inline/css-inline-linux-x64-gnu": "^0.14.1",
"@faker-js/faker": "^8.4.1",
"@google/generative-ai": "^0.17.0",
"@nestjs-modules/mailer": "^2.0.2",
"@nestjs/axios": "^3.0.2",
"@nestjs/bull": "^10.2.0",
"@nestjs/config": "^3.2.3",
"@nestjs/core": "^10.0.0",
"@nestjs/jwt": "^10.2.0",
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^10.3.10",
"@nestjs/serve-static": "^4.0.2",
"@nestjs/swagger": "^7.4.0",
"@nestjs/typeorm": "^10.0.2",
"@types/nodemailer": "^6.4.15",
"@css-inline/css-inline": "^0.14.3",
"@css-inline/css-inline-linux-x64-gnu": "^0.14.3",
"@faker-js/faker": "^9.5.0",
"@google/generative-ai": "^0.22.0",
"@nestjs/axios": "^4.0.0",
"@nestjs/bull": "^11.0.2",
"@nestjs/config": "^4.0.0",
"@nestjs/core": "^11.0.10",
"@nestjs/jwt": "^11.0.0",
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-express": "^11.0.10",
"@nestjs/serve-static": "^5.0.3",
"@nestjs/swagger": "^11.0.5",
"@nestjs/typeorm": "^11.0.0",
"@types/nodemailer": "^6.4.17",
"@types/speakeasy": "^2.0.10",
"@vitalets/google-translate-api": "^9.2.0",
"@vitalets/google-translate-api": "^9.2.1",
"bcrypt": "^5.1.1",
"bcryptjs": "^2.4.3",
"bull": "^4.16.0",
"bcryptjs": "^3.0.2",
"bull": "^4.16.5",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"csv-writer": "^1.6.0",
"date-fns": "^3.6.0",
"file-type-mime": "^0.4.3",
"google-auth-library": "^9.13.0",
"date-fns": "^4.1.0",
"file-type-mime": "^0.4.6",
"google-auth-library": "^9.15.1",
"handlebars": "^4.7.8",
"html-validator": "^6.0.1",
"ioredis": "^5.4.1",
"joi": "^17.6.0",
"ioredis": "^5.5.0",
"joi": "^17.13.3",
"module-alias": "^2.2.3",
"multer": "^1.4.5-lts.1",
"nestjs-form-data": "^1.9.91",
"nestjs-pino": "^4.1.0",
"nodemailer": "^6.9.14",
"nestjs-form-data": "^1.9.93",
"nestjs-pino": "^4.3.1",
"nodemailer": "^6.10.0",
"passport": "^0.7.0",
"passport-google-oauth20": "^2.0.0",
"passport-jwt": "^4.0.1",
"pg": "^8.12.0",
"pg": "^8.13.3",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1",
"rxjs": "^7.8.2",
"sharp": "^0.33.5",
"speakeasy": "^2.0.0",
"supertest": "^7.0.0",
"typeorm": "^0.3.20",
"typeorm-extension": "^3.5.1",
"typeorm-extension": "^3.6.3",
"types-joi": "^2.1.0",
"uuid": "^10.0.0",
"uuid": "^11.1.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@commitlint/cli": "^19.7.1",
"@commitlint/config-conventional": "^19.7.1",
"@nestjs-modules/mailer": "^2.0.2",
"@nestjs/cli": "^10.4.2",
"@nestjs/common": "^10.3.10",
"@nestjs/schematics": "^10.1.3",
"@nestjs/testing": "^10.3.10",
"@nestjs/cli": "^11.0.5",
"@nestjs/common": "^11.0.10",
"@nestjs/schematics": "^11.0.1",
"@nestjs/testing": "^11.0.10",
"@types/bcrypt": "^5.0.2",
"@types/express": "^4.17.17",
"@types/jest": "^29.5.2",
"@types/multer": "^1.4.11",
"@types/node": "^20.3.1",
"@types/passport-google-oauth2": "^0.1.8",
"@types/express": "^5.0.0",
"@types/jest": "^29.5.14",
"@types/multer": "^1.4.12",
"@types/node": "^22.13.5",
"@types/passport-google-oauth2": "^0.1.10",
"@types/passport-jwt": "^4.0.1",
"@types/speakeasy": "^2.0.10",
"@types/supertest": "^6.0.0",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"eslint": "^8.42.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-prettier": "^5.0.0",
"husky": "^9.0.11",
"@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^8.25.0",
"@typescript-eslint/parser": "^8.25.0",
"eslint": "^9.21.0",
"eslint-config-prettier": "^10.0.2",
"eslint-import-resolver-typescript": "^3.8.3",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-prettier": "^5.2.3",
"husky": "^9.1.7",
"jest": "^29.7.0",
"lint-staged": "^15.2.5",
"prettier": "^3.0.0",
"lint-staged": "^15.4.3",
"prettier": "^3.5.2",
"source-map-support": "^0.5.21",
"ts-jest": "^29.2.3",
"ts-loader": "^9.4.3",
"ts-jest": "^29.2.6",
"ts-loader": "^9.5.2",
"ts-node": "^10.9.2",
"ts-node-dev": "^2.0.0",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.5.4"
"typescript": "^5.7.3"
},
"jest": {
"moduleFileExtensions": [
Expand All @@ -133,9 +135,31 @@
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
"testEnvironment": "node",
"moduleNameMapper": {
"^@database/(.*)$": "<rootDir>/database/$1",
"^@entities/(.*)$": "<rootDir>/entities/$1",
"^@guards/(.*)$": "<rootDir>/guards/$1",
"^@modules/(.*)$": "<rootDir>/modules/$1",
"^@tests/(.*)$": "<rootDir>/run-tests/$1",
"^@shared/(.*)$": "<rootDir>/shared/$1",
"^@utils/(.*)$": "<rootDir>/utils/$1",
"^@config/(.*)$": "<rootDir>/../config/$1",
"^@src-uploads/(.*)$": "<rootDir>/uploads/$1"
}
},
"lint-staged": {
"**/*": "prettier --write --ignore-unknown"
},
"_moduleAliases": {
"@database": "./src/database",
"@entities": "./src/entities",
"@guards": "./src/guards",
"@modules": "./src/modules",
"@tests": "./src/run-tests/",
"@shared": "./src/shared",
"@utils": "./src/utils",
"@config": "./config",
"@src-uploads": "./src/uploads"
}
}
82 changes: 41 additions & 41 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,49 +5,49 @@ import { Module, ValidationPipe } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { APP_PIPE } from '@nestjs/core';
import { TypeOrmModule } from '@nestjs/typeorm';
import * as Joi from 'joi';
import { object, string, number } from 'joi';
import { LoggerModule } from 'nestjs-pino';
import authConfig from '../config/auth.config';
import serverConfig from '../config/server.config';
import dataSource from './database/data-source';
import { SeedingModule } from './database/seeding/seeding.module';
import { AuthGuard } from './guards/auth.guard';
import authConfig from '@config/auth.config';
import serverConfig from '@config/server.config';
import dataSource from '@database/data-source';
import { SeedingModule } from '@database/seeding/seeding.module';
import { AuthGuard } from '@guards/auth.guard';
import HealthController from './health.controller';
import { AuthModule } from './modules/auth/auth.module';
import { BillingPlanModule } from './modules/billing-plans/billing-plan.module';
import { BlogModule } from './modules/blogs/blogs.module';
import { CommentsModule } from './modules/comments/comments.module';
import { ContactUsModule } from './modules/contact-us/contact-us.module';
import { RevenueModule } from './modules/dashboard/dashboard.module';
import { EmailModule } from './modules/email/email.module';
import { FaqModule } from './modules/faq/faq.module';
import { FlutterwaveModule } from './modules/flutterwave/flutterwave.module';
import { HelpCenterModule } from './modules/help-center/help-center.module';
import { InviteModule } from './modules/invite/invite.module';
import { JobsModule } from './modules/jobs/jobs.module';
import { NewsletterSubscriptionModule } from './modules/newsletter-subscription/newsletter-subscription.module';
import { NotificationSettingsModule } from './modules/notification-settings/notification-settings.module';
import { NotificationsModule } from './modules/notifications/notifications.module';
import { OrganisationsModule } from './modules/organisations/organisations.module';
import { OtpModule } from './modules/otp/otp.module';
import { OrganisationPermissionsModule } from './modules/permissions/permissions.module';
import { ProductsModule } from './modules/products/products.module';
import { ProfileModule } from './modules/profile/profile.module';
import { RoleModule } from './modules/role/role.module';
import { SqueezeModule } from './modules/squeeze/squeeze.module';
import { SubscriptionsModule } from './modules/subscriptions/subscriptions.module';
import { TeamsModule } from './modules/teams/teams.module';
import { TestimonialsModule } from './modules/testimonials/testimonials.module';
import { TimezonesModule } from './modules/timezones/timezones.module';
import { UserModule } from './modules/user/user.module';
import { WaitlistModule } from './modules/waitlist/waitlist.module';
import { AuthModule } from '@modules/auth/auth.module';
import { BillingPlanModule } from '@modules/billing-plans/billing-plan.module';
import { BlogModule } from '@modules/blogs/blogs.module';
import { CommentsModule } from '@modules/comments/comments.module';
import { ContactUsModule } from '@modules/contact-us/contact-us.module';
import { RevenueModule } from '@modules/dashboard/dashboard.module';
import { EmailModule } from '@modules/email/email.module';
import { FaqModule } from '@modules/faq/faq.module';
import { FlutterwaveModule } from '@modules/flutterwave/flutterwave.module';
import { HelpCenterModule } from '@modules/help-center/help-center.module';
import { InviteModule } from '@modules/invite/invite.module';
import { JobsModule } from '@modules/jobs/jobs.module';
import { NewsletterSubscriptionModule } from '@modules/newsletter-subscription/newsletter-subscription.module';
import { NotificationSettingsModule } from '@modules/notification-settings/notification-settings.module';
import { NotificationsModule } from '@modules/notifications/notifications.module';
import { OrganisationsModule } from '@modules/organisations/OrganisationsModule';
import { OtpModule } from '@modules/otp/otp.module';
import { OrganisationPermissionsModule } from '@modules/permissions/permissions.module';
import { ProductsModule } from '@modules/products/products.module';
import { ProfileModule } from '@modules/profile/profile.module';
import { RoleModule } from '@modules/role/role.module';
import { SqueezeModule } from '@modules/squeeze/squeeze.module';
import { SubscriptionsModule } from '@modules/subscriptions/subscriptions.module';
import { TeamsModule } from '@modules/teams/teams.module';
import { TestimonialsModule } from '@modules/testimonials/testimonials.module';
import { TimezonesModule } from '@modules/timezones/timezones.module';
import { UserModule } from '@modules/user/user.module';
import { WaitlistModule } from '@modules/waitlist/waitlist.module';
import ProbeController from './probe.controller';
import { RunTestsModule } from './run-tests/run-tests.module';
import { BlogCategoryModule } from './modules/blog-category/blog-category.module';
import { BlogCategoryModule } from '@modules/blog-category/blog-category.module';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
import { LanguageGuard } from './guards/language.guard';
import { ApiStatusModule } from './modules/api-status/api-status.module';
import { LanguageGuard } from '@guards/language.guard';
import { ApiStatusModule } from '@modules/api-status/api-status.module';

@Module({
providers: [
Expand Down Expand Up @@ -83,10 +83,10 @@ import { ApiStatusModule } from './modules/api-status/api-status.module';
envFilePath: ['.env.development.local', `.env.${process.env.PROFILE}`],
isGlobal: true,
load: [serverConfig, authConfig],
validationSchema: Joi.object({
NODE_ENV: Joi.string().valid('development', 'production', 'test', 'provision').required(),
PROFILE: Joi.string().valid('local', 'development', 'production', 'ci', 'testing', 'staging').required(),
PORT: Joi.number().required(),
validationSchema: object({
NODE_ENV: string().valid('development', 'production', 'test', 'provision').required(),
PROFILE: string().valid('local', 'development', 'production', 'ci', 'testing', 'staging').required(),
PORT: number().required(),
}),
}),
LoggerModule.forRoot(),
Expand Down
2 changes: 1 addition & 1 deletion src/database/seeding/seeding.controller.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Body, Controller, Get, Post } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { skipAuth } from '../../helpers/skipAuth';
import { skipAuth } from '@shared/helpers/skipAuth';
import { CreateAdminDto } from './dto/admin.dto';
import { CreateAdminResponseDto } from './dto/create-admin-response.dto';
import { SeedingService } from './seeding.service';
Expand Down
Loading

0 comments on commit ee5322f

Please sign in to comment.