# Project: andlukyane.com — Personal Website ## Architecture - Jekyll site hosted on GitHub Pages (custom domain: andlukyane.com) - Pages live in `_pages/` as `.html` files (NOT `.md` — Liquid doesn't process reliably in `.md` with HTML blocks) - The homepage is `_pages/home.html` with `permalink: /` (NOT root `index.html` — root files skip Liquid processing) - Blog posts in `_posts/`, projects in `_projects/` - Layouts: `default.html` (master), `page.html`, `post.html`, `project.html`, `tagpage.html` - CSS: Bootstrap 5.1 + custom SASS (`_sass/`) + additional CSS in `css/` (cards.css, dark-mode.css, enhancements.css) - JS: AJAX navigation (`personal.js`), search (`search.js`), dark mode (`dark-mode.js`) - The site loads `personal.js` (not `personal-min.js`) — if editing JS, edit `personal.js` - Comments: Utterances (GitHub-based) - Contact: Formspree ## Important gotchas - Root `index.html` does NOT process Liquid tags. Always use `_pages/` with `permalink` instead. - The `.post` click handler in `personal.js` captures all clicks inside blog listing cards. New interactive elements (like tag chips) need `e.target.closest()` guards to work. - Build takes ~33 seconds. Use `rm -rf _site` before rebuild if you suspect caching issues. - Tag pages are auto-generated in `tag/` directory from individual `.md` files. ## Common commands ```bash # Build and serve locally pkill -f "jekyll serve" 2>/dev/null; sleep 2; bundle exec jekyll serve --no-watch # Clean build (when Liquid caching suspected) pkill -f "jekyll serve" 2>/dev/null; sleep 2; rm -rf _site; bundle exec jekyll serve --no-watch ``` ## Workflow preferences - When redesigning a page, create 2-3 versions at temporary URLs (e.g. `/about-v1`, `/about-v2`) for comparison, then combine the best elements and delete temp files. - Use `.html` extension for pages with Liquid template code or heavy HTML. - New card-based components use classes from `css/cards.css` (card-grid, card, card-scroll, tag-chip, badge-pill, section-header).