Skip to main content

Web Menus (Menu Builder)

Overview

The menu builder creates public menu or link-collection pages (link-in-bio style) for each LINE OA. Visitors reach the page through a public token without logging in, which makes it a good fit for a services landing page linked from a rich menu button.

The entire menu structure is stored as a single JSONB blob, so new block types can be added without a schema-level migration.

Core Data Structure

  • name VARCHAR(255)
  • config JSONB — the complete menu structure: blocks, links, and theme
  • public_token VARCHAR(255) unique (nullable) — the key used to build the public URL; NULL means the page has not been exposed yet
  • line_oa_id FK → line_oa.id
  • status (CommonStatus, default active)
  • timestamps use the newer naming convention — created_at / updated_at / deleted_at — unlike the older tables, which use created_date / deleted_date
  • indexes on (line_oa_id), (status), and (created_at)
  • prisma/schema.prisma:968 — model MenuBuilder
  • schema-dumps/2026-07-24/schema.sql:2345

Connections to Other Services

  • cms-api-go — menu CRUD, including issuing and revoking public_token
  • client-api-go — the public page, looked up by public_token and rendered from config

Links inside the menu are typically wrapped in tracking links before being rendered; see Click Tracking.