Skip to content

feat: portfolio overhaul — copy rewrite, mobile category, e2e suite, achievements (v1.1.0)#1

Merged
moisesnetouou merged 12 commits into
mainfrom
chore/claude-dx-setup
Apr 26, 2026
Merged

feat: portfolio overhaul — copy rewrite, mobile category, e2e suite, achievements (v1.1.0)#1
moisesnetouou merged 12 commits into
mainfrom
chore/claude-dx-setup

Conversation

@moisesnetouou

@moisesnetouou moisesnetouou commented Apr 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • DX setup with Claude Code + tv() migration across all sections
  • Shared SkillDialog, MotionConfig with reduced motion, centralized skill-categories
  • Mobile as new skills category + expanded list (React Native, Expo, NativeWind, Storybook, Vite)
  • Copy rewrite (Hero/About/Timeline/Experience), clickable tech badges in modals, scroll fix in +N dialog
  • Playwright e2e suite with 27 tests covering Hero, About, Timeline, Skills, Contact, Navigation, SEO and Achievements (including the secret platinum achievement)
  • Version bumped to 1.1.0

What changed

Architecture

  • Extracted: SkillDialog, ExperienceDialog, ExperienceSkillsDialog, TimelineCard, TechBadges, render-company
  • Hooks: usePortfolioActions, useScrollAchievement
  • Data layer: src/data/skill-categories.ts (config + styles + types)
  • Dead code removed (projects/certifications/experience stub sections, Stitches duplicate, orphan slots)

UX/Content

  • Tagline filled in + title reformatted
  • Summary now split into 4 visually separated paragraphs
  • Experience descriptions rewritten with active verbs, keeping narrative density
  • Clickable tech badges open SkillDialog (both timeline and skills dialogs)
  • Mobile category with Smartphone icon
  • 'Claude Code' skill renamed to 'Claude' with expanded description (Code, Design, MCPs)
  • Bio mentions recent project shipped to production on day 4 (Stitch beta + Claude + Claude Design)

Accessibility

  • aria-disabled on skill buttons
  • MotionConfig reducedMotion=user respects OS preference
  • Dialog onOpenChange properly typed

Tests

  • playwright.config.ts: chromium + mobile, reducedMotion, webServer next start
  • e2e/tests/*.e2e.ts (8 files, 27 tests)
  • Coverage: rendering, dialogs, navigation, SEO, platinum achievement flow (secret) with 100% in panel
  • Scripts: e2e (build + test), e2e:ui, e2e:headed, e2e:dev (no build)

Version

  • package.json: 1.0.0 → 1.1.0

Test plan

  • npm run check passes with no errors
  • npm run build finishes in <10s
  • npm run e2e runs 27 tests in ~45s
  • Visual: scroll through all sections, open timeline modals, click tech badges, complete achievements
  • OG preview renders updated meta tags
  • Mobile viewport shows navbar + cards correctly

- Rename component.tsx -> index.tsx
- Rename component.styles.ts -> styles.ts
- Rename component.types.ts -> types.ts
- Update imports in all affected files
- Fix relative imports to use new paths
- Add cursor-pointer to buttons, links, and role=button in globals.css
- Remove manual cursor-pointer from individual component files
…tion

- add CLAUDE.md with stack, conventions, and project structure docs
- ignore .claude/ directory in git
- add tailwind-variants dependency
- decompose timeline into experience-dialog, skill-dialog, timeline-card, render-company, tech-badges components
- remove unused certifications, projects, experience stub files, and obrigado page
- update hero, about, skills, contact sections
…e skills data

- add MotionProvider + useReducedMotion hook for a11y-aware animations
- extract skill-dialog to shared component (was timeline-only)
- add skill-categories.ts data file, refactor skills section around it
- add usePortfolioActions and useScrollAchievement hooks
- reorganize icons.tsx, update achievements and portfolio data
…ation

- Remove skill-dialog styles duplicated in skills/styles.ts and
  timeline/styles.ts now that skill-dialog owns them
- Remove unused timeline layout styles (timelineLine, itemContainer, etc.)
- Fix onOpenChange on all three dialogs: only call onClose when
  closing, not on every state change
- Move soloIndex counter into buildRows so render fn is pure
- Deduplicate onSelectSkill inline handler to handleSkillClick
- Remove use-reduced-motion hook (framer-motion handles this natively)
- Self-clean scroll listener once achievement unlocked
- add Mobile category (React Native, Expo, NativeWind) with indigo styles
- add Vite and Storybook to Frontend & Frameworks
- add skill descriptions for React Native, Expo, NativeWind, Vite, Storybook
- refactor icons.tsx to use lucide-react + react-icons/si instead of devicons-react
- add react-icons dependency
…ech badges

- summary: string → string[] for multi-paragraph About section
- experience descriptions and impact rewritten first-person with specific metrics
- all experience tech lists expanded to reflect full actual stack used
- "Claude Code" renamed to "Claude" in data, icons, and skill-descriptions
- tech badges in ExperienceDialog open skill dialog when description exists
- fix dialog overflow: max-h + overflow-y-auto on expDialogBody and dialogContentSkill
- SEO meta descriptions updated to match new positioning
Wire up Playwright 1.59, config for Chromium + iPhone 14,
and tests for hero, about, skills, timeline, contact, nav,
SEO, and full achievements flow (including platinum unlock).

Excludes e2e/ from tsconfig app compilation.
@vercel

vercel Bot commented Apr 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
delta-code Ready Ready Preview, Comment Apr 26, 2026 0:40am

@moisesnetouou
moisesnetouou merged commit 192c8b9 into main Apr 26, 2026
2 checks passed
@moisesnetouou
moisesnetouou deleted the chore/claude-dx-setup branch April 26, 2026 13:23
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.

1 participant