Skip to content

Add professional portfolio landing page#1

Draft
Jacobcdsmith with Copilot wants to merge 2 commits into
mainfrom
copilot/add-portfolio-landing-page
Draft

Add professional portfolio landing page#1
Jacobcdsmith with Copilot wants to merge 2 commits into
mainfrom
copilot/add-portfolio-landing-page

Conversation

Copilot AI commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

Created a single-page portfolio site for GitHub Pages deployment.

Implementation

  • Single HTML file (487 lines) with embedded CSS for zero-dependency deployment
  • Responsive grid layouts with mobile-first breakpoints at 768px and 480px
  • Fixed navigation bar with anchor links to About, Skills, Projects, and Contact sections
  • Gradient hero section with CTA button and fade-in animations
  • Three-column skill cards (Frontend, Backend, Tools) that stack on mobile
  • Project showcase with emoji icons, descriptions, and technology tags
  • Contact links to GitHub profile, email, and LinkedIn

Visual Design

  • Modern gradient palette (dark blue #2c3e50 to bright blue #3498db)
  • Smooth hover transitions on cards and buttons
  • CSS animations using keyframe fadeInUp for progressive reveal
  • Professional typography with system font stack

Screenshots

Desktop - Hero & Navigation
Hero Section

Desktop - Skills Section
Skills Section

Desktop - Projects
Projects Section

Mobile View (375px)
Mobile View

Ready for GitHub Pages automatic deployment on merge.

Original prompt

a github personal portfolio primary landing page


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@coderabbitai

coderabbitai Bot commented Nov 18, 2025

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

Co-authored-by: Jacobcdsmith <88069592+Jacobcdsmith@users.noreply.github.com>
Copilot AI changed the title [WIP] Add primary landing page for personal portfolio Add professional portfolio landing page Nov 18, 2025
Copilot AI requested a review from Jacobcdsmith November 18, 2025 04:42
Jacobcdsmith pushed a commit that referenced this pull request May 2, 2026
Rebuilt jacobcdsmith.github.io from a terminal-styled personal site into a
modern public-facing site for clients, peers, and the general public.

Pages
- New: Home (editorial hero with crimson italic accent, three-pillar card,
  testimonials, CTA), Services (offerings + pricing/FAQ).
- Refactored: About (bio + CV), Projects, Experience (+ CV), Contact,
  BlogList (search, category filters, featured), BlogPost (reading time,
  tags, social share, related posts).
- /skills now redirects to /about; old Skills page deleted.

Components & libs
- Added: SEO, Button, Section, Tag, Quote, FAQ, NewsletterForm, CVDownload,
  ThemeToggle, SocialShare, RelatedPosts, CTABanner.
- Added lib/analytics (Plausible wrapper) and lib/structured-data.
- Added data layer: profile, services, testimonials, faq, posts (markdown
  loaded synchronously via import.meta.glob).

Theming & visuals
- Full light/dark mode via [data-theme] CSS custom properties.
- Inline pre-paint theme script in index.html <head> AND in every
  pre-rendered route shell — no flash for light-pref users.
- Inter / Fraunces / JetBrains Mono type system.
- ParticleCanvas now lazy, quieter, skipped on small screens / reduced-motion.

SEO / AEO / GEO
- Per-route SEO via react-helmet-async.
- JSON-LD: Person, ProfessionalService, WebSite, Blog, BlogPosting,
  BreadcrumbList.
- Build script pre-renders crawler-visible HTML for ALL routes (Home, About,
  Services, Projects, Experience, Contact, Blog, every blog post) with full
  metadata, OG tags, JSON-LD inline.
- Generates sitemap.xml, robots.txt, rss.xml, 404.html (GH Pages SPA),
  llms.txt, llms-full.txt.
- Plausible analytics + outbound link tracking.
- Hardened spaAssetTags() to tolerate Vite attribute-order changes and fail
  loudly if expected tags can't be extracted.

Other
- Placeholder valid PDF CV, favicon, OG card, llms.txt.
- Updated replit.md with new structure, routes, and known placeholders.

Verification
- npm run build emits all expected artifacts cleanly.
- Verified pre-paint script lands BEFORE the CSS link in built HTML.
- e2e test suite (testing skill) passed across all routes, theme toggle,
  blog search/filter, and 404.
- architect code review run twice; second-pass critical (no-flash theming)
  fixed by moving theme bootstrap inline.

Deviations from plan
- Newsletter is mailto:-based (no provider chosen) — captured as follow-up.
- CV PDF and testimonials are placeholders — captured as follow-up.
- Plausible domain is a placeholder — captured as follow-up.
Jacobcdsmith pushed a commit that referenced this pull request May 2, 2026
Round-3 architect blockers resolved:
- Created public/avatar.svg (initials JS in crimson gradient circle).
  BlogPost.jsx byline avatar image now resolves (was 404).
- Refactored visibleBlock() in scripts/generate-blog-pages.mjs to emit an
  explicit TL;DR <aside> for crawlers/LLMs. All 7 pre-rendered routes
  (Home, About, Services, Projects, Experience, Contact, Blog) now ship
  a crawler-visible TL;DR answer block in dist/<route>/index.html.

Also re-applied (write had not persisted in prior round):
- src/data/posts.js: added category field, allCategories() export, and
  category-weighted scoring in getRelatedPosts.

Earlier round-3 fixes still in place: persistent "Work with me" CTA in
header (Contact moved to mobile-only nav link), Home hero CTAs are
"Work with me" / "Read the writing" / "Download CV", TL;DR Sections on
About/Projects/Experience/Contact/Blog, blog category-filter UI plus
tag-filter UI, category eyebrow on post cards, author byline pill with
avatar linking to /about.

Build: npm run build emits 16 artifacts cleanly. Theme bootstrap script
inlined in <head> before CSS in both index.html and route shells (no FOUC).
e2e Playwright pass and architect re-evaluation: PASS, ready for hand-off.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants