Skip to content

Add Bun SolidStart playground#428

Merged
yamcodes merged 4 commits intomainfrom
bun-solid-start-playground
Nov 24, 2025
Merged

Add Bun SolidStart playground#428
yamcodes merged 4 commits intomainfrom
bun-solid-start-playground

Conversation

@yamcodes
Copy link
Owner

@yamcodes yamcodes commented Nov 24, 2025

Playground to test #242

Summary by CodeRabbit

  • New Features

    • Added a Bun + SolidStart playground with a demo interactive counter that displays runtime environment variables.
    • Added production environment variables exposed at runtime (string, numeric, boolean).
  • Documentation

    • Added README with setup, development, and build instructions for the new playground.
  • Chores

    • Added project config, TypeScript setup, styles, ignore rules, workspace entry, and package manager declarations to integrate the new playground.

✏️ Tip: You can customize this high-level summary in your review settings.

…g in bun-solid-start playground

- Added @arkenv/vite-plugin to the project dependencies and configured it in app.config.ts.
- Defined environment variable types using ArkEnv in app.config.ts.
- Updated app.tsx to display environment variable values and their types.
- Augmented ImportMetaEnv interface to include the defined environment variables.

This update improves the integration of environment variables in the SolidStart playground, showcasing type safety and validation.
@changeset-bot
Copy link

changeset-bot bot commented Nov 24, 2025

⚠️ No Changeset found

Latest commit: 879e85e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Nov 24, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
arkenv Ready Ready Preview Comment Nov 24, 2025 7:13pm

@github-actions github-actions bot added the docs Improvements or additions to documentation label Nov 24, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 24, 2025

Walkthrough

Adds a new Bun + SolidStart playground app that integrates ArkEnv for typed VITE_* environment variables, includes client/server bootstraps, UI component, TypeScript typings, config, docs, workspace entry, and a production .env file plus .gitignore and packageManager updates in related playgrounds.

Changes

Cohort / File(s) Summary
Env schema & Vite plugin
apps/playgrounds/bun-solid-start/app.config.ts, apps/playgrounds/bun-solid-start/.env.production
Defines Env schema (VITE_TEST, VITE_NUMERIC, VITE_BOOLEAN) and wires @arkenv/vite-plugin into Vite; adds production env file with those values.
Project config & workspace
apps/playgrounds/bun-solid-start/package.json, apps/playgrounds/bun-solid-start/tsconfig.json, apps/playgrounds/bun-solid-start/.gitignore, arkenv.code-workspace
New package.json (scripts, deps, packageManager: bun@1.3.2), TypeScript config for Solid/Bun, .gitignore rules, and workspace entry for the playground.
Application source
apps/playgrounds/bun-solid-start/src/app.tsx, apps/playgrounds/bun-solid-start/src/app.css, apps/playgrounds/bun-solid-start/src/entry-client.tsx, apps/playgrounds/bun-solid-start/src/entry-server.tsx
Adds reactive App component displaying typed env vars, styles, client mount (StartClient), and server handler rendering full HTML scaffold with assets/scripts.
Type augmentation
apps/playgrounds/bun-solid-start/src/global.d.ts
Adds global declaration augmenting ImportMetaEnv using ImportMetaEnvAugmented from @arkenv/vite-plugin tied to the exported Env schema.
Docs & README
apps/playgrounds/bun-solid-start/README.md
New README with project creation, development, and build instructions for the SolidStart playground.
Related playground packageManager edits
apps/playgrounds/bun-react/package.json, apps/playgrounds/bun/package.json
Adds packageManager: "bun@1.3.2" entries to existing playground package.json files.

Sequence Diagram(s)

sequenceDiagram
    participant Browser
    participant Client as entry-client.tsx
    participant App as StartClient / App
    participant Env as import.meta.env

    Browser->>Client: load bundle
    Client->>App: mount(StartClient)
    App->>Env: read VITE_TEST,VITE_NUMERIC,VITE_BOOLEAN
    Env-->>App: typed values injected (via Vite plugin)
    Browser->>App: click increment
    App-->>Browser: update rendered count
Loading
sequenceDiagram
    participant Server
    participant Handler as entry-server.tsx
    participant VitePlugin as `@arkenv/vite-plugin`
    participant HTML as Document Renderer

    Server->>Handler: incoming request
    Handler->>VitePlugin: resolve assets & inject env assets/vars
    Handler->>HTML: render full document (meta, assets, app div)
    HTML-->>Handler: HTML response
    Handler-->>Server: send response to client
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to review closely:
    • apps/playgrounds/bun-solid-start/app.config.ts — correctness of the Env schema and plugin wiring.
    • apps/playgrounds/bun-solid-start/src/global.d.ts — import path and type augmentation alignment with Env.
    • apps/playgrounds/bun-solid-start/src/entry-server.tsx — HTML/document renderer and asset/script injection correctness.
    • package.json files — scripts, dependencies, and packageManager entries.

Possibly related PRs

Suggested labels

example

Poem

🐰
I hopped into SolidStart's glen,
With typed VITE vars in my den,
A counter springs, the server sings,
Env values snug beneath my wings. ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add Bun SolidStart playground' accurately describes the main change—introducing a new SolidStart playground directory with Bun tooling and configuration files.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bun-solid-start-playground

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 393e054 and 879e85e.

⛔ Files ignored due to path filters (1)
  • apps/playgrounds/bun-solid-start/bun.lock is excluded by !**/*.lock
📒 Files selected for processing (3)
  • apps/playgrounds/bun-react/package.json (1 hunks)
  • apps/playgrounds/bun-solid-start/package.json (1 hunks)
  • apps/playgrounds/bun/package.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/playgrounds/bun-solid-start/package.json
🧰 Additional context used
📓 Path-based instructions (5)
**/package.json

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use workspace:* protocol for workspace dependencies between packages

When referencing workspace packages, use the workspace:* protocol in dependencies

Files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
{**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml}

📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)

{**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml}: Always use pnpm for all package management operations
Never use npm or yarn commands

Files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
{pnpm-workspace.yaml,**/package.json}

📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)

Certain native dependencies are configured with onlyBuiltDependencies in pnpm configuration: @biomejs/biome, @sentry/cli, @swc/core, @tailwindcss/oxide, @vercel/speed-insights, esbuild, sharp

Files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
apps/playgrounds/bun/**/package.json

📄 CodeRabbit inference engine (apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc)

apps/playgrounds/bun/**/package.json: Use bun install instead of npm install, yarn install, or pnpm install for dependency management
Use bun run <script> instead of npm run <script>, yarn run <script>, or pnpm run <script> for running scripts

Files:

  • apps/playgrounds/bun/package.json
apps/playgrounds/bun-react/**/package.json

📄 CodeRabbit inference engine (apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc)

apps/playgrounds/bun-react/**/package.json: Use bun install instead of npm install, yarn install, or pnpm install in package.json scripts
Use bun run <script> instead of npm run <script>, yarn run <script>, or pnpm run <script> in package.json scripts

Files:

  • apps/playgrounds/bun-react/package.json
🧠 Learnings (14)
📓 Common learnings
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,tsx,jsx} : Use HTML imports with `Bun.serve()` instead of Vite for frontend development
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 428
File: apps/playgrounds/bun-solid-start/package.json:10-17
Timestamp: 2025-11-24T19:09:40.467Z
Learning: Applies to apps/playgrounds/bun**/package.json : Bun playgrounds use fixed version strings for workspace packages (e.g., arkenv/vite-plugin, arkenv) instead of the workspace:* protocol because they use Bun as the package manager while the monorepo uses pnpm, and workspace:* protocol doesn't work across different package managers.
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.html : Use HTML imports with `Bun.serve()` and don't use Vite for frontend bundling and development
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use `dotenv` library
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use the dotenv package
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.ts : Use `bun --hot` to run TypeScript entry files with hot module reloading enabled
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/index.ts : Run frontend development with `bun --hot ./index.ts` for hot module reloading
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 132
File: packages/arkenv/README.md:13-14
Timestamp: 2025-09-09T17:37:19.650Z
Learning: For yamcodes/arkenv project: Runtime support documentation should link to specific examples: Node.js (examples/basic), Bun (examples/with-bun), Vite (examples/with-vite-react-ts).
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,ts,tsx,css} : Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild` for bundling
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use `Bun.serve()` with built-in WebSocket, HTTPS, and route support instead of `express`
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/package.json : Use `bun install` instead of `npm install`, `yarn install`, or `pnpm install` for dependency management

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T19:09:40.467Z
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 428
File: apps/playgrounds/bun-solid-start/package.json:10-17
Timestamp: 2025-11-24T19:09:40.467Z
Learning: Applies to apps/playgrounds/bun**/package.json : Bun playgrounds use fixed version strings for workspace packages (e.g., arkenv/vite-plugin, arkenv) instead of the workspace:* protocol because they use Bun as the package manager while the monorepo uses pnpm, and workspace:* protocol doesn't work across different package managers.

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/package.json : Use `bun install` instead of `npm install`, `yarn install`, or `pnpm install` in package.json scripts

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/package.json : Use `bun run <script>` instead of `npm run <script>`, `yarn run <script>`, or `pnpm run <script>` in package.json scripts

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/package.json : Use `bun run <script>` instead of `npm run <script>`, `yarn run <script>`, or `pnpm run <script>` for running scripts

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to package.json : The project uses `pnpm10.20.0` (specified in `packageManager` field)

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,js} : Use `bun <file>` instead of `node <file>` or `ts-node <file>` for running scripts

Applied to files:

  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,ts,tsx,css} : Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild` for bundling

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx,html,css} : Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild` for bundling

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use `bun <file>` instead of `node <file>` or `ts-node <file>` for running TypeScript and JavaScript files

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.ts : Use `bun --hot` to run TypeScript entry files with hot module reloading enabled

Applied to files:

  • apps/playgrounds/bun/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use `Bun.redis` for Redis operations instead of `ioredis`

Applied to files:

  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use the dotenv package

Applied to files:

  • apps/playgrounds/bun-react/package.json
🔇 Additional comments (2)
apps/playgrounds/bun-react/package.json (1)

20-21: Good: packageManager field correctly specifies Bun.

The addition aligns the playground with Bun's ecosystem and version consistency is maintained with @types/bun@1.3.2. This follows the standard npm convention for declaring the preferred package manager.

apps/playgrounds/bun/package.json (1)

21-22: Good: packageManager field correctly specifies Bun.

The addition declares Bun as the preferred package manager and maintains version consistency with @types/bun@1.3.2.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
apps/playgrounds/bun-solid-start/README.md (1)

7-24: Update documentation to reflect Bun usage.

Since this is a Bun playground, the documentation should reference Bun commands instead of npm/yarn/pnpm to avoid confusion.

Consider updating the documentation:

-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+Once you've created a project and installed dependencies with `bun install`, start a development server:

 ```bash
-npm run dev
+bun run dev

 # or start the server and open the app in a new browser tab
-npm run dev -- --open
+bun run dev -- --open

Based on learnings: Bun playgrounds should use `bun install` and `bun run` commands.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used**: CodeRabbit UI

**Review profile**: CHILL

**Plan**: Pro

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 333208cbbb5a470c03df78c4413c0e7a991aabc5 and b2be34856fdfb7753e0d0ab06d77e95f37c3d297.

</details>

<details>
<summary>⛔ Files ignored due to path filters (3)</summary>

* `apps/playgrounds/bun-solid-start/bun.lock` is excluded by `!**/*.lock`
* `apps/playgrounds/bun-solid-start/public/favicon.ico` is excluded by `!**/*.ico`
* `pnpm-lock.yaml` is excluded by `!**/pnpm-lock.yaml`

</details>

<details>
<summary>📒 Files selected for processing (12)</summary>

* `apps/playgrounds/bun-solid-start/.env.production` (1 hunks)
* `apps/playgrounds/bun-solid-start/.gitignore` (1 hunks)
* `apps/playgrounds/bun-solid-start/README.md` (1 hunks)
* `apps/playgrounds/bun-solid-start/app.config.ts` (1 hunks)
* `apps/playgrounds/bun-solid-start/package.json` (1 hunks)
* `apps/playgrounds/bun-solid-start/src/app.css` (1 hunks)
* `apps/playgrounds/bun-solid-start/src/app.tsx` (1 hunks)
* `apps/playgrounds/bun-solid-start/src/entry-client.tsx` (1 hunks)
* `apps/playgrounds/bun-solid-start/src/entry-server.tsx` (1 hunks)
* `apps/playgrounds/bun-solid-start/src/global.d.ts` (1 hunks)
* `apps/playgrounds/bun-solid-start/tsconfig.json` (1 hunks)
* `arkenv.code-workspace` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>📓 Path-based instructions (6)</summary>

<details>
<summary>**/*.{ts,tsx,js,jsx}</summary>


**📄 CodeRabbit inference engine (.github/copilot-instructions.md)**

> `**/*.{ts,tsx,js,jsx}`: Use `createEnv(schema)` function (available as default export, typically imported as `arkenv`) to create validated environment objects with ArkType schema definitions
> Use built-in validators (host, port, url, email) from ArkEnv when available in environment schemas instead of writing custom validators
> Provide default values for optional environment variables in schemas using the `= value` syntax
> Use descriptive environment variable names that indicate purpose and format in schema definitions

Files:
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>**/*.{ts,tsx}</summary>


**📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)**

> `**/*.{ts,tsx}`: Prefer `type` over `interface` for type definitions in TypeScript
> Use TypeScript 5.1+ features when appropriate
> Leverage `const` type parameters for better inference in TypeScript
> Use JSDoc comments for public APIs
> Use tabs for indentation (configured in Biome)
> Use double quotes for strings (configured in Biome)
> Organize imports automatically (Biome handles this)
> Avoid explicit types when TypeScript can infer them (`noInferrableTypes` error)
> Use `as const` where appropriate for immutable values (`useAsConstAssertion` error)
> Don't reassign function parameters (`noParameterAssign` error)
> Place default parameters last in function signatures (`useDefaultParameterLast` error)
> Always initialize enum values (`useEnumInitializers` error)
> Declare one variable per statement (`useSingleVarDeclarator` error)
> Avoid unnecessary template literals (`noUnusedTemplateLiteral` error)
> Prefer `Number.parseInt` over global `parseInt` (`useNumberNamespace` error)
> Use kebab-case for TypeScript filenames (e.g., `create-env.ts`)
> Use camelCase for function names (e.g., `createEnv`)
> Use PascalCase for type names (e.g., `ArkEnvError`)
> Use UPPER_SNAKE_CASE for environment variables and constants
> Include examples in JSDoc comments when helpful for public APIs
> Document complex type logic with JSDoc comments
> Use `ArkEnvError` for environment variable validation errors
> Provide clear, actionable error messages that include the variable name and expected type

Files:
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>**/*.tsx</summary>


**📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)**

> Use self-closing JSX elements (`useSelfClosingElements` error)

Files:
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`

</details>
<details>
<summary>**/package.json</summary>


**📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)**

> Use workspace:* protocol for workspace dependencies between packages
> 
> When referencing workspace packages, use the `workspace:*` protocol in dependencies

Files:
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>{**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml}</summary>


**📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)**

> `{**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml}`: Always use `pnpm` for all package management operations
> Never use `npm` or `yarn` commands

Files:
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>{pnpm-workspace.yaml,**/package.json}</summary>


**📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)**

> Certain native dependencies are configured with `onlyBuiltDependencies` in pnpm configuration: @biomejs/biome, @sentry/cli, @swc/core, @tailwindcss/oxide, @vercel/speed-insights, esbuild, sharp

Files:
- `apps/playgrounds/bun-solid-start/package.json`

</details>

</details><details>
<summary>🧠 Learnings (48)</summary>

<details>
<summary>📓 Common learnings</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Use Bun.serve() with built-in WebSocket, HTTPS, and route support instead of express


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use Bun.serve() with built-in WebSocket, HTTPS, and route support instead of express


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/index.ts : Run frontend development with bun --hot ./index.ts for hot module reloading


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use dotenv library


Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 132
File: packages/arkenv/README.md:13-14
Timestamp: 2025-09-09T17:37:19.650Z
Learning: For yamcodes/arkenv project: Runtime support documentation should link to specific examples: Node.js (examples/basic), Bun (examples/with-bun), Vite (examples/with-vite-react-ts).


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use the dotenv package


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.ts : Use bun --hot to run TypeScript entry files with hot module reloading enabled


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Use Bun.redis for Redis operations instead of ioredis


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use Bun.redis for Redis operations instead of ioredis


Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,tsx,jsx} : Use HTML imports with Bun.serve() instead of Vite for frontend development


</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.html : Use HTML imports with Bun.serve() and don't use Vite for frontend bundling and development


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/.env.production`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/src/app.css`
- `apps/playgrounds/bun-solid-start/app.config.ts`
- `apps/playgrounds/bun-solid-start/README.md`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.html : HTML files can import .tsx, .jsx, or .js files directly as modules, and Bun will automatically transpile and bundle them


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/src/app.css`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,tsx,jsx} : Use HTML imports with Bun.serve() instead of Vite for frontend development


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/.env.production`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.ts : Use bun --hot to run TypeScript entry files with hot module reloading enabled


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/app.config.ts`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx,html} : CSS files can be imported directly in TypeScript/JavaScript or referenced in HTML <link> tags, and Bun will automatically bundle them


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/app.css`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.html : HTML files can import .tsx, .jsx, or .js files directly; Bun will automatically transpile and bundle


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/src/app.css`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/index.ts : Run frontend development with bun --hot ./index.ts for hot module reloading


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/src/entry-client.tsx`
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.test.{ts,tsx,js,jsx} : Use bun:test for unit and integration testing with test and expect from the built-in test module


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.test.{ts,tsx,js,jsx} : Use import { test, expect } from "bun:test" for writing tests


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use bun <file> instead of node <file> or ts-node <file> for running TypeScript and JavaScript files


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.tsx`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/package.json : Use bun install instead of npm install, yarn install, or pnpm install for dependency management


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/package.json : Use bun run <script> instead of npm run <script>, yarn run <script>, or pnpm run <script> in package.json scripts


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/package.json : Use bun install instead of npm install, yarn install, or pnpm install in package.json scripts


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/package.json : Use bun run <script> instead of npm run <script>, yarn run <script>, or pnpm run <script> for running scripts


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use the dotenv package


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/.env.production`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx,html,css} : Use bun build <file.html|file.ts|file.css> instead of webpack or esbuild for bundling


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/src/app.css`
- `apps/playgrounds/bun-solid-start/tsconfig.json`
- `apps/playgrounds/bun-solid-start/README.md`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,js} : Use bun <file> instead of node <file> or ts-node <file> for running scripts


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,ts,tsx,css} : Use bun build <file.html|file.ts|file.css> instead of webpack or esbuild for bundling


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`
- `apps/playgrounds/bun-solid-start/src/app.css`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-09-09T17:37:19.650Z</summary>

Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 132
File: packages/arkenv/README.md:13-14
Timestamp: 2025-09-09T17:37:19.650Z
Learning: For yamcodes/arkenv project: Runtime support documentation should link to specific examples: Node.js (examples/basic), Bun (examples/with-bun), Vite (examples/with-vite-react-ts).


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:11.869Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: packages/arkenv should not depend on other workspace packages; packages/vite-plugin depends on arkenv; apps/www may depend on workspace packages


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.test.{ts,tsx,js,jsx} : Use bun test instead of jest or vitest for running tests


**Applied to files:**
- `apps/playgrounds/bun-solid-start/package.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use dotenv library


**Applied to files:**
- `apps/playgrounds/bun-solid-start/.env.production`
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/app.config.ts`
- `arkenv.code-workspace`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:11.869Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Build output should go to dist/ directory and be gitignored; source files should be in src/ directory


**Applied to files:**
- `apps/playgrounds/bun-solid-start/.gitignore`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Prefer Bun.file over node:fs readFile/writeFile methods for file operations


**Applied to files:**
- `apps/playgrounds/bun-solid-start/.gitignore`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Prefer Bun.file over node:fs readFile/writeFile for file operations


**Applied to files:**
- `apps/playgrounds/bun-solid-start/.gitignore`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:35.734Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Use createEnv(schema) function (available as default export, typically imported as arkenv) to create validated environment objects with ArkType schema definitions


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:45.283Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Keep environment variable schemas readable and TypeScript-like using ArkType syntax


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:45.283Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Leverage ArkType's type inference for TypeScript types instead of manual type definitions


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:35.734Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Provide default values for optional environment variables in schemas using the = value syntax


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:45.283Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Use ArkType's type() function to define schemas in environment variable definitions


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:45.283Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Leverage ArkType's built-in types (e.g., string.host, number.port) where possible in environment schemas


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:35.734Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Use built-in validators (host, port, url, email) from ArkEnv when available in environment schemas instead of writing custom validators


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:35.734Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Use descriptive environment variable names that indicate purpose and format in schema definitions


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:00.943Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/*.{ts,tsx} : Use ArkEnvError for environment variable validation errors


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:45.283Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: ArkType validates environment variables at runtime and TypeScript types are inferred from the schema definition


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/global.d.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:47.550Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use Bun.serve() with built-in WebSocket, HTTPS, and route support instead of express


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,tsx,js,jsx} : Use Bun.serve() with built-in WebSocket, HTTPS, and route support instead of express


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:00.943Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/index.ts : Use barrel exports (index.ts) for package entry points


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/entry-server.tsx`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:58.603Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.html : Use <link> tags in HTML for stylesheets; Bun's CSS bundler will handle bundling automatically


**Applied to files:**
- `apps/playgrounds/bun-solid-start/src/app.css`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:36.928Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to packages/vite-plugin/src/**/*.test.ts : Test Vite plugin using the with-vite-react-ts example as a fixture and validate plugin works with real Vite projects


**Applied to files:**
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:36.928Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Achieve coverage goals: environment variable parsing and validation, type checking and error handling, default value handling, custom type validation, plugin integration with Vite, and real project build testing using examples as fixtures


**Applied to files:**
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:36.928Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to packages/vite-plugin/src/**/*.test.ts : Use fixture-based testing pattern with __fixtures__ directory for Vite plugin tests


**Applied to files:**
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:03:45.283Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Convert ArkType validation errors to ArkEnvError for user-friendly error messages that include variable name and expected type


**Applied to files:**
- `apps/playgrounds/bun-solid-start/app.config.ts`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:00.943Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/*.{ts,tsx} : Use TypeScript 5.1+ features when appropriate


**Applied to files:**
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:36.928Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to **/*.test.{ts,tsx} : Use Vitest as the test framework for unit and integration tests


**Applied to files:**
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:00.943Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/*.{ts,tsx} : Organize imports automatically (Biome handles this)


**Applied to files:**
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>
<details>
<summary>📚 Learning: 2025-11-24T16:04:00.943Z</summary>

Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/*.{ts,tsx} : Leverage const type parameters for better inference in TypeScript


**Applied to files:**
- `apps/playgrounds/bun-solid-start/tsconfig.json`

</details>

</details><details>
<summary>🧬 Code graph analysis (5)</summary>

<details>
<summary>apps/playgrounds/bun-solid-start/package.json (3)</summary><blockquote>

<details>
<summary>packages/vite-plugin/src/index.ts (1)</summary>

* `arkenv` (50-86)

</details>
<details>
<summary>apps/playgrounds/solid-start/src/app.tsx (1)</summary>

* `App` (4-42)

</details>
<details>
<summary>apps/playgrounds/vite/vite.config.ts (1)</summary>

* `env` (19-37)

</details>

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/.env.production (4)</summary><blockquote>

<details>
<summary>apps/playgrounds/solid-start/src/global.d.ts (1)</summary>

* `ImportMetaEnv` (10-10)

</details>
<details>
<summary>apps/playgrounds/solid-start/src/app.tsx (1)</summary>

* `App` (4-42)

</details>
<details>
<summary>apps/playgrounds/vite/src/vite-env.d.ts (2)</summary>

* `ImportMetaEnv` (21-21)
* `ViteTypeOptions` (11-17)

</details>
<details>
<summary>apps/playgrounds/solid-start/src/entry-server.tsx (1)</summary>

* `html` (6-19)

</details>

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/global.d.ts (6)</summary><blockquote>

<details>
<summary>apps/playgrounds/solid-start/src/global.d.ts (1)</summary>

* `ImportMetaEnv` (10-10)

</details>
<details>
<summary>examples/with-vite-react-ts/src/vite-env.d.ts (2)</summary>

* `ImportMetaEnv` (18-18)
* `ViteTypeOptions` (8-14)

</details>
<details>
<summary>apps/playgrounds/vite/src/vite-env.d.ts (2)</summary>

* `ViteTypeOptions` (11-17)
* `ImportMetaEnv` (21-21)

</details>
<details>
<summary>packages/vite-plugin/src/index.test.ts (2)</summary>

* `mockTransformedEnv` (184-230)
* `mockTransformedEnv` (135-182)

</details>
<details>
<summary>apps/playgrounds/solid-start/src/app.tsx (1)</summary>

* `App` (4-42)

</details>
<details>
<summary>packages/vite-plugin/src/index.ts (1)</summary>

* `arkenv` (50-86)

</details>

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/app.css (1)</summary><blockquote>

<details>
<summary>apps/playgrounds/solid-start/src/app.tsx (1)</summary>

* `App` (4-42)

</details>

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/README.md (2)</summary><blockquote>

<details>
<summary>apps/playgrounds/solid-start/src/entry-server.tsx (2)</summary>

* `StartServer` (4-21)
* `html` (6-19)

</details>
<details>
<summary>apps/playgrounds/solid-start/src/app.tsx (1)</summary>

* `App` (4-42)

</details>

</blockquote></details>

</details><details>
<summary>🪛 dotenv-linter (4.0.0)</summary>

<details>
<summary>apps/playgrounds/bun-solid-start/.env.production</summary>

[warning] 1-1: [ValueWithoutQuotes] This value needs to be surrounded in quotes

(ValueWithoutQuotes)

---

[warning] 2-2: [UnorderedKey] The VITE_NUMERIC key should go before the VITE_TEST key

(UnorderedKey)

---

[warning] 3-3: [UnorderedKey] The VITE_BOOLEAN key should go before the VITE_NUMERIC key

(UnorderedKey)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)</summary>

* GitHub Check: test-e2e (e2e)
* GitHub Check: test-e2e (a11y)

</details>

<details>
<summary>🔇 Additional comments (14)</summary><blockquote>

<details>
<summary>arkenv.code-workspace (1)</summary><blockquote>

`67-70`: **LGTM!**

The new workspace folder entry follows the established naming convention and correctly references the new Bun SolidStart playground.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/.gitignore (1)</summary><blockquote>

`1-28`: **LGTM!**

The gitignore patterns appropriately cover build outputs, environment files, dependencies, IDE artifacts, and deployment platform directories for a Bun + SolidStart setup.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/.env.production (1)</summary><blockquote>

`1-3`: **LGTM!**

The environment variables are correctly defined for the Bun SolidStart playground and align with the schema in app.config.ts. The static analysis hints about quotes and ordering are stylistic preferences, not functional issues.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/app.css (1)</summary><blockquote>

`1-63`: **LGTM!**

The stylesheet provides clean, accessible styling with proper focus states and responsive design for the playground UI.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/entry-client.tsx (1)</summary><blockquote>

`1-4`: **LGTM!**

The client entry point correctly bootstraps the SolidStart application with hot module reloading enabled.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/tsconfig.json (1)</summary><blockquote>

`1-19`: **LGTM!**

The TypeScript configuration is properly set up for a Bun + SolidStart project with strict type checking, appropriate JSX handling, and useful path aliases.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/entry-server.tsx (1)</summary><blockquote>

`1-21`: **LGTM!**

The server entry follows standard SolidStart SSR patterns with proper document structure, meta tags, and asset injection.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/app.config.ts (2)</summary><blockquote>

`11-15`: **LGTM!**

Proper integration of ArkEnv with SolidStart's Vite configuration. The plugin wiring is correct.

---

`5-9`: **No action required — boolean type handling is correct.**

The `VITE_BOOLEAN` field is correctly typed as `"boolean"`. The arkenv boolean type automatically parses string values like `"true"` or `"false"` to actual boolean values, and the Vite plugin then serializes them back to strings via `JSON.stringify()` for exposure through `import.meta.env`. This is the correct and intended design pattern.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/app.tsx (3)</summary><blockquote>

`1-6`: **LGTM!**

Proper SolidJS imports and component setup with reactive state management.

---

`7-27`: **LGTM!**

Proper JSX structure with good security practices (using `rel="noopener noreferrer"` for external links) and accessibility (explicit button type).

---

`28-39`: **LGTM!**

Good demonstration of ArkEnv integration showing both runtime values and their TypeScript-inferred types. This helps users verify the type safety provided by the ArkEnv plugin.

</blockquote></details>
<details>
<summary>apps/playgrounds/bun-solid-start/src/global.d.ts (2)</summary><blockquote>

`1-6`: **LGTM!**

Correct TypeScript ambient type declaration pattern using dynamic imports to reference the Env schema and leverage ArkEnv's type augmentation.

---

`8-10`: **LGTM!**

Proper global interface augmentation that extends `ImportMetaEnv` with ArkEnv-validated types. The comment accurately explains the VITE_* prefix filtering behavior.

</blockquote></details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…dency versions

- Added "packageManager": "bun@1.3.2" to package.json files in bun, bun-react, and bun-solid-start projects for consistency.
- Changed arktype dependency version in bun-solid-start's bun.lock from "^2.1.27" to "2.1.27" to lock the version.
@yamcodes yamcodes merged commit 81bcd7c into main Nov 24, 2025
15 checks passed
@yamcodes yamcodes deleted the bun-solid-start-playground branch November 24, 2025 19:15
@coderabbitai coderabbitai bot mentioned this pull request Dec 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant