Add EviKit as alternative JavaScript SSR framework (#1579)

### Description of Changes

Hi, in your list there are Next.js and SvelteKit (strictly speaking, Svelte, but it's mostly used through SvelteKit).

I'd like to note that my library [EviKit](https://evikit.js.org) covers a small but useful subset of their functionality in a highly opinionated way, and I haven't used any LLM to write it, so it might be of interest to people of this community. I only partially qualify for self-submission because:

- I don't have a code of conduct or no-AI policy, it's a small one-person project to which nobody else is likely to contribute
- I don't have a goal of replacing main dependencies that are listed for being LLM-friendly (npm, Valibot, Vite)

However, there are no other alternatives suggested, so this is something.

- [x] no previous strikes or bans in the repo
- [x] project is completely FOSS: [evikit](https://codeberg.org/nykula/evikit) (MIT) + [create-evikit](https://codeberg.org/nykula/create-evikit) (0BSD)
- [ ] project has a "Code of Conduct"
- [ ] project has a "No AI Policy"

Reviewed-on: https://codeberg.org/ethical-foss/open-slopware/pulls/1579
Reviewed-by: Ethical FOSS admin <ethical-foss-admin@noreply.codeberg.org>
This commit is contained in:
nykula 2026-09-26 12:17:10 +02:00 • committed by hmn
commit 05cfa0a563

View file

@ -2171,13 +2171,13 @@ Note that TypeScript is itself tainted; see [the Programming Languages section](
| [ESLint](https://eslint.org/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://eslint.org/docs/latest/use/mcp))<br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://eslint.org/docs/latest/contribute/ai-policy)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [es-toolkit](https://es-toolkit.dev) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://es-toolkit.dev/ai-integration.html))<br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/toss/es-toolkit/blob/main/AGENTS.md), [2](https://github.com/toss/es-toolkit/commit/b3f1f5433144a54c80fb61e4c9fda0d71cf9c85f)) | [Lodash](https://github.com/lodash/lodash) |
| [fnm](https://fnm.vercel.app/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/Schniz/fnm/blob/master/AGENTS.md)) | [n](https://github.com/tj/n) |
| [Next.js](https://nextjs.org/) | [`v13.2.5-canary.0`](https://github.com/vercel/next.js/releases/tag/v13.2.5-canary.0) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://nextjs.org/docs/app/guides/mcp), [2](https://nextjs.org/docs/app/guides/ai-agents))<br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/vercel/next.js/blob/766b7cbff4debc579bcff3f5c823dfb4d55f74fc/AGENTS.md), [2](https://github.com/vercel/next.js/commit/b785969e83dfcc948be69eb7ec182a2808c183ff), [3](https://github.com/vercel/next.js/commit/f760e48532355197ec8902804dce76a55d1a07f8))<br />[![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/vercel/next.js/pull/77692), [2](https://github.com/vercel/next.js/pull/77846), [3](https://github.com/vercel/next.js/pull/77929))<br />[![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://vercel.com/)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [Next.js](https://nextjs.org/) | [`v13.2.5-canary.0`](https://github.com/vercel/next.js/releases/tag/v13.2.5-canary.0) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://nextjs.org/docs/app/guides/mcp), [2](https://nextjs.org/docs/app/guides/ai-agents))<br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/vercel/next.js/blob/766b7cbff4debc579bcff3f5c823dfb4d55f74fc/AGENTS.md), [2](https://github.com/vercel/next.js/commit/b785969e83dfcc948be69eb7ec182a2808c183ff), [3](https://github.com/vercel/next.js/commit/f760e48532355197ec8902804dce76a55d1a07f8))<br />[![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/vercel/next.js/pull/77692), [2](https://github.com/vercel/next.js/pull/77846), [3](https://github.com/vercel/next.js/pull/77929))<br />[![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://vercel.com/)) | See below |
| [npm](https://www.npmjs.com/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/npm/cli/commit/080e3b29e69d35d7b0f4823a9ac7ab4e1e4d1af6), [2](https://github.com/npm/cli/commit/c0fc54935af8e17a3a96cbdeac52bb4c597803b6)) <br /> [![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://www.npmjs.com/)) | [Yarn Classic] |
| [npmx](https://npmx.dev/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/npmx-dev/npmx.dev/blob/e3b575ad0760ce79a278e34fc3553020d093e940/CONTRIBUTING.md#using-ai), [2](https://github.com/npmx-dev/npmx.dev/blob/7f2fc1ae716605c87612b0e138aa95a277d44559/.github/copilot-instructions.md), [3](https://github.com/npmx-dev/npmx.dev/pull/1513/changes/557db327a06ffa2d42e67a8df3ccc107381fe063))<br />[![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/npmx-dev/npmx.dev/pull/2183#issuecomment-4104059314)) | [Yarn Classic] |
| [nvm](https://github.com/nvm-sh/nvm) | [`v0.40.2`](https://github.com/nvm-sh/nvm/releases/tag/v0.40.2)? | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/nvm-sh/nvm/pull/3609), [2](https://github.com/nvm-sh/nvm/blob/master/AGENTS.md)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [pnpm](https://pnpm.io) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Vibecoded](./badges/vibecoded.svg)](#vibecoded) ([1](https://github.com/pnpm/pnpm/blob/main/AGENTS.md)) <br /> [![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/pnpm/pnpm/blob/main/REVIEW_GUIDE.md), [2](https://github.com/pnpm/pnpm/pull/12809)) | [Yarn Classic] |
| [React](https://react.dev/) | [`v19.1.1`](https://github.com/react/react/releases/tag/v19.1.1) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://github.com/react/react/blob/d5736f098edee62c44f27b053e6e48f5fa443803/compiler/packages/react-mcp-server/README.md))<br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/react/react/blob/d5736f098edee62c44f27b053e6e48f5fa443803/CLAUDE.md), [2](https://github.com/react/react/commit/90a124a9802a5ab6509d5838e65b9f4d4fbbc16b), [3](https://github.com/react/react/commit/2b4064eb9b40f65d20a03ce93b246ad762d562e6)) <br />[![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/react/react/pull/32777), [2](https://github.com/react/react/pull/32991), [3](https://github.com/react/react/pull/36353)) <br />[![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://opensource.fb.com/projects/)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [Svelte](https://svelte.dev/) | [`5.46.1`](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.1) <br />[`965bf6c`](https://github.com/sveltejs/svelte/commit/965bf6ceec0c6ee5347df6b04781fe9fe41aa5a5) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://svelte.dev/docs/ai/mcp)) <br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/sveltejs/svelte/blob/main/AGENTS.md), [2](https://github.com/sveltejs/svelte/blob/main/.agents/skills/performance-investigation/SKILL.md)) <br />[![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/sveltejs/svelte/pull/18114#pullrequestreview-4110456554), [2](https://github.com/sveltejs/svelte/pull/18115#pullrequestreview-4110464518), [3](https://github.com/sveltejs/svelte/pull/18271#pullrequestreview-4341835134)) <br />[![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://opencollective.com/svelte)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [Svelte](https://svelte.dev/) | [`5.46.1`](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.1) <br />[`965bf6c`](https://github.com/sveltejs/svelte/commit/965bf6ceec0c6ee5347df6b04781fe9fe41aa5a5) | [![AI Functionality](./badges/ai-functionality.svg)](#ai-functionality) ([1](https://svelte.dev/docs/ai/mcp)) <br />[![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/sveltejs/svelte/blob/main/AGENTS.md), [2](https://github.com/sveltejs/svelte/blob/main/.agents/skills/performance-investigation/SKILL.md)) <br />[![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/sveltejs/svelte/pull/18114#pullrequestreview-4110456554), [2](https://github.com/sveltejs/svelte/pull/18115#pullrequestreview-4110464518), [3](https://github.com/sveltejs/svelte/pull/18271#pullrequestreview-4341835134)) <br />[![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://opencollective.com/svelte)) | See below |
| [TS for GIR](https://gjsify.github.io/docs/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/gjsify/ts-for-gir/blob/80ecf9e071c82f4d107ebf7d1129cb363a025f0d/AGENTS.md), [2](https://github.com/gjsify/ts-for-gir/pull/320), [3](https://github.com/gjsify/ts-for-gir/commit/7b1e2b31df06f59046899d4b2d476187afad95aa)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [Typebox](https://github.com/sinclairzx81) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/sinclairzx81/typebox/pull/1015), [2](https://github.com/sinclairzx81/typebox/issues/1294), [3](https://github.com/sinclairzx81/typebox/issues/1364)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
| [Valibot](https://valibot.dev/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/open-circle/valibot/tree/main/prompts), [2](https://valibot.dev/guides/llms-txt/)) <br /> [![AI Code Reviews](./badges/ai-code-reviews-purple.svg)](#ai-code-reviews) ([1](https://github.com/open-circle/valibot/pull/1388)) <br /> [![AI In Issue Tracker](./badges/ai-in-issue-tracker-teel.svg)](#ai-in-issue-tracker) ([1](https://github.com/open-circle/valibot/issues/1389)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
@ -2187,6 +2187,13 @@ Note that TypeScript is itself tainted; see [the Programming Languages section](
| [Yarn](https://yarnpkg.com/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/yarnpkg/berry/pull/7232), [2](https://github.com/yarnpkg/berry/commit/b311a96d1316d96c2c0f7a1e993220bb8bf782fe)) | [Yarn Classic] |
| [Zod](https://zod.dev/) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) | [![Permissive AI policy](./badges/permissive-ai-policy-orange.svg)](#permissive-ai-policy) ([1](https://github.com/colinhacks/zod/blob/main/AGENTS.md), [2](https://github.com/colinhacks/zod/blob/main/CLAUDE.md), [3](https://github.com/colinhacks/zod/blob/main/.cursorrules)) <br /> [![AI sponsored](./badges/ai-sponsored-blue.svg)](#sponsored-by-ai) ([1](https://github.com/colinhacks/zod/blob/c7805073fef5b6b8857307c3d4b3597a70613bc2/packages/zod/README.md?plain=1#L40)) | [![Request for Help](./badges/request-for-help.svg)](#request-for-help) |
> [!Note]
> #### Alternative SSR frameworks
>
> | Name | Notes |
> |---|---|
> | [EviKit](https://evikit.js.org) | depends on npm, Valibot, Vite etc but itself is LLM-free |
### Lua
| Name | Last Untainted Version or Commit ID | Tags and Evidence | Alternative(s) |