返回 Skill 列表
extension
分类: 开发与工程无需 API Key

portfolio-frontend-design

前端设计系统,适用于Pawel Lipowczan的个人项目组合(React 19 + Vite 7 + Tailwind CSS 3 + Framer Motion 12)。在创建新组件、页面、部分或修改UI时使用。包含色彩方案(绿色强调色 #00ff9d,深色背景 #0a0e1a)、字体(Inter/Poppins)、Framer Motion动画模式、悬停效果(放大至1.05倍+绿色光晕)、玻璃拟态卡片、渐变文字效果。确保与现有设计语言和项目架构保持一致。

person作者: jakexiaohubgithub

Portfolio Frontend Design System

Design system i wytyczne dla projektu portfolio Pawla Lipowczana. Zapewnia spojnosc wizualna przy tworzeniu nowych komponentow, stron i sekcji.

Quick Reference

Color Palette

| Token | Value | Usage | |-------|-------|-------| | Primary Accent | #00ff9d | Buttons, CTAs, hover states, highlights | | Accent Hover | #00ffa3 | Hover variants | | Cyan | #00b8ff | Gradient secondary color | | Background Dark | #0a0e1a | Main page background | | Background Darker | #050810 | Deep sections, cards | | Text Primary | #ffffff | Headings, important text | | Text Secondary | #e5e7eb | Body text, descriptions | | Text Muted | #9ca3af | Less important text |

Gradient Definitions

/* Primary text gradient */
background: linear-gradient(to right, #00ff9d, #00b8ff, #00ffa3);
-webkit-background-clip: text;
background-clip: text;
color: transparent;

/* Tailwind equivalent */
className="bg-gradient-to-r from-green-400 via-cyan-400 to-green-300 bg-clip-text text-transparent"

Typography

| Element | Font | Tailwind Classes | |---------|------|------------------| | Headings | Inter/Poppins | font-bold | | Body | Inter | font-normal | | Code | Fira Code | font-mono | | Hero Title | Inter | text-6xl md:text-8xl font-bold uppercase |

Core Tailwind Class Combinations

// Primary Button
className="px-6 py-3 bg-green-500 hover:bg-green-400 text-black font-semibold rounded-lg transition-all duration-300 hover:scale-105 hover:shadow-[0_0_30px_rgba(0,255,157,0.3)]"

// Secondary/Outline Button
className="px-6 py-3 border border-green-500 text-green-500 hover:bg-green-500/10 rounded-lg transition-all duration-300"

// Glassmorphism Card
className="bg-white/5 backdrop-blur-sm border border-white/10 rounded-xl p-6 hover:border-green-500/30 transition-all duration-300"

// Section Container
className="relative min-h-screen py-20 px-4 md:px-8 lg:px-16"

// Gradient Text
className="bg-gradient-to-r from-green-400 via-cyan-400 to-green-300 bg-clip-text text-transparent"

Component Creation Workflow

  1. Determine component type - Section (homepage), Page (route), or UI component
  2. Copy appropriate template from assets/templates/
  3. Apply design tokens from references/design-tokens.md
  4. Add animations following references/animation-patterns.md
  5. Verify accessibility using references/accessibility-checklist.md
  6. Place in correct directory (see Integration section)

Design Principles

Visual Identity

Portfolio uzywa ciemnego motywu z zielonymi/cyan akcentami, tworzac nowoczesna, techniczna estetykę:

  • Dark theme only - Ciemne tla (#0a0e1a, #050810) z jasnym tekstem
  • Green/Cyan accents - Wszystkie interaktywne elementy uzywaja zielonego (#00ff9d)
  • Gradient effects - Naglowki z gradient text, dekoracyjne elementy
  • Glassmorphism - Karty z backdrop-blur i polprzezroczystymi tlami
  • Network/Tech aesthetic - Canvas particle background, geometric patterns

Hover & Interaction Effects

Wszystkie interaktywne elementy musza miec efekty hover:

// Standard card hover - lift + glow
whileHover={{ y: -10 }}
className="hover:shadow-[0_0_30px_rgba(0,255,157,0.15)] hover:border-green-500/30"

// Button hover - scale + glow
className="hover:scale-105 hover:shadow-[0_0_30px_rgba(0,255,157,0.3)]"

// Link hover - color change
className="hover:text-green-400 transition-colors"

// Image hover - zoom
className="group-hover:scale-105 transition-transform duration-500"

Animation Timing

| Type | Duration | Easing | |------|----------|--------| | Hover transitions | 300ms | ease | | Page transitions | 500ms | easeOut | | Stagger children | 100ms delay | - | | Entry animations | 600ms | easeOut |

Component Patterns

Section Structure

Kazda sekcja strony glownej powinna miec:

<section
  id="section-name"  // dla smooth scroll
  className="relative min-h-screen py-20 px-4 md:px-8 lg:px-16"
>
  {/* Decorative background blurs */}
  <div className="absolute inset-0 overflow-hidden pointer-events-none">
    <div className="absolute top-1/4 -left-20 w-72 h-72 bg-green-500/10 rounded-full blur-3xl" />
  </div>

  <div className="relative max-w-7xl mx-auto">
    {/* Section header */}
    <motion.div className="text-center mb-16">
      <h2 className="text-4xl md:text-5xl font-bold">
        <span className="bg-gradient-to-r from-green-400 via-cyan-400 to-green-300 bg-clip-text text-transparent">
          Section Title
        </span>
      </h2>
      <p className="text-gray-400 text-lg mt-4">Description</p>
    </motion.div>

    {/* Content grid */}
    <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
      {/* Items */}
    </div>
  </div>
</section>

Card Component

Karty uzywaja glassmorphism z hover effects:

<motion.div
  whileHover={{ y: -10 }}
  className="
    bg-white/5 backdrop-blur-sm
    border border-white/10
    rounded-xl overflow-hidden
    transition-all duration-300
    hover:border-green-500/30
    hover:shadow-[0_0_30px_rgba(0,255,157,0.15)]
  "
>
  <img className="w-full aspect-video object-cover" />
  <div className="p-6">
    <h3 className="text-xl font-semibold text-white group-hover:text-green-400">
      Title
    </h3>
    <p className="text-gray-400 mt-2">Description</p>
    {/* Tags */}
    <div className="flex gap-2 mt-4">
      <span className="px-2 py-1 text-xs bg-green-500/10 text-green-400 rounded-full border border-green-500/20">
        Tag
      </span>
    </div>
  </div>
</motion.div>

Navigation

Sticky header z backdrop blur:

<header className="
  fixed top-0 left-0 right-0 z-50
  bg-[#0a0e1a]/80 backdrop-blur-md
  border-b border-white/5
">
  <nav className="max-w-7xl mx-auto px-4 py-4 flex items-center justify-between">
    {/* Logo */}
    {/* Desktop menu */}
    {/* Mobile hamburger */}
  </nav>
</header>

Buttons

// Primary CTA
<button className="
  px-6 py-3 bg-green-500 hover:bg-green-400
  text-black font-semibold rounded-lg
  transition-all duration-300
  hover:scale-105 hover:shadow-[0_0_30px_rgba(0,255,157,0.3)]
">
  Primary Action
</button>

// Secondary/Outline
<button className="
  px-6 py-3 border border-green-500 text-green-500
  hover:bg-green-500/10 rounded-lg
  transition-all duration-300
">
  Secondary Action
</button>

// Ghost/Link
<a className="text-gray-400 hover:text-green-400 transition-colors">
  Link Text
</a>

Integration with Architecture

Directory Structure

Place components in correct directories:

| Type | Directory | Example | |------|-----------|---------| | Layout | src/components/layout/ | Navigation, Footer, Layout | | Sections | src/components/sections/ | Hero, About, Projects, Skills, Contact | | UI | src/components/ui/ | CookieBanner, Breadcrumbs, Card | | Animations | src/components/animations/ | NetworkBackground | | SEO | src/components/seo/ | SEO, StructuredData | | Pages | src/pages/ | Home, Blog, BlogPostPage |

Required Imports

// Animation
import { motion } from 'framer-motion';

// SEO (for pages)
import { Helmet } from 'react-helmet-async';

// Routing
import { Link, useNavigate } from 'react-router-dom';

// Icons
import { FaGithub, FaLinkedin, FaTwitter } from 'react-icons/fa';

// Constants
import { SITE_CONFIG } from '../utils/constants';

SEO Requirements

Kazda nowa strona musi miec:

<Helmet>
  <title>Page Title - {SITE_CONFIG.name}</title>
  <meta name="description" content="..." />
  <meta property="og:title" content="..." />
  <meta property="og:description" content="..." />
  <meta property="og:image" content={`${SITE_CONFIG.url}/images/og/page.webp`} />
  <link rel="canonical" href={`${SITE_CONFIG.url}/page-slug`} />
</Helmet>

Nowe routes musza byc dodane do:

  • src/App.jsx - routing
  • scripts/prerender.mjs - prerendering dla SEO
  • public/sitemap.xml - sitemap

Resources

References

Szczegolowe specyfikacje znajduja sie w:

Templates

Gotowe szablony do kopiowania:

Project Documentation

Pelna dokumentacja projektu:

  • docs/portfolio/SRS.md - Specyfikacja techniczna
  • docs/portfolio/PRD.md - Wymagania produktowe
  • docs/portfolio/blog/BLOG_WORKFLOW.md - Workflow dla blogow

Related Skills

  • portfolio-code-review - Code review checklist dla portfolio