- Introduced DrawLine component for drawing animations. - Added LazyRevealImage component for lazy loading images with reveal animations. - Implemented TextDiffuseReveal for animated text reveals with staggered effects. - Created TopProgressBar for a dynamic loading indicator. - Added PointCloud mock for testing animations. - Developed useReducedMotion hook to handle user preferences for reduced motion. - Centralized animation configurations in config.ts for easier management. - Defined animation variants in variants.ts for consistent animation effects. - Established AnimationProvider to supply global animation settings. - Created tests for AnimationProvider and useReducedMotion hook. - Added SVG assets for branding and UI elements. - Documented frontend review plan and hero circuit board animation plan.
8.0 KiB
Implementation Plan: Site Improvements - Footer & Companies
Overview
This implementation adds a complete footer component with contact information and social links, an animated company logos banner with infinite scroll, reorganizes the Experience section into Software/Hardware categories, and standardizes spacing across the site. All components follow the existing minimalist design system using Monument Extended typography, #ccff00 accent color, and Framer Motion animations with reduced motion support.
Tasks
-
1. Set up component structure and data models
- Create Footer.tsx component file
- Create CompanyLogos.tsx component file
- Define TypeScript interfaces for SocialLink and CompanyLogo
- Set up component exports
- Requirements: 2.1, 2.2, 3.1
-
2. Implement Footer component
-
[~] 2.1 Create Footer component with layout structure
- Implement three-column grid layout (desktop) and responsive stacks (tablet/mobile)
- Add contact information section with email
- Add social links section with GitHub, LinkedIn, and other platforms
- Add copyright section with dynamic current year
- Apply Monument Extended typography and minimalist styling
- Use spacing tokens (py-sp-12 px-sp-16 desktop, py-sp-8 px-sp-6 mobile)
- Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
-
2.2 Write property test for Footer social links
- Property 2: Social Links Open in New Tab
- Validates: Requirements 2.7
-
2.3 Write property test for Footer ARIA labels
- Property 9: ARIA Labels for Links
- Validates: Requirements 6.1
-
2.4 Write property test for Footer responsive layout
- Property 3: Responsive Component Layout
- Validates: Requirements 2.6
-
2.5 Write unit tests for Footer component
- Test contact information rendering
- Test social links with correct attributes
- Test current year in copyright
- Test responsive layout changes
- Requirements: 2.1, 2.2, 2.3, 2.6, 2.7
-
-
3. Implement CompanyLogos component
-
[~] 3.1 Create CompanyLogos component with animation
- Define company logos array (Apolo Energia, Julia Beauty Lashes, Innovo, TeraByteShop, Pichau)
- Implement infinite scroll animation using Framer Motion
- Duplicate logo array for seamless loop effect
- Configure animation with 30-second duration and linear easing
- Apply grayscale filter with hover effect
- Use spacing tokens (py-sp-8, gap-sp-12)
- Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.7, 3.8
-
[~] 3.2 Add reduced motion support to CompanyLogos
- Implement useReducedMotion hook integration
- Create static grid fallback for reduced motion preference
- Ensure smooth transition between animated and static states
- Requirements: 3.6, 6.3
-
3.3 Write property test for CompanyLogos reduced motion
- Property 4: Reduced Motion Respect
- Validates: Requirements 3.6, 6.3
-
3.4 Write property test for CompanyLogos alt text
- Property 10: Alt Text for Images
- Validates: Requirements 6.2
-
3.5 Write unit tests for CompanyLogos component
- Test all five logos render correctly
- Test animation configuration
- Test reduced motion fallback
- Test missing logo image handling
- Test responsive layout
- Requirements: 3.1, 3.3, 3.4, 3.6, 3.7
-
-
[~] 4. Checkpoint - Ensure all tests pass
- Ensure all tests pass, ask the user if questions arise.
-
5. Refactor Experience component with categorization
-
[~] 5.1 Add category filtering and rendering logic
- Filter experiences by type field (Software/Hardware)
- Create category header components with slash accent
- Render Software category section with filtered experiences
- Render Hardware category section with filtered experiences
- Maintain chronological ordering within each category
- Apply consistent spacing (mb-sp-12 between categories)
- Hide category headers if no entries exist
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6
-
5.2 Write property test for Experience categorization
- Property 5: Experience Categorization
- Validates: Requirements 4.1
-
5.3 Write property test for chronological ordering
- Property 6: Chronological Ordering Within Categories
- Validates: Requirements 4.3
-
5.4 Write property test for semantic heading hierarchy
- Property 11: Semantic Heading Hierarchy
- Validates: Requirements 6.4
-
[~] 5.5 Write unit tests for Experience refactor
- Test Software/Hardware filtering
- Test category headers render correctly
- Test chronological order within categories
- Test empty category handling
- Test responsive mobile layout
- Requirements: 4.1, 4.2, 4.3, 4.5, 4.6
-
-
6. Standardize spacing system across site
-
[~] 6.1 Update Section component and all major sections
- Apply consistent spacing tokens to all section containers
- Update Hero section spacing (py-sp-20 px-sp-16 desktop, py-sp-16 px-sp-6 mobile)
- Update About section spacing
- Update Projects section spacing
- Update Experience section spacing
- Add responsive modifiers for tablet and mobile breakpoints
- Requirements: 1.1, 1.2, 1.3, 1.4
-
[~] 6.2 Write property test for spacing consistency
- Property 1: Consistent Spacing System
- Validates: Requirements 1.1, 1.2, 1.3, 1.4
-
[~] 6.3 Write unit tests for spacing updates
- Test section padding values
- Test responsive spacing changes
- Test spacing between major sections
- Requirements: 1.1, 1.2, 1.3, 1.4
-
-
7. Apply design system consistency
-
[~] 7.1 Add Monument Extended typography to new components
- Verify font-display class on all heading elements
- Verify Footer headings use Monument Extended
- Verify Experience category headers use Monument Extended
- Requirements: 2.4, 4.2, 5.4
-
[~] 7.2 Add slash color accents to new components
- Apply var(--slash) to Footer accent elements
- Apply var(--slash) to CompanyLogos decorative elements
- Apply var(--slash) to Experience category separators
- Requirements: 5.1, 5.2, 5.3
-
[~] 7.3 Write property test for Monument Extended typography
- Property 7: Monument Extended Typography
- Validates: Requirements 2.4, 4.2, 5.4
-
[~] 7.4 Write property test for slash color accents
- Property 8: Slash Color Accents
- Validates: Requirements 5.1, 5.2
-
[~] 7.5 Write unit tests for design consistency
- Test font-display class application
- Test slash color usage
- Test minimalist styling consistency
- Requirements: 5.1, 5.2, 5.4, 5.5
-
-
8. Integrate components into page layout
-
[~] 8.1 Update page.tsx with new components
- Import Footer and CompanyLogos components
- Position CompanyLogos after Header section
- Position Footer at bottom of page
- Verify spacing between all sections
- Test full page scroll behavior
- Requirements: 3.2
-
[~] 8.2 Write property test for keyboard navigation
- Property 12: Keyboard Navigation Support
- Validates: Requirements 6.5
-
[~] 8.3 Write integration tests for page layout
- Test CompanyLogos position after Header
- Test Footer position at page bottom
- Test spacing consistency across all sections
- Test keyboard navigation through all components
- Requirements: 3.2, 6.5
-
-
[~] 9. Final checkpoint - Ensure all tests pass
- Ensure all tests pass, ask the user if questions arise.
Notes
- Tasks marked with
*are optional and can be skipped for faster MVP - Each task references specific requirements for traceability
- Checkpoints ensure incremental validation
- Property tests validate universal correctness properties across all inputs
- Unit tests validate specific examples and edge cases
- All components use Next.js 15, React 19, TypeScript, Tailwind CSS 4, and Framer Motion
- Reduced motion support is critical for accessibility compliance