CLAUDE.md

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

Overview

This is the Avada Group careers website (https://avadagroup.com), built with Jekyll static site generator. The site serves as both a corporate blog and a job board for recruiting purposes. It features job postings, company blog posts, and information about Avada Group’s work environment and culture.

Technology Stack

  • Static Site Generator: Jekyll with Kramdown markdown processor
  • Front-end Framework: Bootstrap (with custom CSS)
  • JavaScript: jQuery-based with various plugins (Camera slider, Calendario, etc.)
  • Styling: LESS (compiled to CSS) + custom CSS
  • Deployment: Git-based (see push.sh scripts)

Site Structure

Content Types

  1. Jobs (
    1
    
    _jobs/
    
    directory)
    • Jekyll collection defined in
      1
      
      _config.yml
      
    • Each job is a markdown file with YAML frontmatter
    • Key frontmatter fields:
      • 1
        
        layout
        
        : typically
        1
        
        new_layout_jd
        
        or
        1
        
        job
        
      • 1
        
        vi_tri_ung_tuyen
        
        : Job title (Vietnamese)
      • 1
        
        cty_thanh_vien
        
        : Company member (e.g., “Avada SaaS”)
      • 1
        
        dang_tuyen_dung
        
        : Boolean indicating if actively recruiting
      • 1
        
        value_phong_ban
        
        : Department value (technical, marketing, sales, service, bo)
      • 1
        
        label_phong_ban
        
        : Department label display
      • 1
        
        salary
        
        : Salary range
      • 1
        
        yeu_cau
        
        : Experience requirement
      • 1
        
        jobHot
        
        : Boolean for hot job badge
      • 1
        
        jobTuyenGap
        
        : Boolean for urgent hiring badge
  2. Blog Posts (
    1
    
    _posts/
    
    directory)
    • Standard Jekyll posts following
      1
      
      YYYY-MM-DD-title.md
      
      naming convention
    • Frontmatter includes:
      • 1
        
        layout
        
        : typically
        1
        
        new_post
        
        or
        1
        
        blog-single
        
      • 1
        
        tab
        
        : Category (e.g., “su_kien_noi_bo”)
      • 1
        
        label-tabs
        
        : Display label for category
      • 1
        
        image
        
        : Featured image URL
  3. Pages (
    1
    
    _pages/
    
    directory)
    • Static pages like blog, tuyen-dung (recruitment), ve-chung-toi (about us), moi-truong (environment)
    • Uses custom permalinks defined in frontmatter

Layout System

  • Layouts (
    1
    
    _layouts/
    
    directory):
    • 1
      
      homepage_new.html
      
      : Main homepage layout
    • 1
      
      new_layout_jd.html
      
      : Modern job description layout
    • 1
      
      job.html
      
      : Legacy job layout
    • 1
      
      new_post.html
      
      : Blog post layout
    • 1
      
      blog-single.html
      
      : Alternative blog post layout
    • 1
      
      default.html
      
      ,
      1
      
      page.html
      
      : Basic page layouts
  • Includes (
    1
    
    _includes/
    
    directory):
    • Header variants:
      1
      
      header.html
      
      ,
      1
      
      new_header_landingpage_t12.html
      
      ,
      1
      
      2025_20_01_header_default.html
      
    • Footer variants:
      1
      
      footer.html
      
      ,
      1
      
      bo_new_footer_t12.html
      
    • 1
      
      form_ung_tuyen.html
      
      : Job application form include
    • 1
      
      head.html
      
      ,
      1
      
      2025_20_01_head_new.html
      
      : HTML head sections
    • 1
      
      script.html
      
      : JavaScript includes

Data Files

  • 1
    
    _data/dataBanLanhDao.json
    
    : Leadership team data
  • 1
    
    _data/members.yml
    
    : Team members information
  • 1
    
    _data/reviewAvadaGroup.json
    
    : Company reviews/testimonials

API Endpoints

  • 1
    
    /api/avada_career_search.json
    
    : JSON API for job search functionality
    • Generated from
      1
      
      _pages/api/avada_career_search.html
      
    • Filters jobs where
      1
      
      dang_tuyen_dung: true
      
    • Returns job title, department, permalink, salary, and requirements

Common Commands

Local Development

1
2
3
4
5
6
7
8
9
10
11
# Install Jekyll and dependencies (first time setup)
gem install bundler jekyll

# Serve site locally with auto-regeneration
jekyll serve

# Serve with drafts and future posts
jekyll serve --drafts --future

# Build site for production
jekyll build

Deployment

1
2
3
4
5
6
# Auto-commit and push changes
./push.sh

# Individual user push scripts
./sam-push.sh
./sona-push.sh

The

1
push.sh
script runs:
1
git pull && git add . && git commit -m "Auto Update" && git push

Key Architectural Patterns

Job Filtering System

The recruitment page (

1
_pages/tuyen-dung.md
) implements a dual filtering mechanism:

  1. Department Filter: Dropdown filter by
    1
    
    value_phong_ban
    
    • Options: technical, marketing, sales, service, bo (back office)
    • Jobs are sorted by priority: technical → marketing → sales → service → bo
  2. Search Filter: Keyword search via
    1
    
    /api/avada_career_search.json
    
    • Searches across job title, salary, requirements, and department
    • Results replace the default job list dynamically
    • URL query parameter
      1
      
      ?keyword=
      
      supported for deep linking

Multi-language Support

  • Site is primarily in Vietnamese
  • Some content in English (mainly technical terms)
  • No formal i18n system; content is manually translated in markdown files

Job Badge System

Two badge types displayed on job cards:

  • HOT badge (blue with flame icon):
    1
    
    jobHot: true
    
  • TUYỂN GẤP badge (red with lightning):
    1
    
    jobTuyenGap: true
    

Important Configuration

_config.yml Settings

  • Site URL:
    1
    
    https://avadagroup.com
    
  • Collections:
    • 1
      
      _pages
      
      : output: true
    • 1
      
      _jobs
      
      : output: true
  • Pagination: 5 posts per page on blog
  • Excluded files: Gemfile, node_modules, less/, README.md, etc.
  • Future posts: Enabled (
    1
    
    future: true
    
    )
  • Posts:
    1
    
    /:categories/:title/
    
  • Jobs: Defined per-file in frontmatter (e.g.,
    1
    
    /AI-Engineer/
    
    )
  • Pages: Custom permalinks (e.g.,
    1
    
    /tuyen-dung/
    
    )

Working with Jobs

Creating a New Job Posting

  1. Create new file in
    1
    
    _jobs/
    
    with descriptive name (e.g.,
    1
    
    Senior-Backend-Engineer.md
    
    )
  2. Add required frontmatter:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    ---
    layout: new_layout_jd
    title: "Job Title"
    permalink: "/job-slug/"
    published: true
    vi_tri_ung_tuyen: "Job Title in Vietnamese"
    cty_thanh_vien: "Avada SaaS" # or other entity
    dang_tuyen_dung: true
    value_cty: "saas"
    value_phong_ban: "technical"
    label_phong_ban: "Technical"
    salary: "Negotiate" # or specific range
    yeu_cau: "2 năm" # or "0" for no experience
    jobHot: false
    jobTuyenGap: false
    ---
    
  3. Write job description content in markdown following existing structure
  4. Job automatically appears on
    1
    
    /tuyen-dung/
    
    page and in search API

Deactivating a Job

Set

1
dang_tuyen_dung: false
in the job’s frontmatter. This removes it from the active listings and search API.

Styling and Assets

  • CSS: Main styles in
    1
    
    style.css
    
    (compiled from
    1
    
    style.less
    
    )
  • LESS source:
    1
    
    less/
    
    directory contains modular LESS files
  • Images: Stored in
    1
    
    images/
    
    directory, some hosted on CDN (cdn2.mageplaza.com)
  • Fonts: Custom fonts loaded via includes
  • Icons: SVG icons inline in HTML

Contact and Email

Notes

  • The site uses
    1
    
    future: true
    
    which allows posts with future dates to be published
  • Google Analytics tracking ID: UA-76130628-7
  • Disqus comments enabled with shortname: careermageplaza
  • reCAPTCHA may be used on contact forms