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

feat: final MVP & Merge From development Branch to Staging #32

Merged
merged 152 commits into from
Jun 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
69ce8f5
Merge pull request #4 from Finboost/staging
armandwipangestu May 28, 2024
742e09a
feat(docs): change server information on OpenAPI Swagger
armandwipangestu May 28, 2024
1fcb398
feat(deployment): add distroless image on Dockerfile
armandwipangestu May 28, 2024
ccd116a
feat(api): add endpoint GET /roles/{roleId}
armandwipangestu May 28, 2024
f234466
feat(api): add schema folder
armandwipangestu May 29, 2024
9244c93
feat(api): finish endpoint role
armandwipangestu May 29, 2024
d6a9f29
feat(db): add log on PrismaClient
armandwipangestu May 29, 2024
e59fca4
feat(api): add query param on GET /roles?name=
armandwipangestu May 29, 2024
8c36d8c
feat(db): add phoneNumber field on model User
armandwipangestu May 29, 2024
9bb27a4
feat(db): add phoneNumber field on model User
armandwipangestu May 29, 2024
b5efb2b
feat(db): add seeding for table user
armandwipangestu May 29, 2024
ef5e89c
feat(api): change exception parameter position message and res
armandwipangestu May 29, 2024
fad6471
feat(docs): add query param name at /roles OpenAPI Swagger
armandwipangestu May 29, 2024
5d1969a
feat(docs): add 409 Conflict at /auth/signup and change 500 error exa…
armandwipangestu May 29, 2024
ee713b9
feat(api): add endpoint POST /auth/signup
armandwipangestu May 29, 2024
97bc26e
feat(api): add endpoint POST /auth/signin
armandwipangestu May 29, 2024
83ab2c2
feat(api): add endpoint GET /roken/refresh and middleware for verify …
armandwipangestu May 29, 2024
57ad0c9
feat(api): add endpoint DELETE /auth/signout
armandwipangestu May 29, 2024
ab81abe
feat(docs): add 401 and 403 at /auth/signout example OpenAPI Swagger
armandwipangestu May 30, 2024
35602d4
feat(api): remove middleware on GET /token/refresh
armandwipangestu May 30, 2024
cefa88b
feat(api): add endpoint GET /users
armandwipangestu May 30, 2024
d28c1b9
feat(api): add endpoint GET /users/:userId
armandwipangestu May 30, 2024
9681d57
Merge pull request #5 from Finboost/dev-arman
armandwipangestu May 30, 2024
f63dca3
feat(deployment): remove distroless image on Dockerfile
armandwipangestu May 30, 2024
11a2f9b
Merge pull request #6 from Finboost/dev-arman
armandwipangestu May 30, 2024
b1948c0
feat(deployment): update Dockerfile
armandwipangestu May 31, 2024
3440e8a
Merge pull request #7 from Finboost/dev-arman
armandwipangestu May 31, 2024
9f536b1
feat(api): add endpoint PUT /users/:userId
armandwipangestu Jun 2, 2024
5073a41
feat(docs): add password schema to PATCH /users/{userId}
armandwipangestu Jun 2, 2024
5809f6f
feat(api): add endpoint PATCH /users/:userId
armandwipangestu Jun 2, 2024
905b51f
feat(api): add endpoint DELETE /users/:userId
armandwipangestu Jun 2, 2024
c071199
feat(db): add works and educations seeder
armandwipangestu Jun 2, 2024
f3e6ae0
feat(api): add endpoint GET, POST /works & GET, PUT, DELETE /works/:w…
armandwipangestu Jun 2, 2024
bb1a486
feat(api): add endpoint GET, POST /educations & GET, PUT, DELETE /edu…
armandwipangestu Jun 2, 2024
6e9a22e
feat(assets): add default male and female avatar
armandwipangestu Jun 5, 2024
8f2b6ea
feat(auth): add serviceaccount gcp for upload avatar to bucket
armandwipangestu Jun 5, 2024
6eade49
feat(env): add GCLOUD_BUCKET_NAME for google cloud storage bucket to …
armandwipangestu Jun 5, 2024
a83743c
feat(env): add GCLOUD_PROJECT_ID
armandwipangestu Jun 5, 2024
a6b0951
feat(dependency): add dateformat
armandwipangestu Jun 5, 2024
ece5c93
feat(docs): add query param name at /works and /educations OpenAPI Sw…
armandwipangestu Jun 5, 2024
94a6463
feat(dependency): add uuid
armandwipangestu Jun 5, 2024
a9cf726
feat(migration): add nullable user profile
armandwipangestu Jun 5, 2024
c19e5fa
feat(migration): allow nullable user profile
armandwipangestu Jun 5, 2024
7b3e613
feat(migration): add cascade delete on profile
armandwipangestu Jun 5, 2024
ae41c69
feat(api): add default avatar user based on the gender when signup
armandwipangestu Jun 5, 2024
94e1807
feat(schema): add nullable on model Profile
armandwipangestu Jun 5, 2024
a32f2da
feat(util): add bucket utility
armandwipangestu Jun 5, 2024
5c94ee0
feat(middleware): add images middleware, handle with multer
armandwipangestu Jun 5, 2024
7583747
feat(api): add endpoint PUT /users/:userId/profile/avatar
armandwipangestu Jun 5, 2024
496c961
feat(dependency): remove uuid
armandwipangestu Jun 6, 2024
0912784
feat(dependency): remove uuid
armandwipangestu Jun 6, 2024
af28e0a
feat(api): change url with utility function
armandwipangestu Jun 6, 2024
cfd2453
feat(docs): add PUT /users/:userId/profile/avatar to OpenAPI Swagger
armandwipangestu Jun 6, 2024
7d311c7
Merge pull request #8 from Finboost/dev-arman
armandwipangestu Jun 6, 2024
26717d7
feat(deployment): update workflow yml file
armandwipangestu Jun 6, 2024
44b4600
Merge pull request #9 from Finboost/dev-arman
armandwipangestu Jun 6, 2024
9b5d58d
feat(deployment): add regex to add double quote to get valid json for…
armandwipangestu Jun 6, 2024
a841b11
Merge pull request #10 from Finboost/dev-arman
armandwipangestu Jun 6, 2024
0a08e3e
feat(deployment): remove regex
armandwipangestu Jun 6, 2024
5c9387e
feat(util): remove serviceaccount on bucket google cloud storage conf…
armandwipangestu Jun 6, 2024
eedef2c
Merge pull request #11 from Finboost/dev-arman
armandwipangestu Jun 6, 2024
cf8055a
feat(api): add endpoint GET /users/:userId/profile
armandwipangestu Jun 6, 2024
9d40677
feat(api): add endpoint PATCH /users/:userId/profile
armandwipangestu Jun 6, 2024
59b8e01
feat(schema): add nullable on profile
armandwipangestu Jun 6, 2024
dff6dd6
feat(docs): remove POST & PUT /users/:userId/profile
armandwipangestu Jun 6, 2024
02a4f6d
feat(api): add endpoint DELETE /users/:userId/profile
armandwipangestu Jun 6, 2024
0ac03d7
Merge pull request #12 from Finboost/dev-arman
armandwipangestu Jun 6, 2024
bc98a6a
feat(api): throw error to console
armandwipangestu Jun 7, 2024
fa4bfd3
Merge pull request #13 from Finboost/dev-arman
armandwipangestu Jun 7, 2024
a13d0bd
feat(api): add url encoded
armandwipangestu Jun 7, 2024
18a25a3
Merge pull request #14 from Finboost/dev-arman
armandwipangestu Jun 7, 2024
c6b92a8
feat(api): add parseInt on age request body
armandwipangestu Jun 7, 2024
1f39baa
Merge pull request #15 from Finboost/dev-arman
armandwipangestu Jun 7, 2024
b44e18c
feat(api): update JWT accessToken expired
armandwipangestu Jun 7, 2024
ba2ee09
Merge pull request #16 from Finboost/dev-arman
armandwipangestu Jun 7, 2024
3c7462a
docs(chats): add chats documentation to swagger
nurhudajoantama May 23, 2024
14f5491
docs(chats): change chat doc follow spec
nurhudajoantama May 30, 2024
7fe0bc8
feat(chats): implement restfull api for room chats
nurhudajoantama Jun 8, 2024
09a3cf3
feat(chat-ai): implement forward request for chat ai service
nurhudajoantama Jun 9, 2024
a2ae16a
ci: add ml url env variable to github workflow
nurhudajoantama Jun 9, 2024
6a0ab9f
Merge pull request #17 from Finboost/dev-jo
nurhudajoantama Jun 9, 2024
7a07142
feat(api): update JWT accessToken expired
armandwipangestu Jun 10, 2024
7a3835d
feat(api): add profile data on users endpoint
armandwipangestu Jun 10, 2024
833fcfd
Merge pull request #18 from Finboost/dev-arman
armandwipangestu Jun 10, 2024
9739714
feat(docs): update README
armandwipangestu Jun 12, 2024
87e20f4
feat(docs): update README
armandwipangestu Jun 12, 2024
c9104c1
Merge pull request #19 from Finboost/dev-arman
armandwipangestu Jun 12, 2024
dc29b7e
feat(docs): update response example
armandwipangestu Jun 12, 2024
cc79b68
feat(api): add response id with specify field, e.g. userId, roleId, w…
armandwipangestu Jun 12, 2024
9ddb40d
Merge pull request #20 from Finboost/dev-arman
armandwipangestu Jun 12, 2024
dce6e8c
feat(api): add response id with specify field, e.g. userId, roleId, w…
armandwipangestu Jun 12, 2024
6763e68
Merge pull request #21 from Finboost/dev-arman
armandwipangestu Jun 12, 2024
c65cf89
feat(docs): update response example and schema
armandwipangestu Jun 13, 2024
a3ed7e2
feat(db): update seeder
armandwipangestu Jun 13, 2024
3e4b292
feat(docs): update README
armandwipangestu Jun 13, 2024
7c41cbd
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
b9ddcc3
Merge pull request #22 from Finboost/dev-arman
armandwipangestu Jun 13, 2024
c5f4c2c
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
c368b67
Merge pull request #23 from Finboost/dev-arman
armandwipangestu Jun 13, 2024
a19667c
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
a766049
Merge pull request #24 from Finboost/dev-arman
armandwipangestu Jun 13, 2024
e9a8671
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
b90dfd5
Merge pull request #25 from Finboost/dev-arman
armandwipangestu Jun 13, 2024
12dc376
feat(api): add condition on user age update data partial
armandwipangestu Jun 14, 2024
0312495
feat(api): add res to second parameter
armandwipangestu Jun 14, 2024
c437466
feat(testing): add postman collection and environment
armandwipangestu Jun 14, 2024
1dcf41e
feat(docs): update README
armandwipangestu Jun 14, 2024
e714caa
Merge pull request #26 from Finboost/dev-arman
armandwipangestu Jun 14, 2024
9226ef7
feat(db): update seeder
armandwipangestu Jun 14, 2024
b7ec307
feat(api): update query users
armandwipangestu Jun 14, 2024
e97fb7e
Merge pull request #27 from Finboost/dev-arman
armandwipangestu Jun 14, 2024
617db39
feat(api): update query users
armandwipangestu Jun 14, 2024
b465fba
Merge pull request #28 from Finboost/dev-arman
armandwipangestu Jun 14, 2024
15a36cb
feat(db): update schema & seeder
armandwipangestu Jun 15, 2024
51e7425
feat(db): update schema
armandwipangestu Jun 15, 2024
3ce0fd8
feat(api): update schema validation, controller, and repository for m…
armandwipangestu Jun 15, 2024
e185c39
feat(db): update schema formatting decimal
armandwipangestu Jun 15, 2024
e998ddc
feat(db): update seeder
armandwipangestu Jun 15, 2024
6cbbef1
feat(docs): update response example and schema
armandwipangestu Jun 15, 2024
631c41c
Merge pull request #29 from Finboost/dev-arman
armandwipangestu Jun 15, 2024
f1f6e82
feat(api): update JWT accessToken expired
armandwipangestu Jun 10, 2024
e6bdf60
feat(api): add profile data on users endpoint
armandwipangestu Jun 10, 2024
4b4b111
feat(docs): update README
armandwipangestu Jun 12, 2024
f9f5788
feat(docs): update README
armandwipangestu Jun 12, 2024
683b70b
feat(docs): update response example
armandwipangestu Jun 12, 2024
2d67a0a
feat(api): add response id with specify field, e.g. userId, roleId, w…
armandwipangestu Jun 12, 2024
b714583
feat(api): add response id with specify field, e.g. userId, roleId, w…
armandwipangestu Jun 12, 2024
28e8a3a
feat(docs): update response example and schema
armandwipangestu Jun 13, 2024
85c6470
feat(db): update seeder
armandwipangestu Jun 13, 2024
480d500
feat(docs): update README
armandwipangestu Jun 13, 2024
f72494f
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
ad23ccb
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
8c48f17
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
ec98434
feat(setup): update Dockerfile
armandwipangestu Jun 13, 2024
b73ea71
feat(api): add condition on user age update data partial
armandwipangestu Jun 14, 2024
c5ea354
feat(api): add res to second parameter
armandwipangestu Jun 14, 2024
1407ab0
feat(testing): add postman collection and environment
armandwipangestu Jun 14, 2024
1573062
feat(docs): update README
armandwipangestu Jun 14, 2024
3eea52a
feat(db): update seeder
armandwipangestu Jun 14, 2024
916f319
feat(api): update query users
armandwipangestu Jun 14, 2024
2e43b55
feat(api): update query users
armandwipangestu Jun 14, 2024
237a835
feat(db): update schema & seeder
armandwipangestu Jun 15, 2024
1e51396
feat(db): update schema
armandwipangestu Jun 15, 2024
8af074e
feat(api): update schema validation, controller, and repository for m…
armandwipangestu Jun 15, 2024
862d295
feat(db): update schema formatting decimal
armandwipangestu Jun 15, 2024
bdef9b5
feat(db): update seeder
armandwipangestu Jun 15, 2024
7930ad5
feat(docs): update response example and schema
armandwipangestu Jun 15, 2024
a9befca
feat(chat-ai): change ai spec for generative ai n add some body from …
nurhudajoantama Jun 16, 2024
a22629f
Merge branch 'dev' into dev-jo
nurhudajoantama Jun 16, 2024
2f27366
Merge pull request #30 from Finboost/dev-jo
nurhudajoantama Jun 16, 2024
46ba604
fix(chat-ai): change total question input to string parse on be
nurhudajoantama Jun 17, 2024
f96fc95
Merge pull request #31 from Finboost/dev-jo
nurhudajoantama Jun 17, 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
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,9 @@ EXPRESS_PORT=8080

JWT_ACCESS_TOKEN_SECRET='<YOUR_RANDOM_STRING_FOR_JWT_ACCESS_TOKEN_SECRET>' # The JWT secret can be generate with this command `npm run generate:secret:jwt`
JWT_REFRESH_TOKEN_SECRET='<YOUR_RANDOM_STRING_FOR_JWT_REFRESH_TOKEN_SECRET>'

GCLOUD_PROJECT_ID="your-gcloud-project-id"
GCLOUD_BUCKET_NAME="your-bucket-name"

GENERATIVE_AI_SERVICE_URL="<YOUR_GENERATIVE_AI_SERVICE_URL>"
SUGGESTION_AI_SERVICE_URL="<YOUR_SUGGESTION_AI_SERVICE_URL>"
16 changes: 16 additions & 0 deletions .github/workflows/google-cloudrun-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ jobs:
echo "EXPRESS_PORT=${{ secrets.EXPRESS_PORT }}" >> .env.production
echo "JWT_ACCESS_TOKEN_SECRET=${{ secrets.JWT_ACCESS_TOKEN_SECRET }}" >> .env.production
echo "JWT_REFRESH_TOKEN_SECRET=${{ secrets.JWT_REFRESH_TOKEN_SECRET }}" >> .env.production
echo "GCLOUD_PROJECT_ID=${{ secrets.GCLOUD_PROJECT_ID }}" >> .env.production
echo "GCLOUD_BUCKET_NAME=${{ secrets.GCLOUD_BUCKET_NAME }}" >> .env.production
echo "GENERATIVE_AI_SERVICE_URL=${{ secrets.GENERATIVE_AI_SERVICE_URL }}" >> .env.production
echo "SUGGESTION_AI_SERVICE_URL=${{ secrets.SUGGESTION_AI_SERVICE_URL }}" >> .env.production
elif [[ "${GITHUB_REF##*/}" == "staging" ]]; then
echo "NODE_ENV=staging" >> $GITHUB_ENV
echo "DOCKER_TAG=staging-${{ github.sha }}" >> $GITHUB_ENV
Expand All @@ -95,6 +99,10 @@ jobs:
echo "EXPRESS_PORT=${{ secrets.EXPRESS_PORT }}" >> .env.staging
echo "JWT_ACCESS_TOKEN_SECRET=${{ secrets.JWT_ACCESS_TOKEN_SECRET }}" >> .env.staging
echo "JWT_REFRESH_TOKEN_SECRET=${{ secrets.JWT_REFRESH_TOKEN_SECRET }}" >> .env.staging
echo "GCLOUD_PROJECT_ID=${{ secrets.GCLOUD_PROJECT_ID }}" >> .env.staging
echo "GCLOUD_BUCKET_NAME=${{ secrets.GCLOUD_BUCKET_NAME }}" >> .env.staging
echo "GENERATIVE_AI_SERVICE_URL=${{ secrets.GENERATIVE_AI_SERVICE_URL }}" >> .env.staging
echo "SUGGESTION_AI_SERVICE_URL=${{ secrets.SUGGESTION_AI_SERVICE_URL }}" >> .env.staging
elif [[ "${GITHUB_REF##*/}" == "feat/setup-node" ]]; then
echo "NODE_ENV=dev" >> $GITHUB_ENV
echo "DOCKER_TAG=dev-${{ github.sha }}" >> $GITHUB_ENV
Expand All @@ -104,6 +112,10 @@ jobs:
echo "EXPRESS_PORT=${{ secrets.EXPRESS_PORT }}" >> .env.dev
echo "JWT_ACCESS_TOKEN_SECRET=${{ secrets.JWT_ACCESS_TOKEN_SECRET }}" >> .env.dev
echo "JWT_REFRESH_TOKEN_SECRET=${{ secrets.JWT_REFRESH_TOKEN_SECRET }}" >> .env.dev
echo "GCLOUD_PROJECT_ID=${{ secrets.GCLOUD_PROJECT_ID }}" >> .env.dev
echo "GCLOUD_BUCKET_NAME=${{ secrets.GCLOUD_BUCKET_NAME }}" >> .env.dev
echo "GENERATIVE_AI_SERVICE_URL=${{ secrets.GENERATIVE_AI_SERVICE_URL }}" >> .env.dev
echo "SUGGESTION_AI_SERVICE_URL=${{ secrets.SUGGESTION_AI_SERVICE_URL }}" >> .env.dev
else
echo "NODE_ENV=dev" >> $GITHUB_ENV
echo "DOCKER_TAG=dev-${{ github.sha }}" >> $GITHUB_ENV
Expand All @@ -113,6 +125,10 @@ jobs:
echo "EXPRESS_PORT=${{ secrets.EXPRESS_PORT }}" >> .env.dev
echo "JWT_ACCESS_TOKEN_SECRET=${{ secrets.JWT_ACCESS_TOKEN_SECRET }}" >> .env.dev
echo "JWT_REFRESH_TOKEN_SECRET=${{ secrets.JWT_REFRESH_TOKEN_SECRET }}" >> .env.dev
echo "GCLOUD_PROJECT_ID=${{ secrets.GCLOUD_PROJECT_ID }}" >> .env.dev
echo "GCLOUD_BUCKET_NAME=${{ secrets.GCLOUD_BUCKET_NAME }}" >> .env.dev
echo "GENERATIVE_AI_SERVICE_URL=${{ secrets.GENERATIVE_AI_SERVICE_URL }}" >> .env.dev
echo "SUGGESTION_AI_SERVICE_URL=${{ secrets.SUGGESTION_AI_SERVICE_URL }}" >> .env.dev
fi

- name: Clear Docker cache
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts

# gcp files
serviceaccount.json
39 changes: 34 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM node:20
# Stage 1: Build stage
FROM node:20 AS build

# Define build argument
ARG NODE_ENV
Expand All @@ -7,20 +8,48 @@ ARG NODE_ENV
ENV NODE_ENV=${NODE_ENV}
ENV PORT=8080

RUN mkdir -p /opt/app
# Install tzdata and set timezone
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
RUN ln -fs /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

# Create app directory
WORKDIR /opt/app

COPY package*.json .
# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the rest of the application code
COPY . .

# Generate Prisma client
RUN npm install -g dotenv-cli

RUN npx prisma generate
RUN dotenv -e .env.${NODE_ENV} -- npx prisma migrate deploy

# Stage 2: Run stage
# FROM gcr.io/distroless/nodejs20-debian12
# FROM node:20-slim

# Install tzdata and set timezone
# RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
# RUN ln -fs /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

# Copy built files from the build stage
# COPY --from=build /opt/app /opt/app

# Set the working directory
# WORKDIR /opt/app

# Set environment variable for runtime
# ENV NODE_ENV=${NODE_ENV}
# ENV PORT=8080
ENV TZ=Asia/Jakarta

# Expose the port
EXPOSE 8080

CMD ["sh", "-c", "npm run start:${NODE_ENV}"]
# Run the application using shell to ensure the environment variable is picked up
CMD ["sh", "-c", "npm run start:${NODE_ENV}"]
Loading
Loading