Files
peptide-starter-theme/CLAUDE.md
peptiderepo 9da702e746 v1.5.0: extend theme with navigation dropdowns, 9 page templates, auth UI, newsletter, contact panel
Major theme extension adding full-featured navigation with dropdown submenus (Tools, My Data, Resources),
9 new page templates (Calculator, Protocol Builder, Tracker, Subject Log, Documentation, Directory,
Science Feed, Profile, Sign In/Register), documentation page with sidebar ToC and scroll spy,
branded AJAX authentication forms, newsletter signup with admin export, slide-out contact/support panel,
Research Modules 6-card grid on front page, and comprehensive footer update.

Split functions.php (554→206 lines) into 6 focused inc/ modules: helpers, customizer, auth-handlers,
contact-handler, page-setup, newsletter-admin. All new components include dark mode support, CSRF
protection, input sanitization, output escaping, and graceful plugin degradation via shortcode_exists().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 08:38:30 +07:00

3.3 KiB

Peptide Starter Theme

WordPress theme for peptiderepo.com — a scientific peptide reference database.

Repository

  • GitHub: peptiderepo/peptide-starter-theme (private)
  • Branch: main is the production branch
  • Live site: https://peptiderepo.com
  • Hosting: Hostinger shared hosting

Deploy

Push to main triggers GitHub Actions → rsync via SSH to Hostinger. No CI lint step — the deploy workflow (deploy.yml) runs rsync directly. LiteSpeed cache is purged automatically after deploy.

Theme path on server: ~/domains/peptiderepo.com/public_html/wp-content/themes/peptide-starter/

Architecture

This is a classic WordPress theme (no block/FSE). All styling is in style.css (no build step, no preprocessor). JavaScript is vanilla — no bundler.

Key files

File Purpose
style.css All theme CSS (~44KB). Organized: reset → tokens → typography → globals → components → regions → pages → animations → a11y → dark mode → responsive
functions.php Theme setup, script enqueueing, Customizer registration, nav walker, helper functions
front-page.php Home page: hero section → PRAutoBlogger widget → Peptide News feed
header.php Global header with nav, dark mode toggle, mobile menu
footer.php 4-column widget footer with copyright
archive-peptide.php Peptide CPT archive grid
single-peptide.php Single peptide detail page
assets/js/navigation.js Mobile menu and nav functionality
assets/js/theme.js Dark mode toggle, theme utilities

Template parts

  • template-parts/content.php — Post/page content loop
  • template-parts/content-peptide.php — Peptide card in archive
  • template-parts/content-none.php — Empty state

Coding Conventions

  • PHP: WordPress coding standards — tabs for indentation, Yoda conditions, braces on same line
  • CSS: No preprocessor. Use CSS custom properties (defined in :root). All theme classes prefixed .ps-
  • JS: Vanilla ES6+, no build step. Files in assets/js/ must pass node --check
  • No !important on global elements — prevents plugin conflicts
  • Plugin CSS namespaces are untouched (.pn-* for Peptide News, .psa-* for Peptide Search AI, .prab-* for PRAutoBlogger)

Design System

  • Font: Inter (Google Fonts) with system fallback
  • Scale: 1.125x modular, 8px grid base
  • Primary color: #0066CC (light) / #3B82F6 (dark)
  • Breakpoints: 480px, 768px, 1024px, 1440px (mobile-first)
  • Dark mode: CSS custom properties swap via html[data-theme="dark"] or prefers-color-scheme: dark

Plugin Integration

The theme integrates with three companion plugins via shortcodes, all wrapped in shortcode_exists() for graceful degradation:

  1. Peptide Search AI ([peptide_search]) — AI search in hero section
  2. Peptide News ([peptide_news]) — News feed on front page
  3. PRAutoBlogger ([prautoblogger_posts]) — Auto-generated research articles on front page

Customizer Options

Editable via Appearance → Customize:

  • Hero title, subtitle, search placeholder
  • Footer copyright text
  • Dark mode default on/off

Version

Current: v1.3.1 (defined in style.css header and PEPTIDE_STARTER_VERSION constant in functions.php)

When bumping version, update both locations.