<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Justin Dah-kenangnon</title>
    <description>The latest articles on DEV Community by Justin Dah-kenangnon (@dahkenangnon).</description>
    <link>https://dev.to/dahkenangnon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F471233%2F481baaa7-4789-4a94-9792-a19178171162.jpeg</url>
      <title>DEV Community: Justin Dah-kenangnon</title>
      <link>https://dev.to/dahkenangnon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dahkenangnon"/>
    <language>en</language>
    <item>
      <title>Stop Typing "test@test.com" — Fill Any Form in One Click with FillKit</title>
      <dc:creator>Justin Dah-kenangnon</dc:creator>
      <pubDate>Wed, 29 Apr 2026 05:45:41 +0000</pubDate>
      <link>https://dev.to/dahkenangnon/stop-typing-testtestcom-fill-any-form-in-one-click-with-fillkit-1f9h</link>
      <guid>https://dev.to/dahkenangnon/stop-typing-testtestcom-fill-any-form-in-one-click-with-fillkit-1f9h</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44w6v9waz32op53d6ast.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44w6v9waz32op53d6ast.gif" alt="See how easy is it to fill any form with FillKit" width="720" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every developer has been there. You're wiring up a new registration flow, spinning through a QA checklist, or demoing a feature to a stakeholder — and you find yourself typing the same fake name, the same throwaway email address, and the same placeholder phone number for the forty-seventh time that week.&lt;/p&gt;

&lt;p&gt;It is not a workflow problem. It is a &lt;em&gt;friction tax&lt;/em&gt; — invisible, constant, and entirely eliminable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fillkit.dev/" rel="noopener noreferrer"&gt;FillKit&lt;/a&gt; is a free, open-source browser extension that removes that tax entirely. One click. Every field filled. Context-aware, locale-correct, realistic data — generated locally, with no account required and no data leaving the browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  What FillKit Actually Does
&lt;/h2&gt;

&lt;p&gt;FillKit is a browser extension that introspects the DOM of any web page, identifies form fields by type and semantic context, and populates them with statistically plausible, structurally valid data. No manual field mapping. No schema files. No configuration ceremony.&lt;/p&gt;

&lt;p&gt;The intelligence lives in its &lt;strong&gt;semantic field detection engine&lt;/strong&gt; — a TF-IDF cosine similarity model that infers what each field expects from its label text, &lt;code&gt;name&lt;/code&gt; attribute, &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;placeholder&lt;/code&gt;, &lt;code&gt;autocomplete&lt;/code&gt; hints, and surrounding DOM context. A field labeled &lt;em&gt;"Date of birth"&lt;/em&gt; gets a valid past date. A field with &lt;code&gt;autocomplete="tel"&lt;/code&gt; in a French locale gets a properly formatted French mobile number. A password field gets a string that satisfies typical complexity rules.&lt;/p&gt;

&lt;p&gt;The data is generated entirely &lt;strong&gt;client-side&lt;/strong&gt; using &lt;a href="https://www.npmjs.com/package/@fillkit/core" rel="noopener noreferrer"&gt;@fillkit/core&lt;/a&gt;, the open-source engine underpinning the extension, built on top of &lt;a href="https://fakerjs.dev/" rel="noopener noreferrer"&gt;Faker.js&lt;/a&gt; with locale-specific overrides and field-type heuristics layered on top.&lt;/p&gt;




&lt;h2&gt;
  
  
  Install in One Click — All Three Browsers Supported
&lt;/h2&gt;

&lt;p&gt;FillKit is available for free across all major Chromium-based browsers and Firefox:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🟢 &lt;strong&gt;Chrome&lt;/strong&gt; → &lt;a href="https://chromewebstore.google.com/detail/fillkit/lajjifnmncbjbdkcakmbikjanofilmld" rel="noopener noreferrer"&gt;Add to Chrome — Free&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔵 &lt;strong&gt;Microsoft Edge&lt;/strong&gt; → &lt;a href="https://chromewebstore.google.com/detail/fillkit/lajjifnmncbjbdkcakmbikjanofilmld" rel="noopener noreferrer"&gt;Add to Edge — Free&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🦊 &lt;strong&gt;Firefox&lt;/strong&gt; → &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/fillkit/" rel="noopener noreferrer"&gt;Add to Firefox — Free&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No sign-up. No extension permissions beyond the active tab. Uninstall cleanly with zero residual data.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Developer-Facing Features That Matter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Zero-Config Field Detection
&lt;/h3&gt;

&lt;p&gt;FillKit does not require annotating your HTML with custom attributes or wiring a schema. The detection engine resolves field intent at runtime. This means it works on forms you did not build, on third-party SaaS dashboards, on legacy codebases with no semantic markup hygiene whatsoever.&lt;/p&gt;

&lt;p&gt;This is architecturally significant: the extension treats the DOM as an &lt;em&gt;inference target&lt;/em&gt;, not a configuration artifact.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 50+ Locale Support
&lt;/h3&gt;

&lt;p&gt;Data generation is locale-aware. Switch to &lt;code&gt;fr_FR&lt;/code&gt; and phone numbers follow French mobile formatting (&lt;code&gt;06 XX XX XX XX&lt;/code&gt;). Switch to &lt;code&gt;pt_BR&lt;/code&gt; and CPF-like document numbers appear in the right fields. This is not cosmetic — locale-mismatched data is a common source of validation failures in internationalization testing.&lt;/p&gt;

&lt;p&gt;Supported locales cover all UEMOA/Francophone West African contexts, European regions, North and South America, East Asia, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Valid / Invalid Mode Switching
&lt;/h3&gt;

&lt;p&gt;The extension exposes a mode toggle for generating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Valid data&lt;/strong&gt; — structurally correct, passes standard validation rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invalid data&lt;/strong&gt; — format violations, boundary overflows, empty where required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it a practical tool for &lt;strong&gt;negative-path QA&lt;/strong&gt; — the category of testing that developers routinely deprioritize because populating the forms manually to reach those states is tedious.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Pinned / Fixed Values
&lt;/h3&gt;

&lt;p&gt;Specific fields can be locked to a fixed value while the rest of the form generates randomly. The canonical use case: pin &lt;code&gt;email&lt;/code&gt; to your own address during a demo so confirmation emails arrive in a real inbox, while everything else fills automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The npm Package — &lt;code&gt;@fillkit/core&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;For teams who want programmatic access to the data generation engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @fillkit/core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FillKit&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@fillkit/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;FillKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;valid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autofillAll&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Fill all forms&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables integration into Playwright, Cypress, or Puppeteer test suites where synthetic realistic data is needed without hardcoding fixtures.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Open-Source Architecture
&lt;/h2&gt;

&lt;p&gt;The full implementation is public on GitHub under the &lt;a href="https://github.com/fillkit" rel="noopener noreferrer"&gt;fillkit&lt;/a&gt; organization. The separation of concerns is clean:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core engine&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@fillkit/core&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Field detection, locale-aware data generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser extension&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;github.com/in-browser&lt;/code&gt; (Chrome/Firefox)&lt;/td&gt;
&lt;td&gt;DOM traversal, UI, popup, content script&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SDK&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@fillkit/sdk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Headless API for programmatic use&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All data is generated &lt;strong&gt;in-process, in the browser&lt;/strong&gt;. No telemetry. No analytics. No outbound requests. The &lt;a href="https://fillkit.dev/privacy" rel="noopener noreferrer"&gt;privacy policy&lt;/a&gt; is structurally simple: there is nothing to collect.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical QA Workflows This Unlocks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Multi-step registration testing:&lt;/strong&gt; Fill a 5-step onboarding wizard in under 10 seconds per pass. Vary locale and data mode across passes to cover happy path, edge case, and invalid input branches without maintaining fixtures for each.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Staging environment hygiene:&lt;/strong&gt; Eliminate &lt;code&gt;test123&lt;/code&gt;, &lt;code&gt;asdf@asdf.com&lt;/code&gt;, and &lt;code&gt;John Doe&lt;/code&gt; from staging databases. Team-generated data is statistically realistic, which makes database queries, analytics dashboards, and search relevance tests meaningful rather than degenerate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo preparation:&lt;/strong&gt; Fill a CRM contact form with a realistic prospect record in one click before a screen-share. The data is plausible to observers — no "AAAA BBBBB" visible in demo recordings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Internationalization regression:&lt;/strong&gt; Switch locale, refill, and verify that date pickers, phone formatters, and address decompositions (separate street/city/postcode fields vs. freeform) handle locale-specific data correctly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Is Not Just Another Form Autofiller
&lt;/h2&gt;

&lt;p&gt;Browser-native autofill (Chrome, Safari, Firefox) is built around &lt;em&gt;personal data persistence&lt;/em&gt; — it stores and replays your own information. Password managers extended this with credential fields. Both are oriented toward &lt;strong&gt;end-user convenience in production&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;FillKit's design axis is orthogonal: it is oriented toward &lt;strong&gt;developer efficiency in non-production environments&lt;/strong&gt;. The data is synthetic by design. The locale switching is deliberate. The invalid-data mode has no analogue in any autofill system. The npm package has no analogue in any consumer extension.&lt;/p&gt;

&lt;p&gt;It is, in effect, a &lt;strong&gt;test data generation tool&lt;/strong&gt; delivered as a browser extension — meeting developers at the workflow layer where the friction actually lives.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Coming: FillKit Cloud
&lt;/h2&gt;

&lt;p&gt;The extension and SDK are the OSS foundation. We are building &lt;strong&gt;FillKit Cloud&lt;/strong&gt; — shared team configurations, managed API access, and synchronized test data profiles across environments. A waitlist is open at &lt;a href="https://fillkit.dev/#waitlist" rel="noopener noreferrer"&gt;fillkit.dev/#waitlist&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get It Now
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Browser&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chrome&lt;/td&gt;
&lt;td&gt;&lt;a href="https://chromewebstore.google.com/detail/fillkit/lajjifnmncbjbdkcakmbikjanofilmld" rel="noopener noreferrer"&gt;chromewebstore.google.com — FillKit&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edge&lt;/td&gt;
&lt;td&gt;&lt;a href="https://chromewebstore.google.com/detail/fillkit/lajjifnmncbjbdkcakmbikjanofilmld" rel="noopener noreferrer"&gt;chromewebstore.google.com — FillKit&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firefox&lt;/td&gt;
&lt;td&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/fillkit/" rel="noopener noreferrer"&gt;addons.mozilla.org — FillKit&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@fillkit/core" rel="noopener noreferrer"&gt;@fillkit/core&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/fillkit/sdk" rel="noopener noreferrer"&gt;github.com/fillkit/sdk&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docs&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/fillkit/sdk#readme" rel="noopener noreferrer"&gt;github.com/fillkit/sdk#readme&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo&lt;/td&gt;
&lt;td&gt;&lt;a href="https://demo.fillkit.dev" rel="noopener noreferrer"&gt;demo.fillkit.dev&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;The extension and SDK are open source. All data is generated locally — no real user data is collected.*&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>testing</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a better documentation site for oidc-provider</title>
      <dc:creator>Justin Dah-kenangnon</dc:creator>
      <pubDate>Mon, 06 Apr 2026 11:04:45 +0000</pubDate>
      <link>https://dev.to/dahkenangnon/i-built-a-better-documentation-site-for-oidc-provider-1f11</link>
      <guid>https://dev.to/dahkenangnon/i-built-a-better-documentation-site-for-oidc-provider-1f11</guid>
      <description>&lt;p&gt;While building a production-ready OpenID Connect server with oidc-provider, I ran into a recurring issue:&lt;/p&gt;

&lt;p&gt;👉 the documentation is powerful, but not easy to navigate.&lt;/p&gt;

&lt;p&gt;So I built this:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://oidc-provider.dev/" rel="noopener noreferrer"&gt;https://oidc-provider.dev/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;oidc-provider has excellent documentation, but it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spread across multiple files (README, docs/, events, changelog)&lt;/li&gt;
&lt;li&gt;not easily browsable&lt;/li&gt;
&lt;li&gt;hard to search or explore progressively&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes onboarding and day-to-day usage slower than it should be.&lt;/p&gt;




&lt;h2&gt;
  
  
  The solution
&lt;/h2&gt;

&lt;p&gt;I created a &lt;strong&gt;dedicated documentation site&lt;/strong&gt; that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📚 fully browsable (multi-page navigation)&lt;/li&gt;
&lt;li&gt;🔍 searchable&lt;/li&gt;
&lt;li&gt;🧭 easier to explore than raw Markdown&lt;/li&gt;
&lt;li&gt;🗂 structured by topics&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Always in sync with upstream
&lt;/h2&gt;

&lt;p&gt;The key design constraint was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;never diverge from the official documentation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the site is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;automatically generated from official sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;README&lt;/li&gt;
&lt;li&gt;docs/*&lt;/li&gt;
&lt;li&gt;CHANGELOG&lt;/li&gt;
&lt;li&gt;events.md&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;continuously synced via GitHub Actions&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Any update in the upstream repository is reflected automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;oidc-provider is a &lt;strong&gt;low-level, spec-compliant implementation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a lot of behavior is driven by specs&lt;/li&gt;
&lt;li&gt;documentation is dense and technical&lt;/li&gt;
&lt;li&gt;discoverability is critical&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This site aims to improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;onboarding speed&lt;/li&gt;
&lt;li&gt;feature discoverability&lt;/li&gt;
&lt;li&gt;overall developer experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;Planned additions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;real-world configuration examples&lt;/li&gt;
&lt;li&gt;deployment patterns&lt;/li&gt;
&lt;li&gt;integration guides&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Live site: &lt;a href="https://oidc-provider.dev/" rel="noopener noreferrer"&gt;https://oidc-provider.dev/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 Source: &lt;a href="https://github.com/Dahkenangnon/oidc-provider.dev" rel="noopener noreferrer"&gt;https://github.com/Dahkenangnon/oidc-provider.dev&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;If you are using oidc-provider, feedback is highly valuable.&lt;/p&gt;

&lt;p&gt;The goal is to make the ecosystem easier to approach without altering its philosophy.&lt;/p&gt;

</description>
      <category>oidc</category>
      <category>openid</category>
      <category>openidconnect</category>
      <category>oauth2</category>
    </item>
  </channel>
</rss>
