# Contribution Guidelines — lukastitch.corneruniverse.com ## Project Overview **Purpose:** Portfolio and showcase website for Luka Stitch, a handmade plushie business. **Audience:** Potential customers interested in custom plushies, people browsing her work, and commission inquiries. **Primary Goals:** 1. Showcase plushie creations with beautiful imagery 2. Communicate the handmade, personal nature of the work 3. Direct commission inquiries to Etsy 4. Build brand personality and connection **Note:** This is NOT an e-commerce site. No direct purchases. Etsy handles transactions. --- ## Design Direction **Aesthetic:** Warm, cozy, handcrafted feel. The design should reflect the care and personality that goes into each plushie. Think craft fair booth, not corporate storefront. **Mood:** Friendly, approachable, whimsical but not childish. **Color Palette:** Soft, warm colors. Pastels or muted tones that complement plushie photography without competing. Define in `/src/styles/variables.css`. **Typography:** Friendly and readable. A slightly playful heading font paired with a clean body font. **Imagery:** Photography is central. The design should frame and highlight the plushie images, not distract from them. --- ## Technical Standards ### Vue 3 Conventions * Use Composition API with ` ``` ### Content Management **This is critical:** The site owner will want to add new plushies regularly. Make this easy. **Plushie Catalog (**`/src/content/plushies.js`): ```javascript export const plushies = [ { id: 'cozy-bear', name: 'Cozy Bear', image: '/images/plushies/cozy-bear.jpg', description: 'A huggable friend for cold nights.', size: '12 inches', available: false, etsyLink: null }, { id: 'sleepy-fox', name: 'Sleepy Fox', image: '/images/plushies/sleepy-fox.jpg', description: 'Always ready for a nap.', size: '10 inches', available: true, etsyLink: 'https://etsy.com/...' } ] ``` **Site Content (**`/src/content/site-data.js`): ```javascript export const hero = { title: "Luka Stitch", tagline: "Handmade plushies with love", description: "Each creation is one-of-a-kind, crafted with care." } export const about = { heading: "About", text: "...", image: "/images/about-photo.jpg" } export const contact = { heading: "Get in Touch", text: "Interested in a custom plushie? Reach out!", etsyLink: "https://etsy.com/shop/...", email: "hello@lukastitch.com" // or null if not wanted } ``` ### Styling **CSS Custom Properties (variables.css):** ```css :root { /* Colors */ --color-primary: #...; --color-secondary: #...; --color-background: #...; --color-text: #...; --color-accent: #...; /* Typography */ --font-heading: '...', sans-serif; --font-body: '...', sans-serif; /* Spacing */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 2rem; --space-xl: 4rem; /* Gallery */ --gallery-gap: 1rem; --card-radius: 8px; } ``` **Responsive Design:** * Mobile-first approach * Gallery should be responsive: 1 column mobile, 2 tablet, 3-4 desktop * Images should scale beautifully at all sizes --- ## Components to Build ### Layout * `AppHeader.vue` — Logo/name, simple navigation * `AppFooter.vue` — Social links, copyright ### Sections * `HeroSection.vue` — Brand name, tagline, featured image or plushie * `GallerySection.vue` — Grid of plushies from catalog * `AboutSection.vue` — The maker's story, photo * `ContactSection.vue` — How to reach out, Etsy link ### Common * `BaseButton.vue` — Primary and secondary variants * `PlushieCard.vue` — Image, name, description, availability badge, Etsy link * `SectionWrapper.vue` — Consistent section padding and max-width * `ImageLightbox.vue` — Optional: click to enlarge plushie photos --- ## Gallery & Image Handling **PlushieCard Component:** ```vue ``` **Gallery Grid:** ```css .gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--gallery-gap); } ``` **Image Guidelines:** * Consistent aspect ratio preferred (square or 4:3) * Optimize images before adding (compress, reasonable resolution) * Use descriptive filenames: `cozy-bear.jpg` not `IMG_3847.jpg` * Alt text should describe the plushie --- ## Adding New Plushies (Instructions for Site Owner) 1. Add the photo to `/public/images/plushies/` 2. Open `/src/content/plushies.js` 3. Add a new entry to the array: ```javascript { id: 'new-plushie-name', name: 'New Plushie Name', image: '/images/plushies/new-plushie-name.jpg', description: 'A short description.', size: '10 inches', available: true, etsyLink: 'https://etsy.com/listing/...' } ``` 4. Commit and push—the site auto-deploys --- ## Accessibility * Semantic HTML: `
`, `
`, `
`, `