Skip to content

Add SolidStart playground#427

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

Add SolidStart playground#427
yamcodes merged 8 commits intomainfrom
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 SolidStart playground with an example app demonstrating environment variable integration, an interactive counter, styles, README, build/dev scripts, and TypeScript setup.
  • Chores

    • Renamed bun-react playground package identifier.
    • Added the SolidStart playground to the workspace and included production env defaults and ignore rules.

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

- Added new dependencies for solid-start and solid-vite playgrounds in pnpm-lock.yaml.
- Updated the bun-react template name to bun-react-playground in package.json for clarity.
…e handling

- Simplified the app.config.ts by removing unnecessary environment loading logic and directly integrating the Vite plugin.
- Updated app.tsx to display additional environment variables, including VITE_NUMERIC and VITE_BOOLEAN, for improved visibility and testing.
- Augmented global.d.ts to enforce stricter type checking for environment variables, ensuring only defined keys are allowed in import.meta.env.
- Deleted the Solid Vite playground, including all related files such as configuration, source code, and assets.
- Added a new Solid Start playground entry in the workspace configuration for better project organization.
@changeset-bot
Copy link

changeset-bot bot commented Nov 24, 2025

⚠️ No Changeset found

Latest commit: f0e7df2

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.

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
arkenv Skipped Skipped Nov 24, 2025 3:58pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 24, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

A SolidStart playground is added at apps/playgrounds/solid-start/ with config, TypeScript setup, app source (client/server entries, styles), environment typing, a README, and workspace entry. The bun-react playground package name is renamed from "bun-react-template" to "bun-react-playground".

Changes

Cohort / File(s) Change Summary
SolidStart package & config
apps/playgrounds/solid-start/package.json, apps/playgrounds/solid-start/app.config.ts, apps/playgrounds/solid-start/tsconfig.json
New package manifest, Vite app.config exporting an Env schema and wiring @arkenv/vite-plugin, and TypeScript config for SolidStart (ESNext target, JSX, strict).
SolidStart source & types
apps/playgrounds/solid-start/src/app.tsx, apps/playgrounds/solid-start/src/app.css, apps/playgrounds/solid-start/src/entry-client.tsx, apps/playgrounds/solid-start/src/entry-server.tsx, apps/playgrounds/solid-start/src/global.d.ts
New app component with a Solid signal counter that reads import.meta.env vars, styles, client/server entry points, and global declaration augmenting ImportMetaEnv via @arkenv/vite-plugin.
Playground docs & ignores
apps/playgrounds/solid-start/README.md, apps/playgrounds/solid-start/.gitignore, apps/playgrounds/solid-start/.env.production
New README with usage instructions, .gitignore for build/dev artifacts, and production .env with VITE_* values.
Workspace integration
arkenv.code-workspace
Added workspace folder entry for the SolidStart playground.
Bun-React playground rename
apps/playgrounds/bun-react/package.json
Updated package name from "bun-react-template" to "bun-react-playground" (manifest field change).

Sequence Diagram(s)

sequenceDiagram
    participant Vite as Vite Dev Server
    participant Config as app.config.ts
    participant ArkEnv as `@arkenv/vite-plugin`
    participant App as App (client)
    participant DOM as Browser DOM

    Vite->>Config: load config (Env schema)
    Config->>ArkEnv: provide Env schema to plugin
    ArkEnv->>Vite: inject/validate import.meta.env types
    Vite->>App: serve bundled app with typed env access
    App->>App: create signal count & render env values
    DOM->>App: user clicks increment
    App->>DOM: update render with new count
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Pay attention to apps/playgrounds/solid-start/app.config.ts for correct plugin wiring and exported Env shape.
  • Verify src/global.d.ts correctly references and augments ImportMetaEnv with the exported Env.
  • Check src/entry-server.tsx template injection points for safety/escaping of assets/scripts.
  • Confirm package.json engine constraint and workspace:* dependency usage are intentional.

Possibly related PRs

Suggested labels

example, @arkenv/vite-plugin

Poem

🐰 I hopped into a SolidStart glade today,
Env keys tucked cozy in typed display,
Vite hums softly, ArkEnv lends a paw,
Counters click-skip on my verdant floor,
hop hop 🌿

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 SolidStart playground' accurately and clearly summarizes the main change: adding a new SolidStart playground to the repository.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch solid-start-playground

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.

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

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…and clean up related entries for improved project organization.
…ation for improved clarity and organization.
- Adjusted the formatting of the VITE_NUMERIC environment variable display for better readability and consistency in the Solid Start app.
- Ensured that the type information is clearly presented alongside the variable values.
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: 3

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

1-32: Consider tailoring the README to the playground context.

The current README contains boilerplate instructions for creating a new SolidStart project with npm init solid@latest, which doesn't apply to this existing playground within the monorepo. Consider updating it to explain this playground's purpose and how to run it within the monorepo context.

Example structure:

# SolidStart Playground

A playground for testing ArkEnv integration with SolidStart.

## Running

From the repository root:

```bash
# Install dependencies
npm install

# Run the playground
npm run dev --workspace=solid-start-playground

</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 111ca9e86df4ee2841ea726c5e8b3a7dbd60dd1f and 1222a5a654871bec5fad3755a57e46697e9e01a8.

</details>

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

* `apps/playgrounds/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-react/package.json` (1 hunks)
* `apps/playgrounds/solid-start/.gitignore` (1 hunks)
* `apps/playgrounds/solid-start/README.md` (1 hunks)
* `apps/playgrounds/solid-start/app.config.ts` (1 hunks)
* `apps/playgrounds/solid-start/package.json` (1 hunks)
* `apps/playgrounds/solid-start/src/app.css` (1 hunks)
* `apps/playgrounds/solid-start/src/app.tsx` (1 hunks)
* `apps/playgrounds/solid-start/src/entry-client.tsx` (1 hunks)
* `apps/playgrounds/solid-start/src/entry-server.tsx` (1 hunks)
* `apps/playgrounds/solid-start/src/global.d.ts` (1 hunks)
* `apps/playgrounds/solid-start/tsconfig.json` (1 hunks)
* `arkenv.code-workspace` (1 hunks)

</details>

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

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

<details>
<summary>📓 Common learnings</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).


</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/solid-start/package.json`

</details>

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

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

<details>
<summary>packages/arkenv/src/type.ts (1)</summary>

* `type` (3-3)

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

* `env` (19-37)

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

* `arkenv` (50-86)
* `config` (55-84)

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

* `mockTransformedEnv` (184-230)
* `config` (39-75)
* `mockCreateEnv` (232-259)
* `mockTransformedEnv` (135-182)

</details>

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

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

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

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

* `arkenv` (50-86)
* `config` (55-84)

</details>
<details>
<summary>packages/arkenv/src/index.test.ts (1)</summary>

* `vi` (25-35)

</details>
<details>
<summary>packages/arkenv/src/type.test.ts (1)</summary>

* `envType` (202-217)

</details>

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

<details>
<summary>apps/playgrounds/vite/src/App.tsx (3)</summary>

* `App` (6-46)
* `setCount` (21-21)
* `count` (21-21)

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

* `ImportMetaEnv` (21-21)

</details>

</blockquote></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 (10)</summary><blockquote>

<details>
<summary>apps/playgrounds/bun-react/package.json (1)</summary><blockquote>

`2-2`: **LGTM! Naming consistency improved.**

The rename from "bun-react-template" to "bun-react-playground" aligns well with the naming convention used for other playground packages.

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

`63-66`: **LGTM! Workspace entry follows the established pattern.**

The new folder entry for the SolidStart playground is consistent with the existing playground entries and properly positioned.

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

`1-19`: **LGTM! TypeScript configuration is appropriate for SolidStart.**

The configuration correctly sets up Solid JSX, bundler-based module resolution, strict type checking, and the path alias for clean imports.

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

`1-4`: **LGTM! Standard SolidStart client bootstrap.**

The client entry correctly mounts the StartClient to the #app element, which is provided by the server-side template.

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

`1-21`: **LGTM! Standard SolidStart server entry.**

The server handler correctly sets up SSR with a proper document template that includes all necessary meta tags and asset injection points. The #app mount point matches the client-side entry.

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

`1-20`: Yes, please fetch the exact package.json / engines fields for those specific versions. This will help determine if the Node 22 requirement is accurate or overly restrictive.

I found some mixed evidence. Let me search for the specific package versions on the npm registry to get their exact engine requirements.

The npm registry web pages don't display engines fields in their summaries. However, based on the evidence I gathered:

Solid's official solid-docs project uses @solidjs/start ^1.1.1 with a Node.js requirement of >= 18, which is more permissive than the playground's `>= 22`. Additionally, a community project (solid-primitives) using @solidjs/start 1.1.4 and vinxi 0.5.7 specifies node >= 22, suggesting the requirement may depend on specific versions or project choices rather than being strictly mandated by the framework itself.

Without direct access to the package.json engines fields for the exact versions 1.1.0 and 0.5.7, I cannot conclusively verify whether Node 22 is required or overly restrictive. The evidence shows projects with similar dependencies using both Node 18 and Node 22.

**Relax the Node.js requirement to `node >= 18` unless there is a documented reason for requiring Node 22.**

Based on findings, consider using `>= 18` to align with what official SolidStart projects specify, reducing friction for contributors using Node 18 LTS.

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

`12-16`: **LGTM!**

The Vite configuration correctly integrates the ArkEnv plugin with the defined schema.

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

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

The component setup follows standard SolidJS patterns with proper imports and signal initialization.

---

`7-16`: **LGTM!**

The reactive counter implementation correctly uses SolidJS signals with proper getter/setter patterns.

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

`1-10`: **LGTM!**

The type declarations correctly augment `import.meta.env` with ArkEnv's type safety. The pattern properly imports the `Env` schema from `app.config.ts` and uses the `@arkenv/vite-plugin` utility to generate accurate TypeScript types for the environment variables.

</blockquote></details>

</blockquote></details>

</details>

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

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: 0

🧹 Nitpick comments (1)
apps/playgrounds/solid-start/.env.production (1)

1-3: Optional: quote VITE_TEST and sort keys to satisfy dotenv‑linter

Functionally these env values are fine for a playground, but dotenv-linter is flagging:

  • VITE_TEST needing quotes.
  • Key ordering (VITE_BOOLEANVITE_NUMERICVITE_TEST).

If you want a clean lint run, you could update to:

VITE_BOOLEAN=false
VITE_NUMERIC=3
VITE_TEST="Hello from SolidStart (Production)"

This keeps behavior the same while matching the linter’s expectations.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1222a5a and f0e7df2.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (4)
  • apps/playgrounds/solid-start/.env.production (1 hunks)
  • apps/playgrounds/solid-start/.gitignore (1 hunks)
  • apps/playgrounds/solid-start/app.config.ts (1 hunks)
  • apps/playgrounds/solid-start/src/app.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/playgrounds/solid-start/.gitignore
  • apps/playgrounds/solid-start/app.config.ts
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
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).
🪛 dotenv-linter (4.0.0)
apps/playgrounds/solid-start/.env.production

[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)

⏰ 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)
  • GitHub Check: test-e2e (a11y)
  • GitHub Check: test-e2e (e2e)
🔇 Additional comments (1)
apps/playgrounds/solid-start/src/app.tsx (1)

1-42: SolidStart playground component looks correct and coherent

The counter logic, SolidJS usage (createSignal and class), and the three import.meta.env.VITE_* references all line up with the described schema and .env values. This should be a clear, working demo for the SolidStart playground.

@yamcodes yamcodes merged commit 5a75cd2 into main Nov 24, 2025
15 checks passed
@yamcodes yamcodes deleted the solid-start-playground branch November 24, 2025 16:03
@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