Skip to content

Repository files navigation

devslab-kr.github.io

Root hub for devslab's GitHub Pages project sites — a card index of every open-source library with live demo / GitHub / npm links, plus the org-wide sitemap.xml and Google Search Console verification for the whole devslab-kr.github.io prefix.

Live: https://devslab-kr.github.io/

GitLinq address compatibility

GitLinq product information and its Korean beginner guide now live on the company website: https://devslab.kr/products/gitlinq/ and https://devslab.kr/products/gitlinq/docs/. The OSS hub home page remains focused on open-source projects.

The former /gitlinq/ and /gitlinq/docs/ addresses contain move notices. Their JavaScript redirects preserve URL fragments; a no-script meta refresh and a visible link keep the company destinations reachable without JavaScript. Canonical URLs point to the company pages, and the redirects are excluded from this hub's sitemap.

The former assets/gitlinq/ files and release-selector tests remain for cached page compatibility. Public binary downloads still come from devslab-kr/gitlinq-releases. Run npm test to check the hub, redirects, and retained download selection.

OSS brand snapshot

This hub vendors the public DevsLab OSS brand release rather than consuming it at runtime. The pinned Q-line snapshot is v0.3.0, represented by the immutable 305-file SHA-256 manifest at scripts/oss-brand-v0.3.0.manifest.json. Run npm run sync:brand to verify the source release, every project checksum, and release ZIP checksum before the local snapshot is replaced. Generated content under assets/oss-brand/ must only change through that command.

The central registry and release source is devslab-kr/oss-brand. The canonical human brand guide is devslab.kr/brand/open-source.

Analytics consent

Analytics is opt-in (owner decision 2026-10-05, @devslab/site-kit consent, DDS D-034). Until a visitor grants analytics for the current policy version, nothing on the hub contacts Google: no Tag Manager loader, no gtag, no GA cookies, no <noscript> iframe, and no Google Fonts (the webfonts are self-hosted, see Design). tests/consent.test.mjs fails if any page or stylesheet names a Google host outside the consent boot script.

  • Every page carries one inline boot script between <!-- consent:start --> and <!-- consent:end -->, generated by npm run sync:consent (scripts/consent-boot.mjs). It reads the first-party site_consent cookie and loads Tag Manager (GTM-5WGTTWSF) only for a current grant.
  • assets/consent/ holds the browser side: the kit's consent module vendored by the same command (site-kit-consent.js, site-kit-gtm.js — do not edit), the bar and settings dialog (consent-ui.js, messages.js — byte-identical copies of devslab.kr's src/consent/consent-ui.mjs and messages.mjs, 14 locales; change both repos together), and the hub's settings in config.js.
  • The bar is short (site-kit 0.17.0, owner decision 2026-10-06): what is collected, why, and that it is optional, then "자세히 보기" — a link to devslab.kr/privacy at the section that carries the full disclosure (Google Analytics 4, Google LLC, the transfer to the United States, 14 months, no ads, how to withdraw): #processors, section 5. That link is learnMoreHref in config.js; it must keep its #anchor (the bar refuses to mount without one) and use the same section id devslab.kr's own bar links to (its CONSENT_LEARN_MORE_SECTION). The settings dialog shows necessary and analytics one line each, a policy link, and two equal buttons, 취소 and 선택 저장.
  • The footer's "쿠키 설정" link reopens the settings to change or withdraw.
  • There is no backend, so the proof of a decision is the cookie on the visitor's device; the shared policy at devslab.kr/privacy says so. Bump POLICY_VERSION in config.js together with devslab.kr when what that policy says about analytics changes, then run npm run sync:consent.

Design

The page shares devslab.kr's design language (see that site's repo for the reference implementation): zinc palette with a light/dark toggle (localStorage 'theme', light default), electric cyan accent, Geist / Geist Mono webfonts, DevsLab logo mark + wordmark, dot-grid hero, mono // labels and [NN] card numbering. The fonts are self-hosted in assets/fonts/, generated by npm run sync:fonts from @fontsource-variable/geist and geist-mono (SIL OFL 1.1, licences alongside); never link Google Fonts, which would reach Google before the consent bar is answered. devslab.kr links back here from its header (Open Source) and footer. No external-link ↗ arrows — hover color/border carries the affordance. When one side's look changes, keep the other in sync.

The technical cyan hero atmosphere is ambient decoration only. It remains on the physical right at 86% 22%, never fills a mark, and is disabled for forced-colors and print.

i18n

Same 14 locales as devslab.kr (ko en ja zh-HK zh-TW hi vi id th pt-BR fr de es ar), implemented as an inline dictionary in index.html: header language dropdown, browser-language auto-detect, localStorage 'hub-lang' persistence, RTL for Arabic (mono/code elements stay pinned LTR). Source HTML stays Korean for SEO; the dictionary swaps text client-side. When a card is added or copy changes, update every locale in the I18N object.

About

devslab open-source hub — live demos and docs for our JS/TS libraries

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages