GitHunt
CA

candytale55/learn-ui-scenic-forests

๐ŸŒฒ Multi-page bilingual cabin rental site. Built with Vanilla JS, Vite, and GSAP following a strict functional-semantic CSS philosophy. Refactor of legacy tutorial project.

๐Ÿ•๏ธ Scenic Forests

A modern, bilingual (EN/ES) cabin rental website built with Vite, featuring professional UI animations and accessibility-first design.

๐ŸŒŸ Project Overview

This project is based on the final project tutorial from Scrimba's Learn UI Design course. While the original tutorial covered the Home and Cabins pages, I significantly expanded and refactored the project to include:

  • New Pages: FAQ and Reservations pages with custom functionality
  • Bilingual Support: Full English and Spanish translations with symmetrical directory structure (/en/ and /es/)
  • Modern Tooling: Vite-based build system with HMR and optimized production builds
  • Professional Animations: GSAP-powered entrance animations with staggered timing
  • Accessibility: Native HTML5 accordion, proper ARIA labels, and keyboard navigation support

Completed: December 2025

๐Ÿš€ Live Demo

Visit the live site: https://scenic-forests-refactor.netlify.app/en/index.html

โœจ Key Features

Original Tutorial Content (Refactored)

  • Home page with hero section and cabin showcase
  • Cabins page with detailed cabin cards
  • Responsive navigation with mobile hamburger menu
  • Mobile-first CSS using semantic-functional hybrid approach

New Additions

  • FAQ Page: Native HTML5 <details>/<summary> accordion with booking, amenities, and location information
  • Reservations Page: Client-side form with date validation and success modal feedback
  • Bilingual Navigation: Language switcher with symmetrical URL structure
  • Dynamic Footer: Auto-updating copyright year via JavaScript
  • Enhanced Animations: GSAP timeline-based entrance animations for hero text and cabin cards

๐ŸŽจ Content Creation

  • Cabin Images: Created in Midjourney using custom prompts
  • Text Content: Original English content and Spanish translations written by me (AI-assisted)

๐Ÿ—๏ธ Architecture & Design Decisions

This project follows a carefully considered architectural approach. For detailed information about the technical decisions made during development, please refer to:

  • docs/adr.md - Architecture Decision Records (ADRs) documenting key technical choices including:

    • Vite MPA configuration
    • Symmetrical multi-language structure
    • Functional-Semantic CSS approach (no BEM)
    • Native HTML5 accordion implementation
    • GSAP animation strategy
    • And more...
  • docs/structure.md - Project structure and organization

๐Ÿ› ๏ธ Tech Stack

  • Build Tool: Vite
  • Languages: HTML5, CSS3, Vanilla JavaScript
  • Animation: GSAP (GreenSock Animation Platform)
  • Testing: Vitest (unit tests)
  • Deployment: Netlify

๐Ÿ“‚ Project Structure

scenic-forests/
โ”œโ”€โ”€ docs/                    # Architecture documentation
โ”‚   โ”œโ”€โ”€ adr.md              # Architecture Decision Records
โ”‚   โ””โ”€โ”€ structure.md        # Project structure guide
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ en/                 # English pages
โ”‚   โ”œโ”€โ”€ es/                 # Spanish pages
โ”‚   โ”œโ”€โ”€ css/
โ”‚   โ”‚   โ”œโ”€โ”€ variables.css   # Design tokens
โ”‚   โ”‚   โ”œโ”€โ”€ main.css        # Global styles
โ”‚   โ”‚   โ””โ”€โ”€ components/     # Component styles
โ”‚   โ”œโ”€โ”€ js/
โ”‚   โ”‚   โ””โ”€โ”€ main.js         # Main application logic
โ”‚   โ””โ”€โ”€ images/             # Assets
โ””โ”€โ”€ public/                 # Static assets

๐Ÿšฆ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm or pnpm

Installation

# Clone the repository
git clone [repository-url]

# Navigate to project directory
cd scenic-forests

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

# Run tests
npm test

๐ŸŽ“ Learning Outcomes

This project demonstrates:

  • Modern front-end tooling and build processes
  • Responsive design and mobile-first approach
  • Internationalization (i18n) with manual multi-language support
  • Accessible UI patterns (native HTML elements, ARIA attributes)
  • Progressive enhancement and client-side interactivity
  • Animation timing and motion design principles
  • Clean architecture and separation of concerns

๐Ÿ“ License

This project is based on educational material from Scrimba. The refactored code, new pages, translations, and Midjourney-generated images are original work.


Course Reference: Scrimba's Learn UI Design