|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## Project Overview |
| 6 | + |
| 7 | +This is a Jekyll-based static website for RubyConf Taiwan x COSCUP 2025 conference. It's built using Jekyll 4.4.1 with Tailwind CSS for styling, Alpine.js for JavaScript interactivity, and AOS (Animate On Scroll) for animations. |
| 8 | + |
| 9 | +## Development Commands |
| 10 | + |
| 11 | +### Local Development |
| 12 | +```bash |
| 13 | +# Install dependencies |
| 14 | +bundle install |
| 15 | + |
| 16 | +# Serve the site locally with live reload |
| 17 | +bundle exec jekyll serve |
| 18 | + |
| 19 | +# Build the site for production |
| 20 | +bundle exec jekyll build |
| 21 | +``` |
| 22 | + |
| 23 | +### CSS Development |
| 24 | +The site uses Jekyll Tailwind CSS plugin (`jekyll-tailwindcss`) which automatically processes Tailwind styles defined in `_tailwind.css` using the configuration in `tailwind.config.js`. |
| 25 | + |
| 26 | +## Architecture & Structure |
| 27 | + |
| 28 | +### Jekyll Configuration |
| 29 | +- **Main config**: `_config.yml` contains site metadata, plugin configuration, and data for speakers/staff |
| 30 | +- **Layout**: Single `default.html` layout in `_layouts/` with Alpine.js integration |
| 31 | +- **Content**: Main page is `index.html` with front matter defining schedules and speakers data |
| 32 | + |
| 33 | +### Frontend Stack |
| 34 | +- **CSS Framework**: Tailwind CSS with custom color scheme (blue, green, red variants) |
| 35 | +- **JavaScript**: Alpine.js for component state management and interactions |
| 36 | +- **Animations**: AOS library for scroll-triggered animations |
| 37 | +- **Icons**: SVG icons stored in `_includes/icons/` |
| 38 | +- **Images**: Background SVGs in `_includes/images/`, photos in `assets/images/` |
| 39 | + |
| 40 | +### Data Structure |
| 41 | +The site uses Jekyll front matter in `index.html` to define: |
| 42 | +- **Schedules**: Conference schedule with tracks and timing |
| 43 | +- **Speakers**: Speaker profiles with images and session details |
| 44 | +- **Site config**: Staff information and social links in `_config.yml` |
| 45 | + |
| 46 | +### Key Features |
| 47 | +- **Single Page Application**: All content on one scrollable page with smooth section navigation |
| 48 | +- **Responsive Design**: Mobile-first with desktop enhancements |
| 49 | +- **Interactive Modals**: Speaker details and footer modals using Alpine.js |
| 50 | +- **Navigation**: Sticky navigation with active section highlighting |
| 51 | +- **Internationalization**: Chinese/English content mixing |
| 52 | + |
| 53 | +### JavaScript Architecture |
| 54 | +- `assets/js/main.js`: Initializes AOS animations and integrates with Alpine.js |
| 55 | +- Alpine.js components handle: |
| 56 | + - Mobile navigation toggle |
| 57 | + - Section scrolling and active state tracking |
| 58 | + - Modal management for speakers and footer content |
| 59 | + - Scroll position tracking for navigation styling |
0 commit comments