Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Production 1.1.0 #120

Merged
merged 174 commits into from
Jun 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
174 commits
Select commit Hold shift + click to select a range
d13155c
Config gitignore and eslint
hideonbush106 Jan 21, 2024
237bbbd
[Implement][Common] Define schema
hideonbush106 Jan 23, 2024
7a9a847
Create develop.yml
MinhhTien Jan 23, 2024
7f96939
Create develop.yml (#3)
MinhhTien Jan 23, 2024
90a8193
Update develop.yml
MinhhTien Jan 23, 2024
f1a65fc
Test load env develop.yml
MinhhTien Jan 23, 2024
d532d1a
Load vars, secrets develop.yml
MinhhTien Jan 23, 2024
107ebe4
pass env develop.yml
MinhhTien Jan 23, 2024
90f6f46
Update main.ts, test load env
MinhhTien Jan 23, 2024
f43d4be
Update load env develop.yml
MinhhTien Jan 23, 2024
b31df6d
Echo file .env develop.yml
MinhhTien Jan 23, 2024
1ba63c0
Create .env develop.yml
MinhhTien Jan 23, 2024
a6f98db
Update develop.yml, add cors env
MinhhTien Jan 23, 2024
030b8d9
Update main.ts, remove log test load env
MinhhTien Jan 23, 2024
701dabd
[Implement][EF-68] Login API
nghiavohuynhdai Jan 23, 2024
87d7b4e
EF-81-83 Customer can view and add to cart
MinhhTien Jan 24, 2024
41dde80
EF-83-add _id product swagger in cart (#6)
MinhhTien Jan 25, 2024
0e144c1
[Implement][EF-70] Register API for customer
nghiavohuynhdai Jan 25, 2024
7fa4953
Update route cart.controller.ts
MinhhTien Jan 25, 2024
be5bef3
[Implement][Product] Implement view and add product
hideonbush106 Jan 25, 2024
5becf2f
Merge branch 'develop' into feature/EF-72-78
hideonbush106 Jan 25, 2024
4fdb632
[Implement][Product] Fix controller
hideonbush106 Jan 25, 2024
9d1f70f
[Implement][Product] filter deleted product
hideonbush106 Jan 25, 2024
1aa6fff
[Implement][Product] Implement view and add product (#7)
hideonbush106 Jan 25, 2024
21070c2
[Implement][Provider] Login API for Provider
nghiavohuynhdai Jan 26, 2024
c20cb3a
[Improvement][EF-72]Swagger builder product pagination (#9)
MinhhTien Jan 26, 2024
9cba8b0
[Implement][Authentication] Google Login for Customer
nghiavohuynhdai Jan 27, 2024
fb176d6
[Implement][EF-83]Restructure req body API add cart
MinhhTien Jan 27, 2024
9a3a08c
[Implement][Category] View Category API for Provider
nghiavohuynhdai Jan 28, 2024
17c5dd2
Update category.repository.ts
MinhhTien Jan 28, 2024
dd45dc7
[Implement][Product] View product list and product detail API (guest/…
hideonbush106 Jan 27, 2024
1ef290d
[Implement][Product] Resolve comments
hideonbush106 Jan 28, 2024
4ee1ef6
fix miss last name login with google
nghiavohuynhdai Jan 28, 2024
f638744
[Implement][Category] View categories and create category API
nghiavohuynhdai Jan 28, 2024
9679ccb
[Implement][Product] View product list and product detail API (guest/…
hideonbush106 Jan 27, 2024
6fec6ea
[Refactor][Product] re-define product schema
hideonbush106 Jan 28, 2024
7a1e9b7
[Refactor][Product] re-define dto
hideonbush106 Jan 28, 2024
602305e
[hotfix]Build failed (#17)
MinhhTien Jan 28, 2024
38da776
Add field sku in cart items
MinhhTien Jan 29, 2024
867bda9
Add partial Filter index
MinhhTien Jan 30, 2024
af31794
Update category API
nghiavohuynhdai Jan 30, 2024
8d45cd2
[Implement][Category] Update and delete category API
nghiavohuynhdai Jan 31, 2024
5bdd832
comment delete category feature
nghiavohuynhdai Jan 31, 2024
ba56770
temp
MinhhTien Jan 28, 2024
dcf569d
Add field sku in cart items
MinhhTien Jan 29, 2024
d91325b
[Implement][EF-85-87]Create/View orders
MinhhTien Jan 31, 2024
682f336
Update method name getCart
MinhhTien Feb 1, 2024
80c95a7
[Implement][EF-85-87][Update API management view order, decrease quan…
MinhhTien Feb 1, 2024
f67ff03
[chore][Product]add more field in get public products
MinhhTien Feb 1, 2024
875dda4
[chore][Product]add populate categoris in fetch products
MinhhTien Feb 1, 2024
aea20d7
[chore]Update swagger doc
MinhhTien Feb 1, 2024
9d3f87e
Create snyk-security.yml
MinhhTien Feb 2, 2024
8736f4e
Update snyk-security.yml
MinhhTien Feb 2, 2024
0430c56
Update snyk-security.yml add SYNK_TOKEN
MinhhTien Feb 2, 2024
f61c68c
[Implement][EF-108]remove product in cart
MinhhTien Feb 2, 2024
875b762
[Chore] Update remove cart items
MinhhTien Feb 2, 2024
b08c304
lint
nghiavohuynhdai Feb 2, 2024
22e81f2
[Implement][EF-106]Update product quantity in cart
MinhhTien Feb 2, 2024
c3c27e6
[Chore] Mapping update cart items
MinhhTien Feb 2, 2024
f72dcbb
[Chore]add synk test in develop.yml actions
MinhhTien Feb 3, 2024
19c0750
[Implement][EF-102]Confirm Order, Add orderHistory field to order sch…
MinhhTien Feb 3, 2024
b86e5c9
[Implement][EF-104]Cancel order
MinhhTien Feb 3, 2024
5598df6
Implement][Order] Get customer purchases history and a customer purch…
nghiavohuynhdai Feb 4, 2024
eff0a35
Create trim request body pipe
nghiavohuynhdai Feb 5, 2024
aa5c90b
deepsource config
nghiavohuynhdai Feb 6, 2024
4ab8d48
[Implement][EF-129]Generate slug, find by slug API
MinhhTien Feb 5, 2024
1782b3e
[Implement][EF-129]projection slug in public product list
MinhhTien Feb 6, 2024
b9c5431
Update develop.yml npm install
MinhhTien Feb 6, 2024
99a610f
[Implement][EF-132]Management view product detail API
MinhhTien Feb 6, 2024
2a588ef
[chore] remove async keyword
MinhhTien Feb 6, 2024
41cea54
[Implement][EF-134]Management view order detail API
MinhhTien Feb 6, 2024
377c3b5
[Fix][Deepsource] Found async function without any await expressions
nghiavohuynhdai Feb 7, 2024
9047d4d
[Fix][Product] argument errors
nghiavohuynhdai Feb 7, 2024
ef5b3c2
[Implement][Order] Get a customer order history
nghiavohuynhdai Feb 4, 2024
b04ae11
[Refractor][Order] refractor code
nghiavohuynhdai Feb 7, 2024
39c05da
[Implement][EF-137] Add new staff API
MinhhTien Feb 8, 2024
8baad3b
[chore] clean code
MinhhTien Feb 8, 2024
f15c160
[EF-137] add staff - add env in pipeline, add transaction when send e…
MinhhTien Feb 10, 2024
66461ca
[Implement][EF-147]API get customer information (#38)
MinhhTien Feb 11, 2024
424409a
[chore]Update footer email
MinhhTien Feb 11, 2024
07193a6
[Implement][EF-156]API view category detail
MinhhTien Feb 11, 2024
14af8a1
[Implement][EF-135-136]API list staff, staff detail
MinhhTien Feb 11, 2024
ab9e3f1
[Fix][Staff] rename method
nghiavohuynhdai Feb 12, 2024
39edb58
[bugfix]projection items when cancel order
MinhhTien Feb 14, 2024
09ae6a3
[Implement][EF-138]API create visit showroom booking
MinhhTien Feb 15, 2024
54a7f83
Lint code
MinhhTien Feb 15, 2024
7e55c3e
[Implement][Product] Implement update and delete product API
hideonbush106 Feb 16, 2024
c321263
[Implement][EF-152]API deactive staff
MinhhTien Feb 16, 2024
6429d55
[chore]Update role guard
MinhhTien Feb 16, 2024
135a2ff
[chore]Update admin role guard staff controller
MinhhTien Feb 16, 2024
4d2589b
[chore] Update product description 1000 chars
MinhhTien Feb 16, 2024
f901ec1
Merge branch 'develop' of github.com:Deco-Team/efurniture-api into de…
MinhhTien Feb 16, 2024
98a03b8
[chore][ShowroomBooking]update route prefix
MinhhTien Feb 17, 2024
3afb877
Update app.module.ts route module
MinhhTien Feb 17, 2024
451eda9
[Implement][EF-154]API update staff
MinhhTien Feb 17, 2024
b18da75
[Fix][Order] Change API description
nghiavohuynhdai Feb 18, 2024
a4023f4
[Fix][Cart] Cannot add and update cart (#50)
nghiavohuynhdai Feb 18, 2024
096c3ee
[Fix][Cart] Fix cannot delete item in cart
nghiavohuynhdai Feb 18, 2024
b2a3e2e
[bugfix][Order]add validator for createOrderDto
MinhhTien Feb 18, 2024
5fd0f02
[chore][Auth]Add providerId in jwt provider
MinhhTien Feb 23, 2024
11b9e10
[chore][Docker]Update dockerfile
MinhhTien Feb 23, 2024
3f738c0
[chore][Order] Add items in order list
MinhhTien Feb 24, 2024
14e85ef
[Implement][EF-167-170][Task]assign shipping task and list task API
MinhhTien Feb 23, 2024
295d083
[chore][EF-167-170][Task]clean code
MinhhTien Feb 23, 2024
d7cabff
Update task.controller.ts
MinhhTien Feb 24, 2024
466986d
[Implement][EF-141][Staff]Customer view list consultant and Add filte…
MinhhTien Feb 24, 2024
c742951
[Implement][EF-139-140][ConsultantBooking]API create/list consultant …
MinhhTien Feb 24, 2024
a452446
k8s setup deployment (#57)
MinhhTien Feb 25, 2024
f8d164d
Update ingress.yaml
MinhhTien Feb 25, 2024
b2d0093
[Implement][EF-174-176][ConsultantBooking]Consultant staff view list …
MinhhTien Feb 26, 2024
b75edcb
[Implement][EF-172-178][Task,Order]Delivery staff view shipping order…
MinhhTien Feb 26, 2024
f2224d2
[Implement][EF-182][Order,Payment]Integrate MOMO payment gateway
MinhhTien Mar 4, 2024
3821535
[Implement][EF-182][Order,Payment]Integrate MOMO, handle payment failed
MinhhTien Mar 5, 2024
40a2943
[Implement][EF-182][Order,Payment]Integrate MOMO, clean code
MinhhTien Mar 5, 2024
4267661
[Implement][EF-182][Order,Payment]Integrate MOMO, clean code v2
MinhhTien Mar 5, 2024
4e89b57
[Implement][EF-182][Order,Payment]Integrate MOMO, update redirectUrl …
MinhhTien Mar 5, 2024
704e71d
[Hotfix]Update package.json and lock file
MinhhTien Mar 6, 2024
ed3b73c
feature[Staff]add role staff for list staff
MinhhTien Mar 7, 2024
29e7207
Feature/EF-183 Dashboard API (#70)
MinhhTien Mar 8, 2024
084d75d
feature:EF-187 filter product
MinhhTien Mar 9, 2024
01285f3
feature:EF-189 update count order analytics (#74)
MinhhTien Mar 10, 2024
fd10bba
bugfix: update filter product by price
MinhhTien Mar 11, 2024
5580589
improvement: add field isDeliveryAssigned in order (#75)
MinhhTien Mar 11, 2024
f967441
feature:EF-191 view transaction list
MinhhTien Mar 11, 2024
54aca1c
change access role of consultant booking API
nghiavohuynhdai Mar 12, 2024
a9f753f
Get all consultant booking for admin and general staff
nghiavohuynhdai Mar 12, 2024
bd137bf
hotfix remove auth in momo webhook
MinhhTien Mar 12, 2024
d0ddeb4
Update order.service.ts
MinhhTien Mar 14, 2024
ba5b1ef
feature:EF-196 Send email to customer when payment is success or comp…
MinhhTien Mar 13, 2024
bfdc2e0
Update order created and order completed email template
nghiavohuynhdai Mar 14, 2024
c36e698
hotfix: fix send email order
MinhhTien Mar 16, 2024
b69fc6c
hotfix: fix send email order(2nd)
MinhhTien Mar 16, 2024
304a661
hotfix: fix send email order(3rd)
MinhhTien Mar 16, 2024
bcf21ab
hotfix: fix send email order(4rd) and validate signature from webhook
MinhhTien Mar 16, 2024
4ef9237
hotfix: fix send email order(5rd) and validate signature from webhook
MinhhTien Mar 16, 2024
0225558
feature/EF-200 refund when cancel order
MinhhTien Mar 16, 2024
14830ef
feature/EF-200 send email when cancel order
MinhhTien Mar 16, 2024
3916651
feature/EF-201 [Booking]Send email when booking is created
MinhhTien Mar 18, 2024
d8c2c19
feature/EF-202[VisitShowroomBooking]List and Detail API
MinhhTien Mar 19, 2024
782b7f4
Update develop.yml
MinhhTien Apr 2, 2024
d6668bf
Update develop.yml
MinhhTien Apr 2, 2024
f15b630
Update develop.yml
nghiavohuynhdai Apr 15, 2024
ac8b980
feature/payment: integrate PAYOS payment (#84)
MinhhTien May 5, 2024
f043893
sentry setup for monitor
nghiavohuynhdai May 5, 2024
010af36
update npm script
nghiavohuynhdai May 5, 2024
028e16d
update develop.yml
nghiavohuynhdai May 5, 2024
1b68e8c
update develop.yml
nghiavohuynhdai May 5, 2024
fd618ba
feature/payment: update webhook for verify url
MinhhTien May 5, 2024
2ec3374
feature/payment: update env in develop.yml
MinhhTien May 5, 2024
3bccaf9
Update develop.yml
MinhhTien May 5, 2024
08e0699
feature/payment: update cancel url payos
MinhhTien May 5, 2024
2588705
chore: add error notification when having exception
MinhhTien May 5, 2024
0eb66d8
chore: Update Exception Filter
MinhhTien May 5, 2024
5e5d06e
Update sentry env log in dev env
MinhhTien May 5, 2024
a65f4ff
feature:FUR-9 [BE][Management]Update add AR model when create product…
MinhhTien May 18, 2024
2305875
feature:FUR-9 [BE][Management]Update modelId to modelUrl field
MinhhTien May 18, 2024
65c4fd4
feature:FUR-9 [BE][Management]Update modelId to arPlacement field
MinhhTien May 19, 2024
2d17288
feature:FUR-13 [BE][Web] Integrate AI Generate text to 3D model produ…
MinhhTien May 20, 2024
7ef863b
feature:FUR-13 [BE][Web] update response doc gen text to model API
MinhhTien May 20, 2024
9cf9ef3
feature:FUR-13 [BE][Web] Update develop.yml
MinhhTien May 21, 2024
912b7f8
feature:FUR-21 [BE][Web] Integrate AI Generate 2D product API (#107)
MinhhTien May 24, 2024
85772a2
chore: enable cors
MinhhTien May 26, 2024
a0cac85
feature:FUR-31 [BE][Web] API check limit plan AI generation (#115)
MinhhTien Jun 13, 2024
226d758
Update develop.yml continue-on-error: true
MinhhTien Jun 13, 2024
ff0d87c
feature:FUR-33 [BE][Web] API payment for upgrading GenAI Premium Plan…
MinhhTien Jun 14, 2024
3abbada
feature:FUR-33 Open verify webhook confirm
MinhhTien Jun 14, 2024
60f9526
feature:FUR-33 Close verify webhook confirm
MinhhTien Jun 14, 2024
bc444b5
feature:FUR-49 [BE][Web] Review & Rating product (#119)
MinhhTien Jun 15, 2024
5f986cc
feature:FUR-49 [BE][Web] remove auth
MinhhTien Jun 15, 2024
78acebf
feature:FUR-49 update AI 2D model, Update plan price, credits
MinhhTien Jun 16, 2024
4d8a98c
chore: Add ratingCount product
MinhhTien Jun 16, 2024
e8873b9
chore: Add discord noti payment webhook payos
MinhhTien Jun 16, 2024
8866041
feature:FUR-55 [BE]Config GenAI API key in setting DB
MinhhTien Jun 16, 2024
a40e131
chore: update version 1.1.0
MinhhTien Jun 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/node_modules
/dist
107 changes: 107 additions & 0 deletions .github/workflows/develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: NestJS CI/CD

on:
push:
branches: ['develop']
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
tags:
description: 'Test scenario tags'
required: false
type: boolean
environment:
description: 'Environment to run tests against'
type: environment
required: true

jobs:
build:
runs-on: self-hosted
environment: develop
strategy:
matrix:
node-version: [20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install
run: npm install
- name: Build
run: npm run build
- name: Update sentry sourcemaps
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
continue-on-error: true
run: npm run sentry:sourcemaps
- name: 'Create env file'
run: |
touch .env
echo NODE_ENV=${{ vars.NODE_ENV }} >> .env
echo PORT=${{ vars.PORT }} >> .env
echo MONGODB_CONNECTION_STRING=${{ secrets.MONGODB_CONNECTION_STRING }} >> .env
echo CORS_VALID_ORIGINS=${{ vars.CORS_VALID_ORIGINS }} >> .env

echo JWT_ACCESS_SECRET=${{ vars.JWT_ACCESS_SECRET }} >> .env
echo JWT_ACCESS_EXPIRATION=${{ vars.JWT_ACCESS_EXPIRATION }} >> .env
echo JWT_REFRESH_SECRET=${{ vars.JWT_REFRESH_SECRET }} >> .env
echo JWT_REFRESH_EXPIRATION=${{ vars.JWT_REFRESH_EXPIRATION }} >> .env

echo SMTP_USERNAME=${{ secrets.SMTP_USERNAME }} >> .env
echo SMTP_PASSWORD=${{ secrets.SMTP_PASSWORD }} >> .env
echo SMTP_HOST=${{ vars.SMTP_HOST }} >> .env
echo SMTP_PORT=${{ vars.SMTP_PORT }} >> .env
echo SMTP_FROM_EMAIL=${{ vars.SMTP_FROM_EMAIL }} >> .env
echo SMTP_FROM_NAME=${{ vars.SMTP_FROM_NAME }} >> .env

echo WEB_URL=${{ vars.WEB_URL }} >> .env
echo SERVER_URL=${{ vars.SERVER_URL }} >> .env

echo MOMO_PARTNER_CODE=${{ secrets.MOMO_PARTNER_CODE }} >> .env
echo MOMO_ACCESS_KEY=${{ secrets.MOMO_ACCESS_KEY }} >> .env
echo MOMO_SECRET_KEY=${{ secrets.MOMO_SECRET_KEY }} >> .env
echo MOMO_ENDPOINT=${{ vars.MOMO_ENDPOINT }} >> .env

echo PAYOS_CLIENT_ID=${{ secrets.PAYOS_CLIENT_ID }} >> .env
echo PAYOS_API_KEY=${{ secrets.PAYOS_API_KEY }} >> .env
echo PAYOS_CHECKSUM_KEY=${{ secrets.PAYOS_CHECKSUM_KEY }} >> .env

echo ZALOPAY_APP_ID=${{ secrets.ZALOPAY_APP_ID }} >> .env
echo ZALOPAY_KEY1=${{ secrets.ZALOPAY_KEY1 }} >> .env
echo ZALOPAY_KEY2=${{ secrets.ZALOPAY_KEY2 }} >> .env
echo ZALOPAY_ENDPOINT=${{ vars.ZALOPAY_ENDPOINT }} >> .env

echo SENTRY_DSN=${{ secrets.SENTRY_DSN }} >> .env

echo DISCORD_WEBHOOK_ID=${{ secrets.DISCORD_WEBHOOK_ID }} >> .env
echo DISCORD_WEBHOOK_TOKEN=${{ secrets.DISCORD_WEBHOOK_TOKEN }} >> .env

echo TRIPO_3D_AI_ENDPOINT=${{ vars.TRIPO_3D_AI_ENDPOINT }} >> .env

echo EDEN_AI_ENDPOINT=${{ vars.EDEN_AI_ENDPOINT }} >> .env

- name: Deploy
run: pm2 restart furnique-api

snyk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
111 changes: 111 additions & 0 deletions .github/workflows/k8s-develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: NestJS CI/CD on Kubernetes

on:
push:
branches: [ "develop" ]

jobs:
build:
name: CI/CD on EKS
runs-on: ubuntu-latest
environment: develop
env:
ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }}

steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Set short git commit SHA
id: commit
uses: prompt/actions-commit-hash@v2

- name: Checkout
uses: actions/checkout@v2

- name: Make .env file
uses: SpicyPizza/[email protected]
with:
envkey_NODE_ENV: ${{ vars.NODE_ENV }}
envkey_PORT: ${{ vars.PORT }}
envkey_MONGODB_CONNECTION_STRING: ${{ secrets.MONGODB_CONNECTION_STRING }}
envkey_CORS_VALID_ORIGINS: ${{ vars.CORS_VALID_ORIGINS }}

envkey_JWT_ACCESS_SECRET: ${{ vars.JWT_ACCESS_SECRET }}
envkey_JWT_ACCESS_EXPIRATION: ${{ vars.JWT_ACCESS_EXPIRATION }}
envkey_JWT_REFRESH_SECRET: ${{ vars.JWT_REFRESH_SECRET }}
envkey_JWT_REFRESH_EXPIRATION: ${{ vars.JWT_REFRESH_EXPIRATION }}

envkey_SMTP_USERNAME: ${{ secrets.SMTP_USERNAME }}
envkey_SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }}
envkey_SMTP_HOST: ${{ vars.SMTP_HOST }}
envkey_SMTP_PORT: ${{ vars.SMTP_PORT }}
envkey_SMTP_FROM_EMAIL: ${{ vars.SMTP_FROM_EMAIL }}
envkey_SMTP_FROM_NAME: ${{ vars.SMTP_FROM_NAME }}

envkey_WEB_URL: ${{ vars.WEB_URL }}
envkey_SERVER_URL: ${{ vars.SERVER_URL }}

envkey_MOMO_PARTNER_CODE: ${{ secrets.MOMO_PARTNER_CODE }}
envkey_MOMO_ACCESS_KEY: ${{ secrets.MOMO_ACCESS_KEY }}
envkey_MOMO_SECRET_KEY: ${{ secrets.MOMO_SECRET_KEY }}
envkey_MOMO_ENDPOINT: ${{ vars.MOMO_ENDPOINT }}

envkey_ZALOPAY_APP_ID: ${{ secrets.ZALOPAY_APP_ID }}
envkey_ZALOPAY_KEY1: ${{ secrets.ZALOPAY_KEY1 }}
envkey_ZALOPAY_KEY2: ${{ secrets.ZALOPAY_KEY2 }}
envkey_ZALOPAY_ENDPOINT: ${{ vars.ZALOPAY_ENDPOINT }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ vars.AWS_REGION }}

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master

- name: Docker cache layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-single-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-single-buildx

- name: Build & Push Image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ steps.commit.outputs.short }}

run: |
docker buildx create --use

docker buildx build \
--cache-from=type=local,src=/tmp/.buildx-cache \
--cache-to=type=local,dest=/tmp/.buildx-cache-new \
--tag ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} \
--push \
.

rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

- name: Update kube config
run: aws eks update-kubeconfig --name ${{ vars.EKS_CLUSTER_NAME }} --region ${{ vars.AWS_REGION }}

- name: Deploy to EKS
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ steps.commit.outputs.short }}
run: |
sed -i.bak "s|DOCKER_IMAGE|${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}|g" k8s/deployment.yaml && \
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/ingress.yaml
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,6 @@ lerna-debug.log*
!.vscode/extensions.json

# Env file
.env
.env
# Sentry Config File
.sentryclirc
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/node_modules
/dist
11 changes: 9 additions & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
{
"arrowParens": "always",
"semi": false,
"trailingComma": "none",
"tabWidth": 2,
"endOfLine": "auto",
"useTabs": false,
"singleQuote": true,
"trailingComma": "all"
}
"printWidth": 120,
"jsxSingleQuote": true
}
56 changes: 32 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,36 +1,44 @@
## Build image
FROM node:20-alpine
WORKDIR /src
###################
# BUILD FOR LOCAL DEVELOPMENT
###################
FROM node:20-alpine AS development

COPY package*.json ./
COPY .npmrc ./
RUN npm install
RUN rm -rf .npmrc
WORKDIR /app

COPY . .
RUN npm run build
COPY --chown=node:node package*.json ./

RUN npm ci

COPY --chown=node:node . .

USER node

## Target image
FROM node:20-alpine

WORKDIR /home/nonroot
###################
# BUILD FOR PRODUCTION
###################
FROM node:20-alpine AS build
WORKDIR /app

COPY --chown=node:node package*.json ./

COPY package*.json ./
COPY .npmrc ./
RUN npm install
RUN rm -rf .npmrc
COPY --chown=node:node --from=development /app/node_modules ./node_modules

COPY --chown=node:node . .

RUN npm run build

COPY --from=0 /src/dist ./dist
RUN npm ci --only=production && npm cache clean --force

ENV PORT=5000
EXPOSE ${PORT}
USER node

RUN addgroup nonroot
RUN adduser --disabled-password --gecos "" --ingroup nonroot nonroot
RUN chown -R nonroot:nonroot /home/nonroot
###################
# RUN PRODUCTION
###################
FROM node:20-alpine AS production

USER nonroot
COPY --chown=node:node --from=build /app/node_modules ./node_modules
COPY --chown=node:node --from=build /app/dist ./dist
COPY --chown=node:node --from=build /app/.env ./.env

CMD ["npm", "run", "start:prod"]
CMD ["node", "dist/main.js"]
22 changes: 22 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
services:
mongo1:
image: mongo:7.0
command: ["--replSet", "rs0", "--bind_ip_all", "--port", "27018"]
ports:
- 27018:27018
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: echo "try { rs.status() } catch (err) { rs.initiate() }" | mongosh --port 27018 --quiet
interval: 5s
timeout: 30s
start_period: 0s
start_interval: 1s
retries: 30
volumes:
- "mongo1_data:/data/db"
- "mongo1_config:/data/configdb"

volumes:
mongo1_data:
mongo1_config:
41 changes: 40 additions & 1 deletion example.env
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,43 @@ JWT_ACCESS_EXPIRATION=864000
JWT_REFRESH_SECRET=SWVG1ACUJwVfIyeBe8iGPugAIPq2dNshecqazIVqvK0zb6xJFGGGpoB8naJuOCatH4q+lE57L093HIBm9iZVCd8GfTGsXULaij0k4IU4SSQ/9yyp5qiTWJKnjsmfJc2/FX8xr6XL7chCX8tHgSye5clffIQIY0LlVCwUbC4CukZY8ScSs980EXqnwk63b6R4z+ULYdjPxMk5GQB/qHgJnpa3oFIdCirFtUQUaQY8JpLU6qArDN2LelAcg3g1Eilo4fDNMvDtjNtsRxWYt4zL8Gmf4Mt2lfrrfrKxShd8ITD/4z+zy0GS5Uxg3rD2iVj4E3kjrQv5CD8zhOOg5xA1NA==
JWT_REFRESH_EXPIRATION=90

CORS_VALID_ORIGINS=localhost,ngrok-free
# GOOGLE
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

#FURNIQUE
CORS_VALID_ORIGINS=localhost,ngrok-free,furnique.tech
WEB_URL=https://www.furnique.tech
SERVER_URL=https://api.furnique.tech

#Discord webhook
DISCORD_WEBHOOK_ID=
DISCORD_WEBHOOK_TOKEN=

#Tripo 3D AI API
TRIPO_3D_AI_ENDPOINT=https://api.tripo3d.ai

#Eden AI
EDEN_AI_ENDPOINT=https://api.edenai.run


## PAYMENT
#MOMO
MOMO_PARTNER_CODE=
MOMO_ACCESS_KEY=
MOMO_SECRET_KEY=
MOMO_ENDPOINT=https://test-payment.momo.vn

#ZALOPAY
ZALOPAY_APP_ID=
ZALOPAY_KEY1=
ZALOPAY_KEY2=
ZALOPAY_ENDPOINT=https://sb-openapi.zalopay.vn

#PAYOS
PAYOS_CLIENT_ID=
PAYOS_API_KEY=
PAYOS_CHECKSUM_KEY=

# SENTRY
SENTRY_DSN=
Loading
Loading