Added more examples

This commit is contained in:
Andras Bacsai
2026-04-10 12:39:59 +02:00
parent b3818d86dd
commit b0d6e95f1b
38 changed files with 6 additions and 693 deletions
+6
View File
@@ -19,6 +19,8 @@ Example applications for deploying to [Coolify](https://coolify.io).
| [fastify](./node/fastify) | Fastify web framework |
| [nestjs](./node/nestjs) | NestJS framework |
| [adonisjs](./node/adonisjs) | AdonisJS framework |
| [hono](./node/hono) | Hono web framework |
| [koa](./node/koa) | Koa web framework |
### Frontend Frameworks
@@ -31,9 +33,13 @@ Example applications for deploying to [Coolify](https://coolify.io).
| [sveltekit](./node/sveltekit) | [ssr](./node/sveltekit/ssr) | [static](./node/sveltekit/static) |
| [tanstack-start](./node/tanstack-start) | [ssr](./node/tanstack-start/ssr) | [static](./node/tanstack-start/static) |
| [angular](./node/angular) | [ssr](./node/angular/ssr) | [static](./node/angular/static) |
| [vue](./node/vue) | [ssr](./node/vue/ssr) | [static](./node/vue/static) |
| [qwik](./node/qwik) | [ssr](./node/qwik/ssr) | [static](./node/qwik/static) |
| [react](./node/react) | - | [static](./node/react) |
| [vite](./node/vite) | - | [static](./node/vite) |
| [eleventy](./node/eleventy) | - | [static](./node/eleventy) |
| [gatsby](./node/gatsby) | - | [static](./node/gatsby) |
| [docusaurus](./node/docusaurus) | - | [static](./node/docusaurus) |
## SSR vs Static
-11
View File
@@ -1,11 +0,0 @@
node_modules/
.git/
.gitignore
.env
.env.local
*.md
.DS_Store
*.log
npm-debug.log*
.vinxi/
.output/
-28
View File
@@ -1,28 +0,0 @@
dist
.wrangler
.output
.vercel
.netlify
.vinxi
app.config.timestamp_*.js
# Environment
.env
.env*.local
# dependencies
/node_modules
# IDEs and editors
/.idea
.project
.classpath
*.launch
.settings/
# Temp
gitignore
# System Files
.DS_Store
Thumbs.db
-32
View File
@@ -1,32 +0,0 @@
# SolidStart
Everything you need to build a Solid project, powered by [`solid-start`](https://start.solidjs.com);
## Creating a project
```bash
# create a new project in the current directory
npm init solid@latest
# create a new project in my-app
npm init solid@latest my-app
```
## Developing
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
```
## Building
Solid apps are built with _presets_, which optimise your project for deployment to different environments.
By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different preset, add it to the `devDependencies` in `package.json` and specify in your `app.config.js`.
## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)
-3
View File
@@ -1,3 +0,0 @@
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({});
-20
View File
@@ -1,20 +0,0 @@
{
"name": "example-basic",
"type": "module",
"scripts": {
"dev": "vinxi dev",
"build": "vinxi build",
"start": "vinxi start",
"version": "vinxi version"
},
"dependencies": {
"@solidjs/meta": "^0.29.4",
"@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.1.0",
"solid-js": "^1.9.5",
"vinxi": "^0.5.7"
},
"engines": {
"node": ">=22"
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 B

-39
View File
@@ -1,39 +0,0 @@
body {
font-family: Gordita, Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
}
a {
margin-right: 1rem;
}
main {
text-align: center;
padding: 1em;
margin: 0 auto;
}
h1 {
color: #335d92;
text-transform: uppercase;
font-size: 4rem;
font-weight: 100;
line-height: 1.1;
margin: 4rem auto;
max-width: 14rem;
}
p {
max-width: 14rem;
margin: 2rem auto;
line-height: 1.35;
}
@media (min-width: 480px) {
h1 {
max-width: none;
}
p {
max-width: none;
}
}
-22
View File
@@ -1,22 +0,0 @@
import { MetaProvider, Title } from "@solidjs/meta";
import { Router } from "@solidjs/router";
import { FileRoutes } from "@solidjs/start/router";
import { Suspense } from "solid-js";
import "./app.css";
export default function App() {
return (
<Router
root={props => (
<MetaProvider>
<Title>SolidStart - Basic</Title>
<a href="/">Index</a>
<a href="/about">About</a>
<Suspense>{props.children}</Suspense>
</MetaProvider>
)}
>
<FileRoutes />
</Router>
);
}
@@ -1,21 +0,0 @@
.increment {
font-family: inherit;
font-size: inherit;
padding: 1em 2em;
color: #335d92;
background-color: rgba(68, 107, 158, 0.1);
border-radius: 2em;
border: 2px solid rgba(68, 107, 158, 0);
outline: none;
width: 200px;
font-variant-numeric: tabular-nums;
cursor: pointer;
}
.increment:focus {
border: 2px solid #335d92;
}
.increment:active {
background-color: rgba(68, 107, 158, 0.2);
}
@@ -1,11 +0,0 @@
import { createSignal } from "solid-js";
import "./Counter.css";
export default function Counter() {
const [count, setCount] = createSignal(0);
return (
<button class="increment" onClick={() => setCount(count() + 1)} type="button">
Clicks: {count()}
</button>
);
}
@@ -1,4 +0,0 @@
// @refresh reload
import { mount, StartClient } from "@solidjs/start/client";
mount(() => <StartClient />, document.getElementById("app")!);
-21
View File
@@ -1,21 +0,0 @@
// @refresh reload
import { createHandler, StartServer } from "@solidjs/start/server";
export default createHandler(() => (
<StartServer
document={({ assets, children, scripts }) => (
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" />
{assets}
</head>
<body>
<div id="app">{children}</div>
{scripts}
</body>
</html>
)}
/>
));
-1
View File
@@ -1 +0,0 @@
/// <reference types="@solidjs/start/env" />
@@ -1,19 +0,0 @@
import { Title } from "@solidjs/meta";
import { HttpStatusCode } from "@solidjs/start";
export default function NotFound() {
return (
<main>
<Title>Not Found</Title>
<HttpStatusCode code={404} />
<h1>Page Not Found</h1>
<p>
Visit{" "}
<a href="https://start.solidjs.com" target="_blank">
start.solidjs.com
</a>{" "}
to learn how to build SolidStart apps.
</p>
</main>
);
}
-10
View File
@@ -1,10 +0,0 @@
import { Title } from "@solidjs/meta";
export default function About() {
return (
<main>
<Title>About</Title>
<h1>About</h1>
</main>
);
}
@@ -1,17 +0,0 @@
import { json } from "@solidjs/router";
import type { APIEvent } from "@solidjs/start/server";
// Runtime env vars (read at server startup)
const RUNTIME_PRIVATE_VAR = process.env.RUNTIME_PRIVATE_VAR || 'default-value';
const RUNTIME_PUBLIC_VAR = process.env.RUNTIME_PUBLIC_VAR || 'default-value';
console.log('=== Runtime Variables ===');
console.log('RUNTIME_PRIVATE_VAR:', RUNTIME_PRIVATE_VAR);
console.log('RUNTIME_PUBLIC_VAR:', RUNTIME_PUBLIC_VAR);
export function GET(event: APIEvent) {
return json({
runtimePrivateVar: RUNTIME_PRIVATE_VAR,
runtimePublicVar: RUNTIME_PUBLIC_VAR,
});
}
-54
View File
@@ -1,54 +0,0 @@
import { Title } from "@solidjs/meta";
import { createSignal, onMount } from "solid-js";
import Counter from "~/components/Counter";
export default function Home() {
// Build-time public var (baked into bundle)
const buildPublicVar = import.meta.env.VITE_BUILD_PUBLIC_VAR || 'default-value';
// Runtime vars (fetched from server API)
const [runtimePrivateVar, setRuntimePrivateVar] = createSignal('loading...');
const [runtimePublicVar, setRuntimePublicVar] = createSignal('loading...');
onMount(async () => {
console.log('=== Build-time Variables ===');
console.log('VITE_BUILD_PUBLIC_VAR:', buildPublicVar);
// Fetch runtime vars from server API
try {
const res = await fetch('/api/env');
const data = await res.json();
setRuntimePrivateVar(data.runtimePrivateVar);
setRuntimePublicVar(data.runtimePublicVar);
console.log('=== Runtime Variables ===');
console.log('RUNTIME_PRIVATE_VAR:', data.runtimePrivateVar);
console.log('RUNTIME_PUBLIC_VAR:', data.runtimePublicVar);
} catch {
setRuntimePrivateVar('error');
setRuntimePublicVar('error');
}
});
return (
<main>
<Title>Hello World</Title>
<div style={{ padding: '20px', background: '#f0f0f0', margin: '20px', 'border-radius': '8px' }}>
<h2>Environment Variable Test</h2>
<h3>Build-time (baked into bundle)</h3>
<p><strong>VITE_BUILD_PUBLIC_VAR:</strong> {buildPublicVar}</p>
<h3>Runtime (read at server startup)</h3>
<p><strong>RUNTIME_PRIVATE_VAR:</strong> {runtimePrivateVar()}</p>
<p><strong>RUNTIME_PUBLIC_VAR:</strong> {runtimePublicVar()}</p>
</div>
<h1>Hello world!</h1>
<Counter />
<p>
Visit{" "}
<a href="https://start.solidjs.com" target="_blank">
start.solidjs.com
</a>{" "}
to learn how to build SolidStart apps.
</p>
</main>
);
}
-19
View File
@@ -1,19 +0,0 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"allowJs": true,
"strict": true,
"noEmit": true,
"types": ["vinxi/types/client"],
"isolatedModules": true,
"paths": {
"~/*": ["./src/*"]
}
}
}
-11
View File
@@ -1,11 +0,0 @@
node_modules/
.git/
.gitignore
.env
.env.local
*.md
.DS_Store
*.log
npm-debug.log*
.vinxi/
.output/
-28
View File
@@ -1,28 +0,0 @@
dist
.wrangler
.output
.vercel
.netlify
.vinxi
app.config.timestamp_*.js
# Environment
.env
.env*.local
# dependencies
/node_modules
# IDEs and editors
/.idea
.project
.classpath
*.launch
.settings/
# Temp
gitignore
# System Files
.DS_Store
Thumbs.db
-32
View File
@@ -1,32 +0,0 @@
# SolidStart
Everything you need to build a Solid project, powered by [`solid-start`](https://start.solidjs.com);
## Creating a project
```bash
# create a new project in the current directory
npm init solid@latest
# create a new project in my-app
npm init solid@latest my-app
```
## Developing
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
```
## Building
Solid apps are built with _presets_, which optimise your project for deployment to different environments.
By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different preset, add it to the `devDependencies` in `package.json` and specify in your `app.config.js`.
## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)
-6
View File
@@ -1,6 +0,0 @@
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({
ssr: false,
});
-20
View File
@@ -1,20 +0,0 @@
{
"name": "example-basic",
"type": "module",
"scripts": {
"dev": "vinxi dev",
"build": "vinxi build",
"start": "npx serve@latest .output/public",
"version": "vinxi version"
},
"dependencies": {
"@solidjs/meta": "^0.29.4",
"@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.1.0",
"solid-js": "^1.9.5",
"vinxi": "^0.5.7"
},
"engines": {
"node": ">=22"
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 B

-39
View File
@@ -1,39 +0,0 @@
body {
font-family: Gordita, Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
}
a {
margin-right: 1rem;
}
main {
text-align: center;
padding: 1em;
margin: 0 auto;
}
h1 {
color: #335d92;
text-transform: uppercase;
font-size: 4rem;
font-weight: 100;
line-height: 1.1;
margin: 4rem auto;
max-width: 14rem;
}
p {
max-width: 14rem;
margin: 2rem auto;
line-height: 1.35;
}
@media (min-width: 480px) {
h1 {
max-width: none;
}
p {
max-width: none;
}
}
-22
View File
@@ -1,22 +0,0 @@
import { MetaProvider, Title } from "@solidjs/meta";
import { Router } from "@solidjs/router";
import { FileRoutes } from "@solidjs/start/router";
import { Suspense } from "solid-js";
import "./app.css";
export default function App() {
return (
<Router
root={props => (
<MetaProvider>
<Title>SolidStart - Basic</Title>
<a href="/">Index</a>
<a href="/about">About</a>
<Suspense>{props.children}</Suspense>
</MetaProvider>
)}
>
<FileRoutes />
</Router>
);
}
@@ -1,21 +0,0 @@
.increment {
font-family: inherit;
font-size: inherit;
padding: 1em 2em;
color: #335d92;
background-color: rgba(68, 107, 158, 0.1);
border-radius: 2em;
border: 2px solid rgba(68, 107, 158, 0);
outline: none;
width: 200px;
font-variant-numeric: tabular-nums;
cursor: pointer;
}
.increment:focus {
border: 2px solid #335d92;
}
.increment:active {
background-color: rgba(68, 107, 158, 0.2);
}
@@ -1,11 +0,0 @@
import { createSignal } from "solid-js";
import "./Counter.css";
export default function Counter() {
const [count, setCount] = createSignal(0);
return (
<button class="increment" onClick={() => setCount(count() + 1)} type="button">
Clicks: {count()}
</button>
);
}
@@ -1,4 +0,0 @@
// @refresh reload
import { mount, StartClient } from "@solidjs/start/client";
mount(() => <StartClient />, document.getElementById("app")!);
@@ -1,21 +0,0 @@
// @refresh reload
import { createHandler, StartServer } from "@solidjs/start/server";
export default createHandler(() => (
<StartServer
document={({ assets, children, scripts }) => (
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" />
{assets}
</head>
<body>
<div id="app">{children}</div>
{scripts}
</body>
</html>
)}
/>
));
-1
View File
@@ -1 +0,0 @@
/// <reference types="@solidjs/start/env" />
@@ -1,19 +0,0 @@
import { Title } from "@solidjs/meta";
import { HttpStatusCode } from "@solidjs/start";
export default function NotFound() {
return (
<main>
<Title>Not Found</Title>
<HttpStatusCode code={404} />
<h1>Page Not Found</h1>
<p>
Visit{" "}
<a href="https://start.solidjs.com" target="_blank">
start.solidjs.com
</a>{" "}
to learn how to build SolidStart apps.
</p>
</main>
);
}
@@ -1,10 +0,0 @@
import { Title } from "@solidjs/meta";
export default function About() {
return (
<main>
<Title>About</Title>
<h1>About</h1>
</main>
);
}
@@ -1,36 +0,0 @@
import { Title } from "@solidjs/meta";
import { onMount } from "solid-js";
import Counter from "~/components/Counter";
export default function Home() {
// Build-time public var (baked into bundle)
const buildPublicVar = import.meta.env.VITE_BUILD_PUBLIC_VAR || 'default-value';
onMount(() => {
console.log('=== Build-time Variables ===');
console.log('VITE_BUILD_PUBLIC_VAR:', buildPublicVar);
});
return (
<main>
<Title>Hello World</Title>
<div style={{ padding: '20px', background: '#f0f0f0', margin: '20px', 'border-radius': '8px' }}>
<h2>Environment Variable Test</h2>
<h3>Build-time (baked into bundle)</h3>
<p><strong>VITE_BUILD_PUBLIC_VAR:</strong> {buildPublicVar}</p>
<p style={{ color: '#666', 'font-size': '14px' }}>
Note: Static sites only support build-time env vars (no server at runtime)
</p>
</div>
<h1>Hello world!</h1>
<Counter />
<p>
Visit{" "}
<a href="https://start.solidjs.com" target="_blank">
start.solidjs.com
</a>{" "}
to learn how to build SolidStart apps.
</p>
</main>
);
}
-19
View File
@@ -1,19 +0,0 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"allowJs": true,
"strict": true,
"noEmit": true,
"types": ["vinxi/types/client"],
"isolatedModules": true,
"paths": {
"~/*": ["./src/*"]
}
}
}
-32
View File
@@ -1,32 +0,0 @@
# syntax=docker/dockerfile:1
# Generated by Coolpack
# Provider: node, Framework: express, Output: server
FROM node:24-slim AS builder
WORKDIR /app
COPY package.json package-lock.json* ./
RUN --mount=type=cache,target=/root/.npm npm ci
COPY . .
RUN --mount=type=cache,target=/app/node_modules/.cache npm run build
FROM node:24-slim AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 coolgroup && \
adduser --system --uid 1001 --ingroup coolgroup cooluser
ENV NODE_ENV=production
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app .
RUN chown -R cooluser:coolgroup /app
USER cooluser
EXPOSE 3000
CMD ["npm", "run", "start"]
-29
View File
@@ -1,29 +0,0 @@
# syntax=docker/dockerfile:1
# Generated by Coolpack
# Provider: node, Framework: vite, Output: static
FROM node:24-slim AS builder
WORKDIR /app
COPY package.json package-lock.json* ./
RUN --mount=type=cache,target=/root/.npm npm ci
COPY . .
RUN --mount=type=cache,target=/app/node_modules/.vite --mount=type=cache,target=/app/node_modules/.cache npm run build
FROM caddy:alpine AS runner
RUN addgroup --system --gid 1001 coolgroup && \
adduser --system --uid 1001 -G coolgroup cooluser
COPY --from=builder /app/dist /srv
RUN chown -R cooluser:coolgroup /srv
USER cooluser
EXPOSE 80
CMD ["caddy", "file-server", "--root", "/srv", "--listen", ":80"]