Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/content/docs/docs/guides/launchdarkly-to-openfeature-nodejs.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,16 @@ Enable strict enforcement only after all direct LaunchDarkly calls are resolved.

---

## Switching to Flipt

If you're migrating to **Flipt** as your flag evaluation backend (rather than staying on LaunchDarkly through OpenFeature), Flipt's official documentation includes a dedicated guide for this migration — and recommends FlagLint as the tool for the codebase analysis step:

**[Migrating from LaunchDarkly SDK to OpenFeature SDK → Flipt docs](https://docs.flipt.io/v1/guides/migration/launchdarkly/openfeature#optional-use-flaglint)**

Use FlagLint to audit and preview call-site rewrites, then follow Flipt's guide to wire up the Flipt OpenFeature provider.

---

## Get started

Run the audit command to see where you stand. FlagLint runs entirely locally — your source code does not leave your machine.
Expand Down
16 changes: 15 additions & 1 deletion src/content/docs/docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,24 @@ description: Run your first FlagLint audit, inspect inventory, preview migration
lastUpdated: 2026-07-01
---

## Installation

**npm / npx**
```bash
npx flaglint@latest audit # run without installing
npm install -g flaglint # install globally
```

**Homebrew (macOS / Linux — no Node.js required)**
```bash
brew tap flaglint/tap
brew install flaglint
```

## Requirements

- Node.js 20 or newer.
- A JavaScript or TypeScript project using LaunchDarkly Node.js server-side SDK evaluation calls from `@launchdarkly/node-server-sdk` or `launchdarkly-node-server-sdk`.
- Node.js 20+ is only required for the npm install path. The Homebrew install is self-contained.

Browser SDKs (`launchdarkly-js-client-sdk`), non-Node SDKs, and non-LaunchDarkly providers are outside auto-migration coverage. React SDK hooks, HOC, and provider are detected for manual review.

Expand Down
55 changes: 55 additions & 0 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,44 @@ const jsonLd = {
.workflow-copy { white-space: nowrap; }
}

/* ── Ecosystem bar ──────────────────────────────────────────────── */
.ecosystem-bar {
border-top: 1px solid var(--border);
border-bottom: 1px solid var(--border);
background: var(--surface);
padding: 14px 24px;
display: flex;
flex-wrap: wrap;
gap: 10px 20px;
align-items: center;
justify-content: center;
}
[data-theme="light"] .ecosystem-bar { background: #f9fbfa; }
.ecosystem-label {
font-size: 11px;
font-weight: 600;
letter-spacing: .07em;
text-transform: uppercase;
color: var(--subtle);
}
.ecosystem-links {
display: flex;
flex-wrap: wrap;
gap: 6px 14px;
align-items: center;
}
.ecosystem-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
font-weight: 500;
color: var(--accent);
text-decoration: none;
}
.ecosystem-link:hover { text-decoration: underline; }
.ecosystem-sep { color: var(--border-strong); font-size: 13px; }

/* ── Section: Proof (argument-order problem) ─────────────────────── */
.section-proof {
background: var(--surface);
Expand Down Expand Up @@ -934,6 +972,22 @@ const jsonLd = {
</div>
</section>

<!-- ── Ecosystem bar ─────────────────────────────────────────────── -->
<div class="ecosystem-bar">
<span class="ecosystem-label">Recommended by the ecosystem</span>
<div class="ecosystem-links">
<a href="https://openfeature.dev/ecosystem/?instant_search%5BrefinementList%5D%5Btype%5D%5B0%5D=Integration" target="_blank" rel="noopener noreferrer" class="ecosystem-link">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><circle cx="8" cy="8" r="7.25" stroke="currentColor" stroke-width="1.5"/><path d="M8 1.5C8 1.5 5 4.5 5 8s3 6.5 3 6.5M8 1.5C8 1.5 11 4.5 11 8s-3 6.5-3 6.5M1.5 8h13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
OpenFeature Ecosystem
</a>
<span class="ecosystem-sep">·</span>
<a href="https://docs.flipt.io/v1/guides/migration/launchdarkly/openfeature#optional-use-flaglint" target="_blank" rel="noopener noreferrer" class="ecosystem-link">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M13 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1Z" stroke="currentColor" stroke-width="1.5"/><path d="M5 8h6M5 5.5h4M5 10.5h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
Recommended in Flipt's LaunchDarkly migration guide
</a>
</div>
</div>

<!-- ════════════════════════════════════════════════════════════════
SECTION 2 — THE PROOF (argument-order problem)
═════════════════════════════════════════════════════════════════ -->
Expand Down Expand Up @@ -1185,6 +1239,7 @@ const enabled = await <span class="arch-hi-green">client.getBooleanValue</span>(
<a href="/blog/">Blog</a>
<a href="https://github.com/flaglint/flaglint" target="_blank" rel="noopener noreferrer">GitHub</a>
<a href="https://www.npmjs.com/package/flaglint" target="_blank" rel="noopener noreferrer">npm</a>
<a href="https://openfeature.dev/ecosystem/?instant_search%5BrefinementList%5D%5Btype%5D%5B0%5D=Integration" target="_blank" rel="noopener noreferrer">OpenFeature</a>
<a href="/trust">Trust</a>
<a href="/docs/reference/security">Security</a>
<a href="/privacy">Privacy</a>
Expand Down
Loading