- Project Overview
- Technology Stack
- Project Structure
- Design System
- Components
- Pages and Routing
- Content Management
- State Management
- Animation and Interactions
- Development Workflow
- Best Practices
- Setup and Deployment
Project Name: Molki Design
Description: A professional website for Molki Design, a design company based in GdaΕsk, Poland, operating in the Tri-City market since 2019. The website showcases their creative solutions, projects, team, and services.
Author: Patryk Smakosz
Website: https://molki-design-2025.netlify.app
This project is built as a modern, responsive website with a focus on visual appeal, smooth animations, and user experience. It utilizes Nuxt 3 as the framework, with Tailwind CSS for styling, custom SCSS for additional styling needs, Nuxt Content for content management, and Nuxt Studio as the CMS.
- Nuxt 3: Vue.js framework for building modern web applications
- Vue 3: Progressive JavaScript framework for building user interfaces
- TypeScript: Typed superset of JavaScript for improved developer experience
- Tailwind CSS: Utility-first CSS framework for rapid UI development
- SCSS: CSS preprocessor for custom styling
- Nuxt Content: Content management system for Nuxt
- Nuxt Studio: Headless CMS for managing content
- GSAP (GreenSock Animation Platform): For advanced animations and transitions
- Including premium plugins: MorphSVG, SplitText, ScrollSmoother
- Pinia: State management for Vue applications
- Swiper: Touch slider for mobile-friendly carousels
- HubSpot Integration: For form handling and customer relationship management
- Prettier: Code formatter
- ESLint: Linting utility
- Nuxt Devtools: Development tools for Nuxt
- PostCSS: Tool for transforming CSS with JavaScript
- Autoprefixer: Plugin to parse CSS and add vendor prefixes
molki-nuxt/
βββ .nuxt/ # Nuxt build directory
βββ .output/ # Nuxt output directory
βββ assets/ # Static assets
β βββ fonts/ # Custom fonts
β βββ img/ # Images
β βββ scss/ # SCSS files
β β βββ components/ # Component-specific styles
β β βββ colors.scss # Color variables
β β βββ layout.scss # Layout styles
β β βββ main.scss # Main SCSS file
β β βββ settings.scss # SCSS variables and settings
β β βββ typography.scss # Typography styles
β βββ video/ # Video assets
βββ components/ # Vue components
β βββ content/ # Content-specific components
βββ composables/ # Vue composables
βββ content/ # Content files (Markdown)
β βββ projects/ # Project content files
βββ layouts/ # Layout components
βββ pages/ # Page components
βββ plugins/ # Nuxt plugins
βββ public/ # Public static assets
βββ server/ # Server-side code
βββ stores/ # Pinia stores
βββ types/ # TypeScript type definitions
colors: {
primary: {
DEFAULT: '#B76246',
light: '#D0835F',
dark: '#A65339',
},
secondary: {
DEFAULT: '#3E5777',
dark: '#262222',
},
neutral: {
100: '#FFFFFF',
200: '#F9F5F2',
300: '#F7EEE6',
400: '#E6E4DF',
500: '#D9D9D9',
600: '#363434',
},
text: {
primary: '#503D32',
},
}- Primary Font: Montserrat (sans-serif)
- Secondary Font: Spartan (sans-serif)
HeaderComponent.vue: Main navigation headerFooterComponent.vue: Site footerPreFooter.vue: Pre-footer sectionGSAPScrollSmoother.vue: Smooth scrolling wrapper
Hero.vue: Generic hero componentHeroBusiness.vue: Business-specific heroHeroInterior.vue: Interior design heroHeroProjects.vue: Projects showcase heroHeroTeam.vue: Team showcase hero
Logo.vue: Site logoLoader.vue: Page loading animationButtonExamples.vue: Button componentsFrameCorner.vue: Decorative frameIconBlock.vue: Icon with text block
ProjectGrid.vue&ProjectGridItem.vue: Project displaySquareGrid.vue&SquareGridItem.vue: Generic gridTeamMember.vue: Team member cardFeature.vue: Feature highlightTitleSection.vue: Section titles
ContactForm.vue: Contact formHubspotForm.vue: HubSpot integration
Content is managed through Nuxt Content and Nuxt Studio, with content files stored in Markdown format in the content/ directory.
projects: {
title: string,
subtitle: string,
slug: string,
location: string,
year: string,
number: string,
cover: string,
images: string[],
ctaText?: string,
ctaLink?: string,
}The project uses Pinia for state management with the following stores:
loaderStore: Application loading statemenuStore: Navigation menu state
GSAP is used for animations with premium plugins:
- MorphSVG: SVG shape morphing
- SplitText: Text animation effects
- ScrollSmoother: Smooth scrolling
- Use TypeScript for type safety
- Follow Vue 3 Composition API patterns
- Use Prettier for consistent formatting
- Create reusable components
- Use props for configuration
- Use slots for composition
- Document component usage
- Lazy load images and components
- Optimize assets
- Implement proper caching
- Use semantic HTML
- Provide alt text for images
- Ensure proper color contrast
- Support keyboard navigation
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install# npm
npm run dev
# pnpm
pnpm run dev
# yarn
yarn dev# Build
npm run build
# Preview
npm run previewRequired environment variables:
HUBSPOT_PORTAL_ID: HubSpot portal ID for form integration
For more information about deployment, visit the Nuxt deployment documentation.