Skip to content

Commit e19d834

Browse files
Arckie Jadulcoclaude
andcommitted
fix: header nav links work from any page, add RESEND_API_KEY to CI
Nav links now use absolute paths (/#about, /#skills, etc.) so they correctly navigate to homepage sections from /blog and other pages. Also adds RESEND_API_KEY env var to production CI workflow and updates hello-world blog post content. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b7bf928 commit e19d834

4 files changed

Lines changed: 34 additions & 47 deletions

File tree

.github/workflows/production.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# Prerequisites — add these as GitHub repository secrets:
55
# CLOUDFLARE_API_TOKEN → API token with "Cloudflare Pages: Edit" permission
66
# CLOUDFLARE_ACCOUNT_ID → Your Cloudflare account ID (visible in dashboard sidebar)
7+
# RESEND_API_KEY → Resend API key for the contact form email service
78
#
89
# Also update the `projectName` value below to match your Cloudflare Pages project name.
910
#
@@ -58,6 +59,8 @@ jobs:
5859
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
5960
- name: Static HTML export with Nuxt
6061
run: ${{ steps.detect-package-manager.outputs.manager }} run generate
62+
env:
63+
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
6164
# No NUXT_APP_BASE_URL needed here — production runs at the root
6265
# of arckiejadulco.dev, so the default "/" applies.
6366
- name: Deploy to Cloudflare Pages

app/components/TheHeader.vue

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ const emit = defineEmits<{
66
const isScrolled = ref(false)
77
88
const navLinks = [
9-
{ label: 'About', href: '#about' },
10-
{ label: 'Skills', href: '#skills' },
11-
{ label: 'Projects', href: '#projects' },
12-
{ label: 'Experience', href: '#experience' },
9+
{ label: 'About', href: '/#about' },
10+
{ label: 'Skills', href: '/#skills' },
11+
{ label: 'Projects', href: '/#projects' },
12+
{ label: 'Experience', href: '/#experience' },
13+
{ label: 'Contact', href: '/#contact' },
1314
{ label: 'Blog', href: '/blog' },
14-
{ label: 'Contact', href: '#contact' },
1515
]
1616
1717
onMounted(() => {
@@ -48,22 +48,14 @@ onMounted(() => {
4848

4949
<!-- Desktop Navigation -->
5050
<div class="hidden items-center gap-4 md:flex lg:gap-8">
51-
<template v-for="link in navLinks" :key="link.label">
52-
<NuxtLink
53-
v-if="link.href.startsWith('/')"
54-
:to="link.href"
55-
class="link-underline text-sm font-medium tracking-wide text-[var(--color-text-secondary)] transition-colors hover:text-[var(--color-text-primary)]"
56-
>
57-
{{ link.label }}
58-
</NuxtLink>
59-
<a
60-
v-else
61-
:href="link.href"
62-
class="link-underline text-sm font-medium tracking-wide text-[var(--color-text-secondary)] transition-colors hover:text-[var(--color-text-primary)]"
63-
>
64-
{{ link.label }}
65-
</a>
66-
</template>
51+
<NuxtLink
52+
v-for="link in navLinks"
53+
:key="link.label"
54+
:to="link.href"
55+
class="link-underline text-sm font-medium tracking-wide text-[var(--color-text-secondary)] transition-colors hover:text-[var(--color-text-primary)]"
56+
>
57+
{{ link.label }}
58+
</NuxtLink>
6759
</div>
6860

6961
<!-- Mobile Menu Toggle -->

app/components/TheMobileMenu.vue

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ const emit = defineEmits<{
88
}>()
99
1010
const navLinks = [
11-
{ label: 'About', href: '#about' },
12-
{ label: 'Skills', href: '#skills' },
13-
{ label: 'Projects', href: '#projects' },
14-
{ label: 'Experience', href: '#experience' },
11+
{ label: 'About', href: '/#about' },
12+
{ label: 'Skills', href: '/#skills' },
13+
{ label: 'Projects', href: '/#projects' },
14+
{ label: 'Experience', href: '/#experience' },
1515
{ label: 'Blog', href: '/blog' },
16-
{ label: 'Contact', href: '#contact' },
16+
{ label: 'Contact', href: '/#contact' },
1717
]
1818
1919
// Handle escape key
@@ -70,26 +70,16 @@ watch(() => props.isOpen, (isOpen) => {
7070

7171
<!-- Navigation Links -->
7272
<nav class="mt-8 flex flex-1 flex-col items-center justify-center gap-5 sm:mt-12 sm:gap-8">
73-
<template v-for="(link, index) in navLinks" :key="link.label">
74-
<NuxtLink
75-
v-if="link.href.startsWith('/')"
76-
:to="link.href"
77-
class="font-display text-2xl font-semibold text-[var(--color-text-primary)] transition-colors hover:text-[var(--color-accent-primary)] sm:text-3xl"
78-
:style="{ animationDelay: `${index * 50}ms` }"
79-
@click="emit('close')"
80-
>
81-
{{ link.label }}
82-
</NuxtLink>
83-
<a
84-
v-else
85-
:href="link.href"
86-
class="font-display text-2xl font-semibold text-[var(--color-text-primary)] transition-colors hover:text-[var(--color-accent-primary)] sm:text-3xl"
87-
:style="{ animationDelay: `${index * 50}ms` }"
88-
@click="emit('close')"
89-
>
90-
{{ link.label }}
91-
</a>
92-
</template>
73+
<NuxtLink
74+
v-for="(link, index) in navLinks"
75+
:key="link.label"
76+
:to="link.href"
77+
class="font-display text-2xl font-semibold text-[var(--color-text-primary)] transition-colors hover:text-[var(--color-accent-primary)] sm:text-3xl"
78+
:style="{ animationDelay: `${index * 50}ms` }"
79+
@click="emit('close')"
80+
>
81+
{{ link.label }}
82+
</NuxtLink>
9383
</nav>
9484

9585
<!-- Social Links -->

content/blog/hello-world.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ There are several reasons why I decided to start writing:
1515
1. **Learning in public** - Writing forces me to organize my thoughts and understand concepts more deeply
1616
2. **Helping others** - If my experiences can help even one person, it's worth the effort
1717
3. **Building a portfolio** - A blog showcases not just coding skills but also communication abilities
18+
4. **Fun Brain Exercise** - I wanted to keep sharpening the saw for my creative side of the brain, if you know what I mean.
1819

1920
## What to Expect
2021

@@ -24,14 +25,15 @@ I'll be covering a variety of topics including:
2425
- **Tech Reviews** - My honest opinions on tools, frameworks, and technologies I use
2526
- **Career Insights** - Lessons learned from my journey as a developer
2627
- **Personal Projects** - Deep dives into side projects and what I learned building them
28+
- **Hobbies & Interests** - When I feel like sharing a more personal side of me
2729

2830
## My Commitment
2931

3032
I aim to publish at least one quality post per month. I believe in quality over quantity, so each post will be thoroughly researched and carefully written.
3133

3234
> "The best time to plant a tree was 20 years ago. The second best time is now." - Chinese Proverb
3335
34-
This quote resonates with me because I've been putting off starting a blog for years. But here we are, finally taking that first step!
36+
This quote resonates with me because I've been putting off starting a blog (even completing this website) for years. But here we are, finally taking that first giant leap!
3537

3638
## Let's Connect
3739

0 commit comments

Comments
 (0)