From 53752ab00d4d12982380193575a7385a77a63faa Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Wed, 13 Aug 2025 09:47:45 +0800
Subject: [PATCH 1/9] update: supabase/config.toml
---
supabase/config.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/supabase/config.toml b/supabase/config.toml
index 4d24a0e..86d5743 100644
--- a/supabase/config.toml
+++ b/supabase/config.toml
@@ -117,9 +117,9 @@ file_size_limit = "50MiB"
enabled = true
# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
# in emails.
-site_url = "http://localhost:3000"
+site_url = "https://monthsary-website.nuxt.dev"
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
-additional_redirect_urls = ["http://localhost:3000/confirm"]
+additional_redirect_urls = ["https://monthsary-website.nuxt.dev/confirm", "http://localhost:3000/confirm"]
# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
jwt_expiry = 3600
# Path to JWT signing key. DO NOT commit your signing keys file to git.
From 038ae58dc4c7244738716ba0885bdb00652c2643 Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Wed, 20 Aug 2025 07:56:26 +0800
Subject: [PATCH 2/9] quick-fix: layout of login page
---
app/layouts/login.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/layouts/login.vue b/app/layouts/login.vue
index efbf8ff..9566162 100644
--- a/app/layouts/login.vue
+++ b/app/layouts/login.vue
@@ -1,5 +1,5 @@
-
+
From 0f7ceab215bebef9607dec7fd9e8dc54d343f47c Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Wed, 20 Aug 2025 12:37:58 +0800
Subject: [PATCH 3/9] changed site url on supabase/config.toml for local
development
---
supabase/config.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/supabase/config.toml b/supabase/config.toml
index 86d5743..72ea8ce 100644
--- a/supabase/config.toml
+++ b/supabase/config.toml
@@ -117,7 +117,7 @@ file_size_limit = "50MiB"
enabled = true
# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
# in emails.
-site_url = "https://monthsary-website.nuxt.dev"
+site_url = "http://localhost:3000"
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
additional_redirect_urls = ["https://monthsary-website.nuxt.dev/confirm", "http://localhost:3000/confirm"]
# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
From af611b6353a904f7b76db51c8cf2d7b76b1d101d Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Thu, 21 Aug 2025 05:52:03 +0800
Subject: [PATCH 4/9] update: changed table name from index_roadmap -> roadmap
added: types.ts for types that are reusable update: all components and
composables that are affected by these changes
---
app/components/index/Roadmap/RoadmapStack.vue | 8 ++--
app/components/index/RoadmapSection.vue | 29 ++++++------
app/components/roadmap/RoadmapCard.vue | 14 +++---
app/composables/fetch/useFetchRoadmap.ts | 3 +-
app/pages/roadmap.vue | 6 +--
app/utils/mock/roadmap.ts | 44 +++++++++++--------
app/utils/types.ts | 8 ++++
types/database.types.ts | 22 ++++++----
8 files changed, 77 insertions(+), 57 deletions(-)
create mode 100644 app/utils/types.ts
diff --git a/app/components/index/Roadmap/RoadmapStack.vue b/app/components/index/Roadmap/RoadmapStack.vue
index 2dd59eb..b6d2ebf 100644
--- a/app/components/index/Roadmap/RoadmapStack.vue
+++ b/app/components/index/Roadmap/RoadmapStack.vue
@@ -2,8 +2,8 @@
const props = defineProps<{
isReversed: boolean;
imgSource: string;
- header: string;
- body: string;
+ title: string;
+ description: string;
}>();
const flexDir = ref(props.isReversed ? "row-reverse" : "row");
@@ -16,8 +16,8 @@ const flexDir = ref(props.isReversed ? "row-reverse" : "row");
>
-
-
{{ props.body }}
+
+
{{ props.description }}
diff --git a/app/components/index/RoadmapSection.vue b/app/components/index/RoadmapSection.vue
index e32c8d1..5112242 100644
--- a/app/components/index/RoadmapSection.vue
+++ b/app/components/index/RoadmapSection.vue
@@ -1,7 +1,8 @@
-
@@ -12,10 +10,10 @@ const props = defineProps<{
class="max-w-screen w-full lg:w-[1000px] bg-mocha-base flex flex-col items-center text-center"
>
- {{ props.headings }}
+ {{ props.title }}
{{ props.description }}
diff --git a/app/composables/fetch/useFetchRoadmap.ts b/app/composables/fetch/useFetchRoadmap.ts
index 9f87dbb..cb04ca3 100644
--- a/app/composables/fetch/useFetchRoadmap.ts
+++ b/app/composables/fetch/useFetchRoadmap.ts
@@ -4,8 +4,9 @@ export async function useFetchRoadmap() {
const client = useSupabaseClient();
const { data, error } = await client
- .from("index_roadmap")
+ .from("roadmap")
.select(`*, images (id, image_url, unique_id)`)
+ .lt("index", "3")
.order("index", { ascending: true });
if (error) throw error;
diff --git a/app/pages/roadmap.vue b/app/pages/roadmap.vue
index a7bd7b7..4c59977 100644
--- a/app/pages/roadmap.vue
+++ b/app/pages/roadmap.vue
@@ -1,4 +1,4 @@
-
-
-
-
+
+
+
diff --git a/app/pages/gallery.vue b/app/pages/gallery.vue
index 834c1bd..ff1e905 100644
--- a/app/pages/gallery.vue
+++ b/app/pages/gallery.vue
@@ -6,6 +6,7 @@ definePageMeta({
+
diff --git a/app/pages/roadmap.vue b/app/pages/roadmap.vue
index 4c59977..5c04fe6 100644
--- a/app/pages/roadmap.vue
+++ b/app/pages/roadmap.vue
@@ -1,55 +1,22 @@
-
-
+
Roadmap
@@ -68,10 +35,3 @@ function moveCamera() {
-
diff --git a/package.json b/package.json
index 9463d15..6b4cdd8 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,6 @@
"@supabase/supabase-js": "^2.54.0",
"@tailwindcss/vite": "^4.1.11",
"@tresjs/cientos": "^4.3.1",
- "@tresjs/core": "^4.3.6",
"@tresjs/nuxt": "^3.0.8",
"@tresjs/post-processing": "^2.4.0",
"@types/three": "^0.175.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1f114cd..d075bd1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -44,9 +44,6 @@ importers:
'@tresjs/cientos':
specifier: ^4.3.1
version: 4.3.1(@tresjs/core@4.3.6(three@0.175.0)(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)))(@types/three@0.175.0)(three@0.175.0)(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2))
- '@tresjs/core':
- specifier: ^4.3.6
- version: 4.3.6(three@0.175.0)(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2))
'@tresjs/nuxt':
specifier: ^3.0.8
version: 3.0.8(change-case@5.4.4)(jwt-decode@4.0.0)(magicast@0.3.5)(postcss@8.5.6)(rollup@4.46.2)(three@0.175.0)(valibot@1.1.0(typescript@5.9.2))(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))(vue@3.5.18(typescript@5.9.2))(webpack@5.98.0(esbuild@0.25.8))(zod@3.25.76)
From 211e2df494516fcf7647c9537b79e2e195deb27b Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Thu, 21 Aug 2025 08:14:03 +0800
Subject: [PATCH 6/9] update: roadmap paga, dynamically fetches data update:
added another function -> useFetchRoadmap.ts update: still don't know how to
solve that eslint error
---
app/components/index/RoadmapSection.vue | 4 +--
app/composables/fetch/useFetchRoadmap.ts | 31 +++++++++++++++++++++++-
app/composables/index.ts | 2 +-
app/pages/roadmap.vue | 8 ++++--
4 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/app/components/index/RoadmapSection.vue b/app/components/index/RoadmapSection.vue
index 5112242..dbd374c 100644
--- a/app/components/index/RoadmapSection.vue
+++ b/app/components/index/RoadmapSection.vue
@@ -2,10 +2,10 @@
import type { MockRoadmap } from "#imports"
const { userAuth } = useAuthState();
-const items = ref([]);
+const items = ref([]);
onMounted(async () => {
- const results = await useFetchRoadmap();
+ const results = await useFetchRoadmapRange("3");
if (!userAuth.value) {
items.value = getMockRoadmap();
diff --git a/app/composables/fetch/useFetchRoadmap.ts b/app/composables/fetch/useFetchRoadmap.ts
index cb04ca3..ac13e7a 100644
--- a/app/composables/fetch/useFetchRoadmap.ts
+++ b/app/composables/fetch/useFetchRoadmap.ts
@@ -1,12 +1,41 @@
import type { Database } from "~/types/database.types";
+/**
+ * Use to fetch data via ascending order at roadmap page.
+ *
+ * @returns {any[]} data - Data from the table based on the schema.
+ */
export async function useFetchRoadmap() {
const client = useSupabaseClient();
const { data, error } = await client
.from("roadmap")
.select(`*, images (id, image_url, unique_id)`)
- .lt("index", "3")
+ .order("index", { ascending: true });
+
+ if (error) throw error;
+
+ return data;
+}
+
+
+/**
+ * Use to fetch data in the home page.
+ *
+ * @param {string} range - Range of items that can be fetched
+ *
+ * @returns {any[]} data - Data from the table based on the schema.
+ *
+ * @example
+ * const foo = useFetchRoadmapRange("4")
+ */
+export async function useFetchRoadmapRange(range: string) {
+ const client = useSupabaseClient();
+
+ const { data, error } = await client
+ .from("roadmap")
+ .select(`*, images (id, image_url, unique_id)`)
+ .lte("index", range)
.order("index", { ascending: true });
if (error) throw error;
diff --git a/app/composables/index.ts b/app/composables/index.ts
index fae8fec..9a63c75 100644
--- a/app/composables/index.ts
+++ b/app/composables/index.ts
@@ -1,6 +1,6 @@
export { useFetchImage, useFetchImageWithDate } from "./fetch/useFetchImage";
export { useFetchDimDate } from "./fetch/useFetchDimDate";
-export { useFetchRoadmap } from "./fetch/useFetchRoadmap";
+export { useFetchRoadmap, useFetchRoadmapRange } from "./fetch/useFetchRoadmap";
export { useFetchMemories } from "./fetch/useFetchMemories";
export { useInsertDatePlan } from "./insert/useInsertDatePlan";
diff --git a/app/pages/roadmap.vue b/app/pages/roadmap.vue
index 5c04fe6..0fee076 100644
--- a/app/pages/roadmap.vue
+++ b/app/pages/roadmap.vue
@@ -5,11 +5,15 @@ definePageMeta({
colorMode: "dark"
})
-const items = ref([]);
+const { userAuth } = useAuthState();
+
+const items = ref([]);
onMounted(async () => {
- if (items.value) {
+ if (!userAuth) {
items.value = getMockRoadmap();
+ } else {
+ items.value = await useFetchRoadmap();
}
})
From 19f350382e65fed8788986781fa5db54d5025b3b Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Fri, 22 Aug 2025 08:57:47 +0800
Subject: [PATCH 7/9] update: roadmap page 50% completion update: design on
RoadmapCard.vue added: ImageCard.vue
---
app/components/ImageCard.vue | 13 +++++++++++++
app/components/roadmap/RoadmapCard.vue | 27 +++++++-------------------
app/pages/roadmap.vue | 23 +++++++++++++++++-----
3 files changed, 38 insertions(+), 25 deletions(-)
create mode 100644 app/components/ImageCard.vue
diff --git a/app/components/ImageCard.vue b/app/components/ImageCard.vue
new file mode 100644
index 0000000..e0b7a92
--- /dev/null
+++ b/app/components/ImageCard.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
![]()
+
{{ props.date }}
+
+
diff --git a/app/components/roadmap/RoadmapCard.vue b/app/components/roadmap/RoadmapCard.vue
index b284b11..d953e67 100644
--- a/app/components/roadmap/RoadmapCard.vue
+++ b/app/components/roadmap/RoadmapCard.vue
@@ -5,24 +5,11 @@ const props = defineProps();
-
-
-
-
-
-
- {{ props.title }}
- {{ props.description }}
-
+
+
+
+
{{ props.title }}
+
{{ props.description }}
+
+
diff --git a/app/pages/roadmap.vue b/app/pages/roadmap.vue
index 0fee076..1b79d2d 100644
--- a/app/pages/roadmap.vue
+++ b/app/pages/roadmap.vue
@@ -10,10 +10,12 @@ const { userAuth } = useAuthState();
const items = ref([]);
onMounted(async () => {
- if (!userAuth) {
+ const results = await useFetchRoadmap();
+
+ if (!userAuth.value) {
items.value = getMockRoadmap();
} else {
- items.value = await useFetchRoadmap();
+ items.value = results
}
})
@@ -27,15 +29,26 @@ onMounted(async () => {
A roadmap of our milestones and accomplishments as partner
-
+
-
+
+
+
+
-
From da527ab0491a0528d474dbee2fb63e58c0a64af9 Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Fri, 22 Aug 2025 12:58:26 +0800
Subject: [PATCH 8/9] fixed: RoadmapCard.vue layout
---
app/components/ImageCard.vue | 16 ++++++++++++++--
app/components/roadmap/RoadmapCard.vue | 6 +++---
app/pages/roadmap.vue | 4 +---
app/utils/types.ts | 2 +-
4 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/app/components/ImageCard.vue b/app/components/ImageCard.vue
index e0b7a92..0fd2f5a 100644
--- a/app/components/ImageCard.vue
+++ b/app/components/ImageCard.vue
@@ -3,11 +3,23 @@ const props = defineProps<{
img: string;
date?: string;
}>()
+
+const dateStamp = computed(() => {
+ return props.date ? props.date : "Date not found"
+})
+
-
+
![]()
-
{{ props.date }}
+
{{ dateStamp }}
+
+
diff --git a/app/components/roadmap/RoadmapCard.vue b/app/components/roadmap/RoadmapCard.vue
index d953e67..2d31e2a 100644
--- a/app/components/roadmap/RoadmapCard.vue
+++ b/app/components/roadmap/RoadmapCard.vue
@@ -5,9 +5,9 @@ const props = defineProps
();
-
-
-
+
+
+
{{ props.title }}
{{ props.description }}
diff --git a/app/pages/roadmap.vue b/app/pages/roadmap.vue
index 1b79d2d..3225f4f 100644
--- a/app/pages/roadmap.vue
+++ b/app/pages/roadmap.vue
@@ -23,7 +23,7 @@ onMounted(async () => {
-
+
Roadmap
A roadmap of our milestones and accomplishments as partner
@@ -36,7 +36,6 @@ onMounted(async () => {
:img="item.img"
:title="item.title"
:description="item.description"
- class="mt-5 lg:mt-10"
/>
@@ -47,7 +46,6 @@ onMounted(async () => {
:title="item.title"
:description="item.description"
:date="item.date"
- class="mt-5 lg:mt-10"
/>
diff --git a/app/utils/types.ts b/app/utils/types.ts
index f36d85e..a2c42f3 100644
--- a/app/utils/types.ts
+++ b/app/utils/types.ts
@@ -1,5 +1,5 @@
export type MockRoadmap = {
- img?: string;
+ img: string;
title: string;
description: string;
date?: string;
From 52f1c8c27e51b4ce7f3299e284eafa5d3f604db9 Mon Sep 17 00:00:00 2001
From: Yncy0
Date: Fri, 22 Aug 2025 23:12:32 +0800
Subject: [PATCH 9/9] finished: roadmap page
---
app/components/roadmap/RoadmapCard.vue | 8 ++++++--
app/pages/roadmap.vue | 2 ++
public/images/paw-stamp.svg | 7 +++++++
3 files changed, 15 insertions(+), 2 deletions(-)
create mode 100644 public/images/paw-stamp.svg
diff --git a/app/components/roadmap/RoadmapCard.vue b/app/components/roadmap/RoadmapCard.vue
index 2d31e2a..86f08cc 100644
--- a/app/components/roadmap/RoadmapCard.vue
+++ b/app/components/roadmap/RoadmapCard.vue
@@ -5,8 +5,12 @@ const props = defineProps();
-
-
+
+
+
+
+
{{ props.title }}
{{ props.description }}
diff --git a/app/pages/roadmap.vue b/app/pages/roadmap.vue
index 3225f4f..95b259e 100644
--- a/app/pages/roadmap.vue
+++ b/app/pages/roadmap.vue
@@ -36,6 +36,7 @@ onMounted(async () => {
:img="item.img"
:title="item.title"
:description="item.description"
+ :done="item.done"
/>
@@ -45,6 +46,7 @@ onMounted(async () => {
:img="item.images.image_url"
:title="item.title"
:description="item.description"
+ :done="item.done"
:date="item.date"
/>
diff --git a/public/images/paw-stamp.svg b/public/images/paw-stamp.svg
new file mode 100644
index 0000000..4b90054
--- /dev/null
+++ b/public/images/paw-stamp.svg
@@ -0,0 +1,7 @@
+
+