58 Commits
Author SHA1 Message Date
jinhojang6 fce9a94bdb refactor(web): move the campaign page to /chatcontrol
Renames the route from /catch-no-one to /chatcontrol, the slug the page will ship on.

The rename runs through everything that referenced it: the route constant becomes `chatControl`, the directory and its contract test are renamed, the page component follows, and so do the typewriter's arming class and the global its inline script sets — leaving those on the old name would have been a stale reference to a page that no longer exists.

Verified against the static export: canonical, og:url, and the Article JSON-LD `url` and `@id` all resolve to logos.co/chatcontrol, the sitemap carries the new path and not the old one, and the arming class still matches the Tailwind variants that key off it.
2026-08-27 23:37:50 +09:00
jinhojang6 4ab68c20cb feat(web): add "Check everyone to catch no one" landing page
Implements the campaign landing page at /catch-no-one from Figma: a hero with a one-shot typewriter headline, five content bands, the search-demand bar chart, two CTA cards, and the source list.

Copy lives in a colocated _content.ts, transcribed verbatim from the design. Styling is Tailwind over the logos-tokens design system, falling back to Figma's exact values only where the token ramp has no match: the #2f2f2f CTA cards, the neutral chart greys, and the #fafaf7 dark-panel ink.

Text primitives carry text-box-trim so the 18/60/112px rhythm is measured cap-to-cap the way Figma measures it, rather than line-box to line-box.

The headline types itself in once per browser session, is skipped under prefers-reduced-motion, and is armed by a pre-paint script so the server-rendered text never flashes before the animation starts.

Also adds Fira Code 700, which the exhibit labels need and which the browser was previously synthesising.
2026-08-27 23:37:50 +09:00
Jules bc30c4cede refactor(civi-crm/web): drop CiviCRM integration
* refactor(civi-crm): remove case management pages and API

The Circle Case UI, its API routes and the CiviCRM query layer they used
are gone. Keeps the app shell out entirely: no pages remain, so the
layout, styles and UI dependencies go with them.

* refactor(civi-crm): drop CiviCRM write from the intake endpoint

Submissions now go to Notion and, for the steward form, n8n. The legacy
afformCircleContactForm name was CiviCRM-only and is no longer accepted;
the fields[] payload is ignored.

* chore(web): remove CiviCRM afform generator scripts

They fetched form definitions from the CiviCRM API, which is gone. The
generated files under lib/civicrm are hand-maintained from now on.

* refactor(web): trim funnel form definitions and move to lib/funnel-forms

Fields keep only what renders the form: formKey, label, inputType,
required, repeatable. The CiviCRM entity/join/fieldName plumbing and the
fields[] POST payload are gone, along with the unused circle contact
form.

country was marked required but exempt from validation through its
CiviCRM Address join, so it is now enforced like every other required
select.

* docs: rewrite civi-crm and funnel docs for the intake-only app

Drops the CiviCRM API guide and the case management architecture, and
updates the funnel reference to the Notion + n8n flow.
2026-08-13 22:44:23 +09:00
jinhojang6 1360bd70df feat: add roadmap page 2026-08-11 04:00:54 +09:00
jinhojang6 f4e876f351 feat: add the /build-the-parallel landing page
Compose the Figma landing page entirely from existing sections: the
shared hero (still image + its own copy), the statement heading with two
CTAs, the Movement page's centred lead-in above the Circles map, and the
choose-your-path cards.

Copy lives in content/pages/en/build-the-parallel.json using existing
section schemas, so no schema changes were needed. British spelling
follows the rest of the site rather than the mixed spelling in Figma.
2026-08-10 20:38:46 +09:00
jinhojang6 8f023f99d3 fix: restore Basecamp platform downloads 2026-08-06 01:18:47 +09:00
jinhojang6 65146bdc95 fix: avoid Basecamp download redirect page 2026-07-31 01:51:19 +09:00
jinhojang6 7410b469c8 fix: resolve Basecamp downloads by platform 2026-07-31 01:51:19 +09:00
jinhojang6 4b0620faba fix: update movement issue links 2026-07-31 01:51:19 +09:00
Jinho Jang 3e36fc9790 Increase small text to 12px (#114)
* fix: increase small text to 12px

* fix: use initiative CTA label

* refactor: use Tailwind text-xs utility

* fix: make homepage banner dismissible

* fix: update Discord links and banner text

* fix: refresh Discord invite links
2026-07-23 20:58:59 +09:00
jinhojang6 5faae8601f feat: add operators closure page 2026-07-13 22:49:37 +09:00
jinhojang6 a54d6a2668 fix: update links and descriptions for Basecamp release v0.2.1 and Testnet v0.2 2026-07-06 21:46:31 +09:00
Jinho Jang 96be50d8d0 refactor: make @repo/content the single source for home, get-started & movement page copy (#62)
* docs: add page-copy single-source spec and implementation plan

* feat(content): add typed home section schemas and migrate home copy into content

Add 7 bespoke home* section schemas (+ techStack ctas) to the page section
union and populate content/pages/en/home.json with home copy moved verbatim
from messages.

* refactor(web): source home page copy from @repo/content; drop home namespace from messages

Feed every home section from content via findSection/data props (replacing
next-intl getTranslations), remove the home namespace from messages/en.json,
and add a regression guard plus content-based tests. Render output unchanged.

* docs: add get-started/movement page-copy dedup spec and plan

* feat(content): add get-started & movement section schemas and content docs

Move get-started/movement page copy verbatim into content/pages so it is
single-sourced in @repo/content.

* refactor(web): source get-started/movement copy from content; drop those namespaces from messages

Feed both pages from content via findSection/data props (replacing next-intl),
switch them to content-based metadata, delete pages.getStarted/movement from
messages, and add content-based tests + ownership guard. Render unchanged.

* docs: add navbar-pages CMS copy spec and plan

* feat(content): add navbar page section schemas + Pages docs (book, brand-kit, research, node-programme, lambda-prize, manifesto, media, podcast, broadcast, tech-stack explorer)

* refactor(web): source navbar pages copy from content; drop those namespaces from messages

Migrate book, brand-kit, research (incl. rich-text via a tagged-text renderer),
node-programme, lambda-prize, manifesto, media, podcast, logos-broadcast-network,
and the tech-stack explorer to read copy from content via findSection/data props
and content-based metadata; remove the migrated pages.* namespaces from messages;
update guards + contracts. Render output unchanged.

* feat(web): source activist/coalition pages copy from content (CMS title/description)

Migrate activistBuilder, activistLeaderSteward, and coalitionPartner page
metadata from next-intl messages.pages.* into @repo/content PageCopy JSON,
following the established bookCopy pattern.

- Add activistBuilderCopySectionSchema, activistLeaderStewardCopySectionSchema,
  coalitionPartnerCopySectionSchema to packages/content/src/schemas/pages.ts
  and wire them into the pageSectionSchema discriminated union
- Create content/pages/en/activist-builder.json,
  activist-leader-steward.json, coalition-partner.json with verbatim
  title/description/heading values from the old messages namespace
- Switch all three route pages from createTranslatedPageMetadata to
  createPageMetadata(ROUTE), removing the NAMESPACE constant
- Remove activistBuilder, activistLeaderSteward, coalitionPartner from
  apps/web/messages/en.json pages object
- Add schema parse tests, renderToStaticMarkup page tests, messages ownership
  guards, and content-route contract entries for all three pages

* chore(web): remove dead faq (pages.faq + unused FaqSection components)

* fix: remove stale faq links

* fix: pass payload env through turbo build

* fix: preserve lambda prize support labels

* fix: preserve live copy after master rebase

* fix: address page copy review feedback

* refactor: move design guide copy to content

* feat: add schemas for home and page copy sections

- Introduced home section schemas including homeSocialProof, homeChoosePath, homeDecide, homeStartBuilding, homeAbout, homeUseCases, and homeBuilderPortal.
- Added page copy section schemas such as getStartedCopy, movementCopy, bookCopy, designGuideCopy, activistBuilderCopy, activistLeaderStewardCopy, coalitionPartnerCopy, researchCopy, nodeProgrammeCopy, lambdaPrizeCopy, mediaCopy, podcastCopy, broadcastCopy, and manifestoCopy.
- Created shared schema for section keys to maintain consistency across sections.

* chore(web): remove dead pages.faq from messages

* fix: resolve page copy migration conflicts

* fix: source connect form page copy from content

* fix: remove duplicated afform page copy exports

* fix: stop generating afform page copy exports

* fix(cms): require only server actions key

* fix(cms): load env files before build validation

* fix(cms): make env loader available during build

* fix(cms): load next env via require

* test(cms): isolate missing env validation

* feat: add homepage testnet highlight

* fix: restore lambda prize support links
2026-07-06 19:09:02 +09:00
jinhojang6 938fde7747 fix: make testnet faq route versionless 2026-07-03 12:27:07 +09:00
jinhojang6 afcbb42a24 feat: add node operator guide CTA 2026-07-02 22:03:33 +09:00
jinhojang6 25f4d17ba2 feat(design-guide): apply Design Guide labels, URL refs, and i18n (#66)
Completes the /brand-kit -> /design-guide move: page namespace/heading,
ROUTES.designGuide references (sitemap, docs ToC, design-systems demo),
nav/footer labels, perf budget route, and i18n keys.
2026-06-30 02:29:00 +09:00
jinhojang6 78619e28dc feat(field-guide): add Logos Field Guide at /field-guide
Port the 16-chapter Logos Field Guide from the standalone reference site
into logos.co as content-driven pages, discoverable from the footer and
the global nav.

- content/field-guide/en: manifest (TOC) + chapter Markdown bodies
- @repo/content: fieldGuide schema + loaders, readText fs helper
- /field-guide index + /field-guide/[slug] routes (static export)
- FieldGuideShell (sidebar, pager, keyboard nav) + FieldGuideContent
  (react-markdown to design tokens); light theme, site header retained
- Footer "Brand Guidelines" group and nav Explore > Resources links
- sitemap, routes constant, i18n metadata, loader/integrity tests

Closes #65
2026-06-30 02:29:00 +09:00
jinhojang6 333c95c250 fix: update documentation links to point to the new site 2026-06-18 01:05:59 +09:00
jinhojang6 d094c0c2c8 fix: link manifesto related reading 2026-06-17 23:24:48 +09:00
Jinho Jang a9d3dcdd8a Rebrand blog to Logos Media, refresh copy, and polish stack/hero UI (#43)
* fix(content): update description for storage overview section

* fix(content): update references from "The Logos Blog" to "Logos Media" across multiple files

* feat: Refactor blog section to media section

- Created new components for articles and podcasts under the media section.
- Updated routing constants to replace blog with media.
- Adjusted all references in the codebase from blog to media, including links, buttons, and navigation.
- Implemented new layout and design for articles and podcasts to enhance user experience.
- Updated translations and content references to align with the new media section.

* feat(about): replace h1 with AnimatedHeading component in AboutHero section

* fix: update import paths for PodcastsSection and adjust LambdaBadge properties in multiple components

* fix: adjust hover translation values for desktop stack items
2026-06-11 18:56:03 +09:00
Jinho Jang 760c5a1eb2 feat(web): add Manifesto page with routing and content (#42)
* feat(manifesto): add manifesto page with content and routing details

* Refactor code structure for improved readability and maintainability
2026-06-11 17:17:45 +09:00
Jinho Jang 707a364fc7 fix(content): update winnable issues and initiative details for movement page (#41) 2026-06-11 00:03:40 +09:00
jinhojang6 6c22a1bcba fix(routes): remove duplicate iftJobs key breaking the build 2026-06-05 11:36:08 +09:00
jinhojang6 f8d37d13d4 feat(research): update overview section to use paragraphs and improve CTA handling
feat(blog): add hero tagline to blog copy and update BlogHero component
fix(calendar): enhance event selection logic and improve calendar navigation
fix(footer): rename "Research Hub" to "Research Overview" for clarity
fix(navigation): update "Research Hub" label to "Research Overview" for consistency
fix(technology-stack): correct GitHub link formatting in blockchain technology stack
2026-06-05 10:59:11 +09:00
jinhojang6 7a1ef08cf8 feat(web): update external URLs and improve link handling in various components 2026-06-04 20:06:36 +09:00
Jinho Jang 97589cb5c5 Update Builders Hub, Get Started, legal pages, and RFP sourcing (#36)
* fix(sitemap): remove FAQ route from static indexable routes

* feat(web): markdown-managed legal pages + Testnet FAQ & Terms

Introduce a markdown-based system for legal/info documents and add the
two testnet pages on the same docs route pattern.

- Add getLegalDoc loader (gray-matter frontmatter + zod validation) and
  LegalMarkdown renderer (react-markdown + remark-gfm) mapped to Logos
  design tokens; render legal pages as a server component.
- Refactor docs-page-factory to source content from content/legal/<slug>.md
  instead of next-intl namespaces; migrate terms, privacy, and security
  from messages/en.json to markdown.
- Add /testnet-v01-faqs and /testnet-terms-and-conditions pages with
  content mirrored from logos.co; link the FAQ's testnet-terms references
  to the internal route.
- Add Testnet FAQ and Testnet Terms to the docs ToC (remove the dead FAQ
  entry); register both routes in the sitemap.
- Align docs content to the standard page gutter by removing the
  redundant px-3 on the docs page shell.

* chore: optimise page imagery

* feat(web): link Logos Devs X account in community section

* chore(web): hide 'What you can build today' section on get-started and builders-hub

* refactor: reuse builders hub start sections

* feat(builders-hub): source RFPs from GitHub API at build time

Fetch and parse RFPs from the logos-co/rfp repo (markdown + YAML
frontmatter) at build time instead of local content, so the /rfps
listing and [slug] detail pages render from a single live source.

- add rfps-github lib: GitHub contents fetch, gray-matter frontmatter
  parse, stable slug from filename, draft/template exclusion
- detail page renders frontmatter-stripped markdown via LegalMarkdown,
  with Apply + View on GitHub CTAs
- widen RFP card/row/listing props to RfpListItem so GitHub data
  (no reward/image) and local Rfp both satisfy the UI
- add optional markdown body to BuildersHubDetailLayout

* refactor: share get started sections
2026-06-04 18:34:29 +09:00
JulesFILIOT 6f8badef86 chore(routes): remove ROUTES.circles, keep ROUTES.circle for detail pages 2026-06-04 13:53:39 +09:00
JulesFILIOT 530d2ced2f fix(movement): update CTA routes in builder and coalition sections
Builder primary CTA -> activist-builder, feature card -> Porto winnable
issue URL. Coalition CTA -> coalition-partner page.
2026-06-04 13:25:58 +09:00
jinhojang6 55eb3dbf12 fix(movement): correct Propose CTA link and render map once
- "Propose a new circle" now links to the forum meetups category
  (EXTERNAL_URLS.forumMeetups = https://forum.logos.co/c/meetups/6) instead of
  routing to /circles
- The Find-a-Circle map was rendered twice (mobile + desktop variants), which
  left the visible Leaflet instance stuck on "Loading map…". Render a single
  CirclesMap and swap the find-CTA/map order responsively via flex order, so it
  matches the working home/circles map.
2026-06-03 03:26:56 +09:00
jinhojang6 7ec8b62c47 feat(lambda-prize): point all "View Prizes" CTAs to the GitHub prizes folder
Every "View Prizes" CTA (hero, evaluation, about sections) now opens the
lambda-prize prizes directory on GitHub instead of routing to /builders-hub/rfps.

- Add EXTERNAL_URLS.lambdaPrizes
- Hero/HowItWorks/AboutProgramme primary CTA -> EXTERNAL_URLS.lambdaPrizes (new tab)
2026-06-03 02:04:37 +09:00
jinhojang6 1acdba0f5f refactor(blog): rename all Press identifiers/files to Blog, ROUTES.blog
Follow-up to the LPE→Blog rename: purge "Press" from code symbol and file
names and make every consumer use ROUTES.blog instead of a hardcoded path.

- ROUTES: key press -> blog (value /blog); all consumers use ROUTES.blog
- Rename files: lib/press-engine.ts -> lib/blog-engine.ts (+ test),
  blog/_sections/press-atoms.tsx -> blog-atoms.tsx,
  home/press-section.tsx -> blog-section.tsx,
  public/images/press-engine/ -> public/images/blog-engine/
- Rename code symbols: PressArticleRow/PressPodcastRow/PressHero/PressCopy/
  PressRowLink/PressSection/PressCard(Props)/PressPage, getLatest*Press*,
  getPressPageData, getPress*Image*, PRESS_ORIGIN/PRESS_HERO_IMAGE, pressT, etc.
- Rename code-referenced data keys: i18n namespace pages.press -> pages.blog
  (removed stale orphan pages.blog stub), section key home.press -> home.blog,
  DOM id press -> blog
- packages/ui: NavOverlayPressItem -> NavOverlayBlogItem, press/pressSeeAllHref
  -> blog/blogSeeAllHref (rebuilt dist); navigation.json + site schema press -> blog

Intentionally kept (not LPE branding): circles "press" date-format surface
(formatPressDate/event date style), image asset filenames (press-*.webp,
press-hero.jpg), and link-policy legacy-fixture guards.

Verified: web tsc clean, 61 web tests pass, content types + 29 validations pass,
@acid-info/logos-ui rebuilds clean.
2026-06-03 02:04:35 +09:00
jinhojang6 d9823d9026 feat(blog): rename Logos Press Engine to "The Logos Blog" and move /press to /blog
Reviewer feedback: rename LPE branding to "The Logos Blog" and serve
articles under /blog instead of /press.

- Move route dir app/[locale]/press -> app/[locale]/blog (page + _sections)
- ROUTES.press value /press -> /blog (internal key kept to limit churn)
- Display text -> "The Logos Blog" (messages press title/description/heading/
  hero line2, nav label) and navigation card + technology-stack networking label
- All internal /press hrefs -> /blog (home, tech-stack storage/messaging/
  blockchain/networking related articles, nav seeAllHref/card href)
- Update link-policy test assertion, perf budget route, and moved test paths

Article bodies already live on external blog.logos.co (unchanged). Internal
file/identifier names (press-engine lib, press-atoms, /images/.../press-*)
left as-is. No /press redirect (static export).

Verified: tsc clean, 61 web tests pass, 29 content validations pass.
2026-06-03 02:04:35 +09:00
Jules 51345d4012 feat(funnel): migrate /connect to afform-submit flow
* feat(funnel): route connect through afform-submit

Send /connect submissions to the shared afform-submit endpoint and allowlist afformCircleContactForm.

* fix(civi-crm): make connect civi-only intake

Gate Notion to movement forms, add connect case defaults, and allow missing Notion profile mappings for non-Notion intake forms.

* chore(civi-crm): remove legacy contact endpoint

Drop the old public contact submission route after connect migrated to afform-submit.

* test(civi-crm): cover connect afform-submit path

Assert connect case defaults, Note joins, and CiviCRM-required behaviour when Notion is skipped.

* docs(funnel): add connect to intake flow

Document the fourth form and its CiviCRM-only routing contract in the funnel intake guide.

* fix(web): update afform circle contact form question field

* feat(notion): add scorecard page content to funnel form submissions

heading_2, four bulleted_list_item blocks, and a paragraph for the
overall fit line using proper Notion block types.

* refactor(civi-crm): drop wildcard CORS from afform-submit

Rely on the public-cors middleware for origin allowlisting instead of
emitting Access-Control-Allow-Origin: * and a redundant OPTIONS handler.

* feat(web): rename /connect route to /contact

Updates the ROUTES constant and moves the app directory from
[locale]/connect to [locale]/contact.

* chore(web): exclude /contact from sitemap

Page currently redirects to the homepage, so it should not be indexed.

* docs(funnel): note /connect renamed to /contact and form removed
2026-06-02 16:50:28 +09:00
jinhojang6 822c9ed614 feat: implement basecamp install CTA resolver and update links across components 2026-06-02 01:35:03 +09:00
jinhojang6 9e8ffc1c84 refactor: update responsive styles and improve layout across multiple components 2026-06-02 00:58:34 +09:00
jinhojang6 5e9d2ca24f refactor: refactor responsive styles across multiple components to improve layout and readability
- Updated hero-section, mountain-section, and parallel-society-section to use min-[1025px] for responsive design.
- Adjusted press-section and social-proof-section for better mobile and desktop handling.
- Enhanced start-building-section and tech-stack-section with new responsive classes.
- Modified use-cases-section to improve scrolling behavior based on breakpoints.
- Refined tech-overview-use-cases and footer components for consistent styling.
2026-06-02 00:19:15 +09:00
Jinho Jang 2dd9e79699 feat: add /ukdebt page (#27) 2026-06-01 20:53:03 +09:00
FelicioandJulesFILIOT ee04d72683 add forms for CRM funnels
* add forms for CRM funnels

* a

* set profile and lead source

- https://civicrm.logos.co/civicrm/admin/afform/submissions#/?name=afformActivistBuilder
- https://civicrm.logos.co/civicrm/contact/view?reset=1&cid=1000
- https://civicrm.logos.co/civicrm/contact/view?reset=1&cid=1000
- https://civicrm.logos.co/civicrm/contact/view/case?reset=1&id=388&cid=1000&action=view&context=case&selectedChild=case&key=CRMCaseFormSearch3vjNUK027Z0YMdmpnTbHyNePydwogixSnFN3Z2YluYYR4_8939

* default checkboxes to true

* remove titles

* u

* add policy

* t

* fix(civi-crm): avoid readonly env writes in CORS test

Use a keyed env helper in the public CORS test so cleanup and setup no longer rely on delete or readonly typed env properties.

* fix(web): align node programme route keys

Rename node program route/message keys to node programme and update links, metadata, sitemap entries, and contract tests.

---------

Co-authored-by: JulesFILIOT <dev@julesfiliot.com>
2026-06-01 17:59:37 +09:00
Jinho Jang cdc110a0ac UI updates (#15)
* Refactor technology stack integration and update documentation links

- Updated the technology stack links in various components to point to the new GitHub documentation repository.
- Refactored the Lambda Prize page to utilize a shared TechStackSection instead of local tech cards.
- Removed redundant tech stack message copies from the storage and technology stack pages.
- Enhanced the home feature cards section to use Link components for navigation.
- Added tests to ensure the integrity of the new tech stack structure and documentation links.

* feat: integrate social proof stats into home page and update related components
2026-05-27 13:26:53 +09:00
Jinho Jang 8151907129 UI updates based on the Figma design (#12)
* fix: update Discord URLs to point to the new logosnetwork link

* fix: update navigation links to point to external resources and improve backdrop click handling

* feat: implement Node Programme signup form and update related page content
2026-05-27 11:57:41 +09:00
Jinho Jang 4128e6f07b feat: update external links to point to IFT jobs board and adjust layout for article entries (#8) 2026-05-26 20:21:34 +09:00
Jinho Jang 1a37cf1f22 fix: use British English for public copy and paths (#5) 2026-05-26 19:22:57 +09:00
jinhojang6 6463494e96 feat: Add Basecamp page and update links throughout the site
- Introduced new Basecamp page at `/basecamp` with detailed sections on its features, capabilities, and installation.
- Updated multiple references across the site to link to the new Basecamp page instead of the old technology stack anchor.
- Added new images for Basecamp to the public images directory.
- Modified existing JSON files to reflect the new structure and content for Basecamp.
- Enhanced the navigation to direct users to the Basecamp installation page.
2026-05-23 00:04:32 +09:00
jinhojang6 dbdca73925 fix: hide deferred about and circle detail surfaces 2026-05-20 23:48:26 +09:00
jinhojang6 1e7f9c4abc feat: add Get Started page with navigation and localization support 2026-05-19 21:09:19 +09:00
jinhojang6 8083bb987f fix: repair static seo output 2026-05-18 15:30:43 +09:00
jinhojang6 d59d4689ec fix: update Logos forum links 2026-05-15 20:38:47 +09:00
jinhojang6 a96eb1e06d feat: Implement site content management with new collections for site settings, navigation, and footer
- Added new collections for site settings, navigation, and footer with pull request hooks for saving changes.
- Introduced media collection for managing uploaded assets.
- Updated page management to include route validation and JSON schema compliance.
- Refactored existing code to accommodate new site content structure and ensure proper data handling.
- Enhanced link policy tests to prevent shipping of placeholder or broken links.
2026-05-14 20:48:12 +09:00
jinhojang6 db8822b1de Refactor Builders Hub settings and resources
- Updated London and Porto circle configurations to use new forum and join URLs.
- Changed initiative hrefs to point to the resources section.
- Modified resource links in the English resources file to point to the new structure.
- Introduced new collections for Builder Hub settings and resources with appropriate hooks for saving changes as pull requests.
- Added tests for saving builder resources as pull requests.
- Updated the technology stack pages to reflect new link structures and improved SEO keywords.
2026-05-14 20:34:22 +09:00
jinhojang6 25481b219f Refactor code structure for improved readability and maintainability 2026-05-12 16:39:54 +09:00