diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 748fb5c..106d52d 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -2,7 +2,7 @@ # # To get started with Nuxt see: https://nuxtjs.org/docs/get-started/installation # -name: Deploy Nuxt site to Pages +name: "[DEV] Deploy Nuxt site to GitHub Pages" on: # Runs on pushes targeting the default branch diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index 00992c6..162230f 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -2,7 +2,7 @@ # # To get started with Nuxt see: https://nuxtjs.org/docs/get-started/installation # -name: Deploy Nuxt site to Pages +name: "[PROD] Deploy Nuxt site to GitHub Pages" on: # Runs on pushes targeting the default branch diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..de6e88a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,306 @@ +# Changelog + +All notable changes to the Arckie Jadulco Portfolio project will be documented in this file. + +--- + +## [Unreleased] + +### Phase 1: Design System Foundation + +#### Added +- **`app/assets/css/main.css`** - Core design system with Tailwind CSS 4 + - Custom color palette (Soft Muted Dark theme) + - `--color-bg-primary: #1a1a1f` (deep charcoal) + - `--color-bg-secondary: #242429` (cards/sections) + - `--color-bg-tertiary: #2d2d33` (hover states) + - `--color-text-primary: #e8e6e3` (warm off-white) + - `--color-text-secondary: #9d9a95` (muted gray) + - `--color-text-muted: #6b6965` (subtle gray) + - `--color-accent-primary: #c9a87c` (warm gold/amber) + - `--color-accent-secondary: #8fa3a8` (soft sage/teal) + - `--color-border: #3a3a40` (subtle borders) + - Font families: Playfair Display, Source Sans 3, JetBrains Mono + - Custom animations: fade-in, slide-up, float, typing, blink + - Custom box shadows: soft, glow + - Base layer styles (scrollbar, selection, focus states) + - Component utilities: container-narrow, heading-display, heading-section, text-body, btn-primary, btn-secondary, card, link-underline, grain-overlay, reveal classes + - Page transition CSS + +- **`app/app.config.ts`** - Nuxt UI v4 theme configuration + - Primary color set to amber + - Secondary color set to slate + - Neutral color set to stone + +#### Modified +- **`nuxt.config.ts`** + - Added CSS file to `css` array + - Added `colorMode` config (dark mode default) + - Added `@nuxtjs/google-fonts` module + - Configured Google Fonts: Playfair Display, Source Sans 3, JetBrains Mono + +#### Dependencies Added +- `@nuxtjs/google-fonts` - Google Fonts integration + +--- + +### Phase 2: Layout and Navigation + +#### Added +- **`app/layouts/default.vue`** - Default layout wrapper + - Grain texture overlay (decorative) + - Ambient background glow with radial gradients + - Skip-to-content accessibility link + - Header, mobile menu, and footer component integration + - Mobile menu state management + +- **`app/components/TheHeader.vue`** - Fixed header component + - Logo/brand mark ("AJ." with accent dot) + - Desktop navigation with 6 links (About, Skills, Projects, Experience, Blog, Contact) + - Mobile menu toggle button (hamburger icon) + - Scroll detection for background blur effect + - Hover animations on nav links (underline effect) + +- **`app/components/TheMobileMenu.vue`** - Full-screen mobile menu + - Teleported to body for proper stacking + - Backdrop blur and dark overlay + - Close button (X icon) + - Navigation links with staggered animation + - Keyboard accessibility (Escape to close) + - Body scroll lock when open + - Social links section + +- **`app/components/TheFooter.vue`** - Footer component + - Border-top separator + - Dynamic copyright year + - Social links with icons (GitHub, LinkedIn, Twitter) + - Hover color transitions + +#### Modified +- **`app/app.vue`** - Wrapped NuxtPage with NuxtLayout + +--- + +### Phase 3: Reusable UI Components + +#### Added +- **`app/components/ui/SkillCard.vue`** - Skill display card + - Props: name, icon, level (expert/advanced/intermediate) + - 3-bar level indicator + - Hover border and shadow effects + +- **`app/components/ui/ProjectCard.vue`** - Project showcase card + - Props: title, description, tags[], image, demoUrl, repoUrl, featured + - Aspect-ratio image area with placeholder + - Hover overlay with demo/repo link buttons + - "Featured" badge for highlighted projects + - Spans 2 columns when featured + +- **`app/components/ui/TimelineItem.vue`** - Experience timeline entry + - Props: title, company, period, description, technologies[], isLast + - Vertical timeline with connecting line + - Dot indicator with accent border + - Period badge and technology tags + +- **`app/components/ui/BlogCard.vue`** - Blog post preview card + - Props: title, description, date, slug, readingTime, tags[] + - Formatted date display + - 2-line clamped description + - Tags with # prefix + - "Read article" indicator on hover + +--- + +### Phase 4: Home Page Sections + +#### Added +- **`app/components/sections/HeroSection.vue`** - Full-height hero + - Floating background blobs with animation + - Typing animation cycling through roles + - CTA buttons (View My Work, Get In Touch) + - Animated scroll indicator + +- **`app/components/sections/AboutSection.vue`** - About section + - 2-column grid (image | content) + - Floating code snippet card + - Bio paragraphs + - Stats grid (Years, Projects, Clients) + +- **`app/components/sections/SkillsSection.vue`** - Skills section + - 3-column category grid (Frontend, Backend, DevOps) + - Uses SkillCard components + - Categorized skill listing + +- **`app/components/sections/ProjectsSection.vue`** - Projects section + - 2-column project grid + - 6 placeholder projects (2 featured) + - Uses ProjectCard components + - "View More on GitHub" button + +- **`app/components/sections/ExperienceSection.vue`** - Experience section + - Sticky header with download resume button + - Timeline layout with 4 entries + - Uses TimelineItem components + +- **`app/components/sections/ContactSection.vue`** - Contact section + - Contact info cards (Email, Location, Availability) + - Contact form with validation + - Success/error states + - Social links reminder + +- **`app/pages/index.vue`** - Main portfolio page + - Assembles all section components + - SEO meta tags configured + +#### Removed +- **`app/pages/[...slug].vue`** - Removed catch-all route + +--- + +### Phase 5: Blog System + +#### Added +- **`app/pages/blog/index.vue`** - Blog listing page + - Back to home link + - Page header with description + - Posts grid using BlogCard components + - Empty state for no posts + +- **`app/pages/blog/[slug].vue`** - Blog post detail page + - Dynamic routing by slug + - 404 handling for missing posts + - Post header with meta, title, description, tags + - Prose styling for markdown content + - SEO meta tags from post data + +- **`content/blog/hello-world.md`** - Sample blog post + - Introduction post with personal story + - Demonstrates markdown features + +- **`content/blog/building-with-nuxt-4.md`** - Technical blog post + - Tutorial-style content + - Code examples and best practices + +#### Modified +- **`content.config.ts`** - Added blog collection + - Schema with title, description, date, tags, readingTime, image + - Source path set to `blog/**` + +#### Removed +- **`content/index.md`** - Removed demo content +- **`content/about.md`** - Removed demo content +- **`app/components/Alert.vue`** - Removed demo component +- **`app/components/Counter.vue`** - Removed demo component + +--- + +### Phase 6: Polish and Optimization + +#### Added +- **`app/plugins/scroll-reveal.client.ts`** - Scroll reveal animations + - IntersectionObserver-based reveal + - Adds `.is-visible` class on scroll + - Re-observes on route changes + +- **`public/resume.pdf`** - Placeholder resume file + +#### Modified +- **`nuxt.config.ts`** + - Added page transitions (`name: 'page'`, `mode: 'out-in'`) + - Added SEO meta tags (title, description, theme-color) + - Added Open Graph meta tags + - Added Twitter card meta tags + - Set HTML lang attribute to 'en' + - Added favicon link + +--- + +### Phase 7: Tailwind CSS 4 Preflight Fix + +Tailwind CSS 4 uses native CSS cascade layers. The `@layer components` block has lower cascade priority than the utilities layer, so preflight resets (`color: inherit`, `padding: 0`, `border: none`, `font-size: inherit`, `font-weight: inherit`) were overriding custom component classes on ``, `