Files
MinglarBackendNestJS/serverless.yml

248 lines
6.7 KiB
YAML

service: minglarDev
provider:
name: aws
runtime: nodejs20.x
region: ap-south-1
versionFunctions: false
apiGateway:
binaryMediaTypes:
- "*/*"
minimumCompressionSize: 0
environment:
DATABASE_URL: ${env:DATABASE_URL}
DB_USERNAME: ${env:DB_USERNAME}
DB_PASSWORD: ${env:DB_PASSWORD}
DB_DATABASE_NAME: ${env:DB_DATABASE_NAME}
DB_HOSTNAME: ${env:DB_HOSTNAME}
DB_PORT: ${env:DB_PORT}
BY_PASS_EMAIL: ${env:BY_PASS_EMAIL}
BYPASS_OTP: ${env:BYPASS_OTP}
BREVO_EMAIL_API_KEY: ${env:BREVO_EMAIL_API_KEY}
BREVO_API_BASEURL: ${env:BREVO_API_BASEURL}
BREVO_FROM_EMAIL: ${env:BREVO_FROM_EMAIL}
BREVO_SMTP_HOST: ${env:BREVO_SMTP_HOST}
BREVO_SMTP_PORT: ${env:BREVO_SMTP_PORT}
BREVO_SMTP_USER: ${env:BREVO_SMTP_USER}
BREVO_SMTP_PASS: ${env:BREVO_SMTP_PASS}
REFRESH_TOKEN_SECRET: ${env:REFRESH_TOKEN_SECRET}
JWT_SECRET: ${env:JWT_SECRET}
SALT_ROUNDS: ${env:SALT_ROUNDS}
NODE_ENV: ${env:NODE_ENV}
S3_BUCKET_NAME: ${env:S3_BUCKET_NAME}
iam:
role:
statements:
- Effect: Allow
Action:
- s3:PutObject
- s3:GetObject
- s3:DeleteObject
Resource: "arn:aws:s3:::${env:S3_BUCKET_NAME}/*"
# ------------------------------------------------------------
# ESBUILD — bundles AWS SDK v3 and removes node_modules bloat
# ------------------------------------------------------------
custom:
esbuild:
bundle: true
minify: true
sourcemap: false
target: node20
platform: node
concurrency: 10
# ❗ Prisma stays inside functions, so exclude only Prisma engine structure
exclude:
- ".prisma" # keeps native engine files untouched
- "@aws-sdk" # prevents double bundling
# ------------------------------------------------------------
# GLOBAL PACKAGE SETTINGS
# ------------------------------------------------------------
package:
individually: true
patterns:
- "!node_modules/aws-sdk/**" # AWS SDK v2 NOT needed in Node 20
- "!**/*.test.ts"
- "!**/*.spec.ts"
- "!**/*.log"
- "!dist/**"
- "!prisma/**" # prisma schema not needed in deployment
# ------------------------------------------------------------
# LAMBDA FUNCTIONS — Prisma included per-function
# ------------------------------------------------------------
functions:
getHosts:
handler: src/modules/host/handlers/host.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /host
method: get
verifyOtp:
handler: src/modules/host/handlers/verifyOtp.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /host/verify-otp
method: post
loginForHost:
handler: src/modules/host/handlers/loginForHost.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /host/login
method: post
registrationOfHost:
handler: src/modules/host/handlers/registration.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /host/registration
method: post
createPasswordForHost:
handler: src/modules/host/handlers/createPassword.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /host/create-password
method: post
addPaymentDetailsForHost:
handler: src/modules/host/handlers/addPaymentDetails.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /host/add-payment-details
method: post
getHostById:
handler: src/modules/host/handlers/getbyidhandler.handler
package:
patterns:
- 'src/modules/host/**'
- 'common/**'
- 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- 'node_modules/@prisma/client/**'
- 'prisma/schema.prisma'
events:
- httpApi:
path: /host/{id}
method: get
getStepperInfo:
handler: src/common/utils/handlers/getStepperHandler.handler
package:
patterns:
- 'src/**'
- 'common/**'
- 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- 'node_modules/@prisma/client/**'
- 'prisma/schema.prisma'
events:
- httpApi:
path: /stepper
method: get
# 👇 Minglar Admin Module
minglarRegistration:
handler: src/modules/minglaradmin/handlers/registration.handler
package:
patterns:
- 'src/modules/minglaradmin/**'
- 'common/**'
- 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- 'node_modules/@prisma/client/**'
- 'prisma/schema.prisma'
events:
- httpApi:
path: /minglaradmin/registration
method: post
minglarLoginForAdmin:
handler: src/modules/minglaradmin/handlers/loginForMinglar.handler
package:
patterns:
- 'src/modules/minglaradmin/**'
- 'common/**'
- 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- 'node_modules/@prisma/client/**'
- 'prisma/schema.prisma'
events:
- httpApi:
path: /minglaradmin/login
method: post
minglarCreatePassword:
handler: src/modules/minglaradmin/handlers/createPassword.handler
package:
patterns:
- 'src/modules/minglaradmin/**'
- 'common/**'
- 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- 'node_modules/@prisma/client/**'
- 'prisma/schema.prisma'
events:
- httpApi:
path: /minglaradmin/create-password
method: post
addCompanyDetails:
handler: src/modules/host/handlers/addCompanyDetails.handler
package:
patterns:
- "src/modules/host/**"
- "common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
- "node_modules/@smithy/**"
- "node_modules/@aws-sdk/**"
events:
- httpApi:
path: /host/add-company-details
method: post