Lattice
연구를 위한 작업공간
하루에 행동 하나 선택, 매일 문자 받고 30일간 아침·오후 체크인, 앱 없이 진행
Pick one behavior. Get one text a day. For thirty days, we hold you to it — a morning nudge, a 4 p.m. check-in, and a line on how it went. No app to download.
생산성Astro · TypeScriptGitHub @lpmoon007온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The marketing site for Be Legendary (alt. name Repario), an executive-team performance firm founded by James Carter. Built from the design handoff as a static-generated Astro site — the entire SEO/AEO strategy depends on crawlers and AI answer-engines seeing fully-rendered HTML + JSON-LD without running JS.
The site sells one thing through one action: booking a free 15-minute, CEO-only
Calibration Call (https://meetings.hubspot.com/jcarter28). There is exactly
one primary CTA across the entire site by design.
trailingSlash: 'always', directory build format).@fontsource (Newsreader display / Hanken Grotesk body)
— replaces hotlinked Google Fonts for Core Web Vitals + privacy.npm install
npm run dev # local dev server
npm run build # static build → dist/
npm run preview # preview the production build
public/
assets/ images (headshot, logo, share card, book covers)
robots.txt allows all crawlers incl. named AI bots; points to sitemap
llms.txt AI-crawler site summary
sitemap.xml all 24 production URLs
src/
layouts/BaseLayout.astro <head>: per-page meta/canonical/OG/Twitter + JSON-LD
components/
Header.astro Footer.astro global chrome (single CTA)
FlagDiagram.astro interactive Flag Model diagram (homepage)
BreakPointAssessment.astro 10-question scored assessment + HubSpot
CostCalculator.astro 5-slider cost calculator
NewsletterSignup.astro Faq.astro reusable islands
lib/site.ts CTA URL, HubSpot IDs, slug map (single source of truth)
pages/ one file per production slug
styles/global.css fonts, design tokens, responsive layer, reduced-motion
Home / · Flag Model /flag-model/ · About /about/james-carter/ ·
Assessment /break-point-self-assessment/ · Calculator /cost-of-lost-disciplines-calculator/ ·
ELFS /elfs/ · Research /state-of-executive-team-execution/ · Case studies /case-studies/ ·
Glossary /glossary/ · Resources /resources/ · Field Notes /field-notes/ ·
8 Field Notes articles · 3 framework comparisons · 3 buyer's guides · Privacy /privacy/.
The Break-Point Self-Assessment result links to the Cost Calculator with
?from=assessment&break=<discipline>&waste=<n> (a referral card + the email
success state). The Calculator reads those params client-side on load: it
pre-sets the meeting-waste slider and shows a "From your snapshot" banner naming
the carried break point. Revenue/headcount/rate/hours keep their defaults (the
assessment never collects them). With no params, the Calculator shows no banner.
Keep the param names (from, break, waste) and discipline keys stable.
Set PUBLIC_GA_ID (your G-XXXXXXXXXX Measurement ID) in .env (see
.env.example) — it's read at build time, so rebuild after setting it.
Analytics load only when it's set, so the site ships clean until then.
Conversion events fired:
| Event | When |
|---|---|
book_calibration_call | Any click on the single booking CTA, site-wide (event delegation) |
generate_lead | Break-Point Report form submit (includes the computed break_point) |
newsletter_signup | Newsletter form submit |
assessment_completed | The assessment result is revealed (includes break_point) |
In the GA4 UI, mark book_calibration_call and generate_lead as key events
to count them as conversions. Wiring lives in src/components/Analytics.astro
(loader + CTA delegation) and the form components.
na2, portal 20276071)https://meetings.hubspot.com/jcarter288e01345a-ccef-43b8-8598-e3bb6d7397f1
(the assessment posts the computed break-point discipline + per-discipline scores)f744639b-16b8-4f45-a141-1637e135cdc7Forms POST to api.hsforms.com/submissions/v3/integration/submit/{portal}/{guid}.
Before launch: verify CORS/region from the live domain and test both forms end-to-end.
meetings.hubspot.com/jcarter28. The ELFS
page's primary CTA is the softer Request your ELFS (a qualifying touch, same booking link).@ids cross-reference
(#org, #james, #flagmodel) so the graph resolves.BaseLayout (siteGraph, default on;
homepage opts out, it defines the full versions): every inner page emits the
canonical Organization + founder Person (with sameAs) + WebSite + a
per-page WebPage node, and articles' author/publisher resolve to
#james/#org — consolidating author authority across the content cluster.og:image:alt,
og:locale) + Twitter card, theme-color, favicons + site.webmanifest, and
question-format headings with answer-first "short answer" boxes.astro:assets (<Image>, WebP, explicit dimensions):
homepage image payload ~230 KB (was ~2 MB). Display images live in src/assets;
logo.png/share-card.png stay in /public (schema/OG reference them by URL).sitemap.xml is generated at build time (src/pages/sitemap.xml.ts) so
<lastmod> is always current; curated per-route priorities live there.404 page (noindex).na2).logo.png (currently the PNG is referenced directly).sitemap.xml lastmod at launch.