T.mkv

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What this is

A personal portfolio + app landing-page site (tyh94.github.io), served as a static Jekyll site on GitHub Pages. It hosts the developer bio and per-app marketing/legal pages (support, privacy, terms) for iOS apps. No build step beyond Jekyll; all pages are hand-written static HTML.

Commands

bundle install              # install gems (jekyll, webrick, jekyll-sitemap)
bundle exec jekyll serve    # local dev server with live rebuild at http://localhost:4000

Deployment is automatic: GitHub Pages builds main on push. There are no tests or linters.

Architecture

Everything is driven by client-side i18n

There is no server-side templating of text. Every page is bilingual (RU default, EN) and all user-visible text lives in assets/js/main.js in the translations object ({ ru: {...}, en: {...} }). HTML elements carry a data-i18n="key" attribute and are left empty; applyTranslations() fills them via innerHTML on DOMContentLoaded. Language is persisted in localStorage under lang and toggled by the setLang() RU/EN buttons in every nav.

Consequences when editing content:

Translation key namespacing

Keys are dot-namespaced by app and page: nav.*, hero.*, about.* (home page); sc.* = SourdoughCooker; ffd.* = Family Food Diary. Within an app, sub-namespaces mirror the page: sc.page.* (landing), sc.support.*, sc.privacy.*, sc.tos.*. Follow this scheme when adding a new app or page.

App Store badge locale

applyTranslations() special-cases #appstore-badge, swapping its src to the ru-ru or en-us Apple badge endpoint by language. Give a badge id="appstore-badge" to get automatic localization.

Page layout & paths

Shared assets

assets/css/main.css and assets/js/main.js are shared across all pages — a change affects the entire site. App icons live in assets/ (e.g. assets/sourdoughcooker-icon.jpeg).

Adding a new app

  1. Create apps/<app-slug>/ with index.html, support.html, privacy.html, terms.html (copy an existing app’s folder as the template).
  2. Add all its data-i18n keys under a new namespace to both ru and en in assets/js/main.js.
  3. Add a card to the apps grid in the root index.html.
  4. Google site-verification and App Store links are hard-coded per file — update them.