From 6d321723a0ff244ca13904ef04bd70128ba5a2cc Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:09:54 +0100 Subject: [PATCH 01/11] Update team-deployment.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- .github/workflows/team-deployment.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/team-deployment.yml b/.github/workflows/team-deployment.yml index dd04d55d7..e85a8c44c 100644 --- a/.github/workflows/team-deployment.yml +++ b/.github/workflows/team-deployment.yml @@ -25,6 +25,24 @@ jobs: script: | cd hng_boilerplate_nextjs ./scripts/team_deploy.sh kimiko-golang ${{ vars.PORT }} + kimiko-cs: + if: github.event.repository.fork == false + runs-on: ubuntu-latest + + environment: + name: "kimiko-cs" + url: ${{ vars.URL }} + + steps: + - name: Deploy to kimiko-cs environment + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + script: | + cd hng_boilerplate_nextjs + ./scripts/team_deploy.sh kimiko-cs ${{ vars.PORT }} cyborgs-java: if: github.event.repository.fork == false From 15562f8ca886e0669fe7cbc9d80a5b867238e2f7 Mon Sep 17 00:00:00 2001 From: Prudent Bird Date: Mon, 29 Jul 2024 12:14:58 +0100 Subject: [PATCH 02/11] chore: social auth for registration - team kimiko --- src/app/(auth-routes)/register/page.tsx | 133 +++++++++++++++++++----- src/utils/getApiUrl.ts | 11 ++ 2 files changed, 116 insertions(+), 28 deletions(-) create mode 100644 src/utils/getApiUrl.ts diff --git a/src/app/(auth-routes)/register/page.tsx b/src/app/(auth-routes)/register/page.tsx index e5845f651..333dc2db2 100644 --- a/src/app/(auth-routes)/register/page.tsx +++ b/src/app/(auth-routes)/register/page.tsx @@ -2,14 +2,13 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { DialogContent, DialogTitle } from "@radix-ui/react-dialog"; -import Image from "next/image"; import Link from "next/link"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; +import CustomButton from "~/components/common/common-button/common-button"; import { DialogDemo } from "~/components/common/Dialog"; -import { Button } from "~/components/ui/button"; import { Form, FormControl, @@ -24,6 +23,7 @@ import { InputOTPGroup, InputOTPSlot, } from "~/components/ui/input-otp"; +import { getApiUrl } from "~/utils/getApiUrl"; const formSchema = z.object({ fullname: z.string().min(2, { @@ -40,6 +40,21 @@ const formSchema = z.object({ type FormData = z.infer; const SignUp = () => { + const [apiUrl, setApiUrl] = useState(""); + + useEffect(() => { + const fetchApiUrl = async () => { + try { + const url = await getApiUrl(); + setApiUrl(url); + } catch (error) { + console.error("Failed to fetch API URL:", error); + } + }; + + fetchApiUrl(); + }, []); + const form = useForm({ resolver: zodResolver(formSchema), }); @@ -53,7 +68,9 @@ const SignUp = () => { })(); }; - const handleSubmit = () => { + const handleSubmit = async () => { + console.log(apiUrl); + form.handleSubmit(handleFormSubmit)(); }; @@ -66,26 +83,77 @@ const SignUp = () => {

- - + + + + + + + } + > + Sign up with Google + + + + + + + + + + + + } + > + Sign up with Facebook +
@@ -157,9 +225,14 @@ const SignUp = () => { )} /> - + { ))} - +

Would you rather use email and password? diff --git a/src/utils/getApiUrl.ts b/src/utils/getApiUrl.ts new file mode 100644 index 000000000..465b50b85 --- /dev/null +++ b/src/utils/getApiUrl.ts @@ -0,0 +1,11 @@ +"use server"; + +export const getApiUrl = async (): Promise => { + const apiUrl = process.env.API_URL; + + if (!apiUrl) { + throw new Error("API_URL environment variable is not defined"); + } + + return apiUrl; +}; \ No newline at end of file From 4eccc7dafcb98abbcb8993996eecbb6f1560a6fe Mon Sep 17 00:00:00 2001 From: Prudent Bird Date: Mon, 29 Jul 2024 12:37:35 +0100 Subject: [PATCH 03/11] chore: fixed lint errors --- src/app/(auth-routes)/register/page.tsx | 14 +++++++++----- src/utils/getApiUrl.ts | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/app/(auth-routes)/register/page.tsx b/src/app/(auth-routes)/register/page.tsx index 333dc2db2..2c4d59ced 100644 --- a/src/app/(auth-routes)/register/page.tsx +++ b/src/app/(auth-routes)/register/page.tsx @@ -23,6 +23,7 @@ import { InputOTPGroup, InputOTPSlot, } from "~/components/ui/input-otp"; +import { useToast } from "~/components/ui/use-toast"; import { getApiUrl } from "~/utils/getApiUrl"; const formSchema = z.object({ @@ -41,19 +42,24 @@ type FormData = z.infer; const SignUp = () => { const [apiUrl, setApiUrl] = useState(""); + const { toast } = useToast(); useEffect(() => { const fetchApiUrl = async () => { try { const url = await getApiUrl(); setApiUrl(url); - } catch (error) { - console.error("Failed to fetch API URL:", error); + } catch { + toast({ + title: "Error", + description: "Failed to fetch API URL", + variant: "destructive", + }); } }; fetchApiUrl(); - }, []); + }, [toast]); const form = useForm({ resolver: zodResolver(formSchema), @@ -69,8 +75,6 @@ const SignUp = () => { }; const handleSubmit = async () => { - console.log(apiUrl); - form.handleSubmit(handleFormSubmit)(); }; diff --git a/src/utils/getApiUrl.ts b/src/utils/getApiUrl.ts index 465b50b85..2579b1996 100644 --- a/src/utils/getApiUrl.ts +++ b/src/utils/getApiUrl.ts @@ -8,4 +8,4 @@ export const getApiUrl = async (): Promise => { } return apiUrl; -}; \ No newline at end of file +}; From c4b425bd8f11b609f468ab3ea3b0a1a67c1cee07 Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:43:49 +0100 Subject: [PATCH 04/11] Update staging_deploy.sh Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- scripts/staging_deploy.sh | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/scripts/staging_deploy.sh b/scripts/staging_deploy.sh index cc2ba3194..9a5f36ef3 100755 --- a/scripts/staging_deploy.sh +++ b/scripts/staging_deploy.sh @@ -1,22 +1,8 @@ #!/bin/bash -if [ "$#" -ne 1 ]; then - echo "Usage: $0 {next|remix}" - exit 1 -fi +set -e -if [ "$1" == "next" ]; then - cd /home/nextjs/staging/hng_boilerplate_nextjs - git pull origin staging - docker compose -f docker/staging/docker-compose.yml build - docker compose -f docker/staging/docker-compose.yml up -d -elif [ "$1" == "remix" ]; then - cd /home/remixjs/staging/hng_boilerplate_remix - git pull origin staging - docker compose -f docker/staging/docker-compose.yml build - docker compose -f docker/staging/docker-compose.yml up -d -else - echo "Invalid argument. Use 'next' or 'remix'." - echo "Usage: $0 {next|remix}" - exit 1 -fi +cd "$(git rev-parse --show-toplevel)" +git pull origin staging +docker pull hngdevops/nextjs-boilerplate:staging +docker compose --project-name staging-nextjs -f docker/staging/docker-compose.yml up -d From adc99cee35fbde391916d90f0a82c4a0c0ed9d8e Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:46:11 +0100 Subject: [PATCH 05/11] Update docker-compose.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- docker/staging/docker-compose.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docker/staging/docker-compose.yml b/docker/staging/docker-compose.yml index 96ed1f242..d279c3648 100644 --- a/docker/staging/docker-compose.yml +++ b/docker/staging/docker-compose.yml @@ -1,12 +1,11 @@ services: - next-staging-frontend-1: - build: - context: ../../ - dockerfile: docker/staging/Dockerfile + frontend: + image: hngdevops/nextjs-boilerplate:staging ports: - 3200:3000 - restart: always + volumes: + - ../../.env:/app/.env # next-staging-frontend-2: # build: From 6a609d98b6a7c6c6084ff63d868d5334110305a9 Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:47:07 +0100 Subject: [PATCH 06/11] Update docker-compose.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- docker/prod/docker-compose.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 9fa19856a..38660d65b 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -1,12 +1,11 @@ services: - next-prod-frontend-1: - build: - context: ../../ - dockerfile: docker/prod/Dockerfile + frontend: + image: hngdevops/nextjs-boilerplate:prod ports: - 3000:3000 - restart: always + volumes: + - ../../.env:/app/.env # next-prod-frontend-2: # build: From e64a4fb28026b2e8cd3c20536c5e5d418173689c Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:00:01 +0100 Subject: [PATCH 07/11] Update staging-deployment.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- .github/workflows/staging-deployment.yml | 29 +++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/.github/workflows/staging-deployment.yml b/.github/workflows/staging-deployment.yml index ed32fb66f..ea82c2617 100644 --- a/.github/workflows/staging-deployment.yml +++ b/.github/workflows/staging-deployment.yml @@ -1,6 +1,7 @@ name: Staging Deployment on: + workflow_dispatch: push: branches: - staging @@ -8,6 +9,31 @@ on: - .github/workflows/** jobs: + build_and_push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: docker/staging/Dockerfile + push: true + tags: hngdevops/nextjs-boilerplate:staging + deploy_to_staging: if: github.event.repository.fork == false runs-on: ubuntu-latest @@ -24,4 +50,5 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} script: | - ./deploy_staging.sh next + cd hng_boilerplate_nextjs + ./scripts/staging_deploy.sh From 3bbd1cdcbe15511d73d8bf1dd9b63633ba78b1d5 Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:02:54 +0100 Subject: [PATCH 08/11] Update docker-compose.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> From ccee976b45d937b49c6b5d7ddc46175ffaa21a3f Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:03:43 +0100 Subject: [PATCH 09/11] Update production-deployment.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- .github/workflows/production-deployment.yml | 29 ++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/.github/workflows/production-deployment.yml b/.github/workflows/production-deployment.yml index 2db3074fb..89374c396 100644 --- a/.github/workflows/production-deployment.yml +++ b/.github/workflows/production-deployment.yml @@ -1,6 +1,7 @@ name: Production Deployment on: + workflow_dispatch: push: branches: - main @@ -8,6 +9,31 @@ on: - .github/workflows/** jobs: + build_and_push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: docker/staging/Dockerfile + push: true + tags: hngdevops/nextjs-boilerplate:prod + deploy_to_production: if: github.event.repository.fork == false runs-on: ubuntu-latest @@ -24,4 +50,5 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} script: | - ./deploy_prod.sh next + cd hng_boilerplate_nextjs + ./scripts/prod_deploy.sh From ce909be236fa84fc37dec9c5172e981cc5524dcf Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:04:15 +0100 Subject: [PATCH 10/11] Update prod_deploy.sh Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- scripts/prod_deploy.sh | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/scripts/prod_deploy.sh b/scripts/prod_deploy.sh index e192db8c1..38ab8d1a1 100755 --- a/scripts/prod_deploy.sh +++ b/scripts/prod_deploy.sh @@ -1,22 +1,8 @@ #!/bin/bash -if [ "$#" -ne 1 ]; then - echo "Usage: $0 {next|remix}" - exit 1 -fi +set -e -if [ "$1" == "next" ]; then - cd /home/nextjs/prod/hng_boilerplate_nextjs - git pull origin main - docker compose -f docker/prod/docker-compose.yml build - docker compose -f docker/prod/docker-compose.yml up -d -elif [ "$1" == "remix" ]; then - cd /home/remixjs/prod/hng_boilerplate_remix - git pull origin main - docker compose -f docker/prod/docker-compose.yml build - docker compose -f docker/prod/docker-compose.yml up -d -else - echo "Invalid argument. Use 'next' or 'remix'." - echo "Usage: $0 {next|remix}" - exit 1 -fi +cd "$(git rev-parse --show-toplevel)" +git pull origin main +docker pull hngdevops/nextjs-boilerplate:prod +docker compose --project-name prod-nextjs -f docker/prod/docker-compose.yml up -d From ec78d636741c2c344984cd799c517fe6a9c3a304 Mon Sep 17 00:00:00 2001 From: Ravencodess <115118888+Ravencodess@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:52:01 +0100 Subject: [PATCH 11/11] Update production-deployment.yml Signed-off-by: Ravencodess <115118888+Ravencodess@users.noreply.github.com> --- .github/workflows/production-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/production-deployment.yml b/.github/workflows/production-deployment.yml index 89374c396..8d29eb5e6 100644 --- a/.github/workflows/production-deployment.yml +++ b/.github/workflows/production-deployment.yml @@ -30,7 +30,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - file: docker/staging/Dockerfile + file: docker/prod/Dockerfile push: true tags: hngdevops/nextjs-boilerplate:prod