From c0425b47994b6b697df6671b306a8fbfebd27dee Mon Sep 17 00:00:00 2001 From: Christian Melgarejo Date: Thu, 19 Mar 2026 19:58:33 -0300 Subject: [PATCH] feat(web): add SolidJS integration guide and example - Created docs/SOLIDJS_INTEGRATION.md\n- Scaffolded web/solid-example with Vite + SolidTS\n- Implemented api.ts and premium App.tsx with Wow Factor\n- Generated custom modulith_hero image --- docs/SOLIDJS_INTEGRATION.md | 112 ++++++++++++ web/solid-example/.gitignore | 24 +++ web/solid-example/README.md | 28 +++ web/solid-example/index.html | 13 ++ web/solid-example/package.json | 20 +++ web/solid-example/public/favicon.svg | 1 + web/solid-example/public/icons.svg | 24 +++ web/solid-example/src/App.css | 236 +++++++++++++++++++++++++ web/solid-example/src/App.tsx | 100 +++++++++++ web/solid-example/src/api.ts | 40 +++++ web/solid-example/src/assets/hero.png | Bin 0 -> 71657 bytes web/solid-example/src/assets/solid.svg | 1 + web/solid-example/src/assets/vite.svg | 1 + web/solid-example/src/index.css | 111 ++++++++++++ web/solid-example/src/index.tsx | 8 + web/solid-example/tsconfig.app.json | 29 +++ web/solid-example/tsconfig.json | 7 + web/solid-example/tsconfig.node.json | 26 +++ web/solid-example/vite.config.ts | 6 + 19 files changed, 787 insertions(+) create mode 100644 docs/SOLIDJS_INTEGRATION.md create mode 100644 web/solid-example/.gitignore create mode 100644 web/solid-example/README.md create mode 100644 web/solid-example/index.html create mode 100644 web/solid-example/package.json create mode 100644 web/solid-example/public/favicon.svg create mode 100644 web/solid-example/public/icons.svg create mode 100644 web/solid-example/src/App.css create mode 100644 web/solid-example/src/App.tsx create mode 100644 web/solid-example/src/api.ts create mode 100644 web/solid-example/src/assets/hero.png create mode 100644 web/solid-example/src/assets/solid.svg create mode 100644 web/solid-example/src/assets/vite.svg create mode 100644 web/solid-example/src/index.css create mode 100644 web/solid-example/src/index.tsx create mode 100644 web/solid-example/tsconfig.app.json create mode 100644 web/solid-example/tsconfig.json create mode 100644 web/solid-example/tsconfig.node.json create mode 100644 web/solid-example/vite.config.ts diff --git a/docs/SOLIDJS_INTEGRATION.md b/docs/SOLIDJS_INTEGRATION.md new file mode 100644 index 0000000..fd3b934 --- /dev/null +++ b/docs/SOLIDJS_INTEGRATION.md @@ -0,0 +1,112 @@ +# SolidJS Integration Guide + +This guide explains how to connect a SolidJS frontend application to the Go Modulith backend. + +## Architecture Overview + +The backend provides several entry points for frontend clients: +- **gRPC-Gateway (REST)**: Best for standard CRUD operations and when using lightweight HTTP clients. +- **GraphQL**: Best for complex data fetching and minimizing network requests. +- **WebSockets**: Used for real-time notifications and reactive updates. + +## 1. Connecting via gRPC-Gateway (REST) + +The gRPC-Gateway translates your gRPC services into standard RESTful JSON endpoints. + +### Fetching Data +You can use the native `fetch` API or any HTTP client like `axios`. + +```typescript +import { createResource } from "solid-js"; + +const fetchUsers = async () => { + const response = await fetch("http://localhost:8080/v1/users"); + return response.json(); +}; + +const [users] = createResource(fetchUsers); +``` + +### Sending Data (POST/PUT) +```typescript +const createUser = async (userData) => { + const response = await fetch("http://localhost:8080/v1/users", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(userData), + }); + return response.json(); +}; +``` + +## 2. Using GraphQL + +The backend exposes a GraphQL endpoint at `/graphql`. For SolidJS, we recommend using `@urql/solid` or `solid-apollo`. + +### Setup with URQL +```typescript +import { createClient, Provider } from "@urql/solid"; + +const client = createClient({ + url: "http://localhost:8080/graphql", +}); + +// Wrap your app with the Provider + + + +``` + +## 3. Real-time Updates via WebSockets + +The WebSocket endpoint is available at `/ws`. It supports authentication via the `access_token` cookie. + +```typescript +import { onMount, onCleanup } from "solid-js"; + +const setupWS = () => { + const ws = new WebSocket("ws://localhost:8080/ws"); + + ws.onmessage = (event) => { + const data = JSON.parse(event.data); + console.log("Real-time update:", data); + }; + + onCleanup(() => ws.close()); +}; +``` + +## 4. Authentication (JWT Cookies) + +The backend uses `HttpOnly` and `Secure` cookies for session management. +- **Auto-propagation**: Browsers automatically send these cookies with requests to the same domain. +- **CORS**: If your frontend is on a different port (e.g., `:3000`), ensure `CORS_ALLOWED_ORIGINS` in `.env` includes your frontend URL and `credentials: "include"` is set in your fetch/GraphQL client. + +### Fetch with Credentials +```typescript +const response = await fetch("http://localhost:8080/v1/auth/me", { + credentials: "include", +}); +``` + +## 5. TypeScript Type Safety + +For full type safety, you can generate TypeScript clients from the `.proto` definitions using `buf`. + +### Recommendation +Add the following to your `buf.gen.yaml` to generate Connect-ES or gRPC-Web clients: + +```yaml + - plugin: es + out: gen/es + - plugin: connect-es + out: gen/es +``` + +Then install the dependencies in your SolidJS project: +```bash +pnpm add @bufbuild/protobuf @connectrpc/connect @connectrpc/connect-web +``` + +--- +Refer to [WEBSOCKET_GUIDE.md](WEBSOCKET_GUIDE.md) for more details on event formats. diff --git a/web/solid-example/.gitignore b/web/solid-example/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/web/solid-example/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/web/solid-example/README.md b/web/solid-example/README.md new file mode 100644 index 0000000..167c567 --- /dev/null +++ b/web/solid-example/README.md @@ -0,0 +1,28 @@ +## Usage + +```bash +$ npm install # or pnpm install or yarn install +``` + +### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) + +## Available Scripts + +In the project directory, you can run: + +### `npm run dev` + +Runs the app in the development mode.
+Open [http://localhost:5173](http://localhost:5173) to view it in the browser. + +### `npm run build` + +Builds the app for production to the `dist` folder.
+It correctly bundles Solid in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +## Deployment + +Learn more about deploying your application with the [documentations](https://vite.dev/guide/static-deploy.html) diff --git a/web/solid-example/index.html b/web/solid-example/index.html new file mode 100644 index 0000000..e28d816 --- /dev/null +++ b/web/solid-example/index.html @@ -0,0 +1,13 @@ + + + + + + + solid-example + + +
+ + + diff --git a/web/solid-example/package.json b/web/solid-example/package.json new file mode 100644 index 0000000..e920581 --- /dev/null +++ b/web/solid-example/package.json @@ -0,0 +1,20 @@ +{ + "name": "solid-example", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "solid-js": "^1.9.11" + }, + "devDependencies": { + "@types/node": "^24.12.0", + "typescript": "~5.9.3", + "vite": "^8.0.1", + "vite-plugin-solid": "^2.11.11" + } +} diff --git a/web/solid-example/public/favicon.svg b/web/solid-example/public/favicon.svg new file mode 100644 index 0000000..6893eb1 --- /dev/null +++ b/web/solid-example/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/solid-example/public/icons.svg b/web/solid-example/public/icons.svg new file mode 100644 index 0000000..e952219 --- /dev/null +++ b/web/solid-example/public/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/solid-example/src/App.css b/web/solid-example/src/App.css new file mode 100644 index 0000000..f98a955 --- /dev/null +++ b/web/solid-example/src/App.css @@ -0,0 +1,236 @@ +:root { + --primary: #6366f1; + --secondary: #06b6d4; + --bg-deep: #0f172a; + --bg-card: rgba(30, 41, 59, 0.7); + --text-main: #f8fafc; + --text-muted: #94a3b8; + --border: rgba(255, 255, 255, 0.1); +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + background: var(--bg-deep); + color: var(--text-main); + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +.app-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.glass-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 2rem; + background: rgba(15, 23, 42, 0.8); + backdrop-filter: blur(12px); + border-bottom: 1px solid var(--border); + position: sticky; + top: 0; + z-index: 100; +} + +.logo-group { + display: flex; + gap: 0.75rem; +} + +.logo { + height: 2rem; + transition: transform 0.3s ease; +} + +.logo:hover { + transform: scale(1.1) rotate(-5deg); +} + +.user-badge { + display: flex; + align-items: center; + gap: 0.75rem; + background: rgba(255, 255, 255, 0.05); + padding: 0.4rem 0.8rem; + border-radius: 2rem; +} + +.user-name { + font-weight: 500; + font-size: 0.9rem; +} + +.status-indicator { + width: 8px; + height: 8px; + border-radius: 50%; + background: #94a3b8; +} + +.connected { background: #22c55e; box-shadow: 0 0 8px #22c55e; } +.disconnected { background: #ef4444; } + +main { + flex: 1; + max-width: 1200px; + margin: 0 auto; + padding: 2rem; + width: 100%; +} + +.hero-section { + display: grid; + grid-template-columns: 1.2fr 1fr; + gap: 3rem; + align-items: center; + margin-bottom: 4rem; +} + +.hero-image-container { + position: relative; + border-radius: 1.5rem; + overflow: hidden; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5); +} + +.hero-image { + width: 100%; + display: block; +} + +.hero-overlay { + position: absolute; + inset: 0; + background: linear-gradient(45deg, rgba(99, 102, 241, 0.2), transparent); +} + +.hero-content h2 { + font-size: 3rem; + font-weight: 800; + letter-spacing: -0.02em; + margin-bottom: 1rem; + background: linear-gradient(to right, #fff, #6366f1); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.hero-content p { + font-size: 1.125rem; + color: var(--text-muted); + margin-bottom: 2rem; +} + +.action-buttons { + display: flex; + gap: 1rem; +} + +.btn { + padding: 0.75rem 1.5rem; + border-radius: 0.75rem; + font-weight: 600; + text-decoration: none; + transition: all 0.2s ease; + cursor: pointer; + border: none; +} + +.btn.primary { + background: var(--primary); + color: white; +} + +.btn.primary:hover { + background: #4f46e5; + transform: translateY(-2px); +} + +.btn.secondary { + background: rgba(255, 255, 255, 0.05); + color: white; + border: 1px solid var(--border); +} + +.btn.secondary:hover { + background: rgba(255, 255, 255, 0.1); +} + +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; +} + +.card.glass { + background: var(--bg-card); + backdrop-filter: blur(8px); + border: 1px solid var(--border); + padding: 2rem; + border-radius: 1.25rem; + transition: transform 0.3s ease, border-color 0.3s ease; +} + +.card.glass:hover { + transform: translateY(-5px); + border-color: rgba(99, 102, 241, 0.4); +} + +.card h3 { + margin-bottom: 1rem; + font-size: 1.25rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.code-snippet { + background: #000; + padding: 0.75rem; + border-radius: 0.5rem; + margin-top: 1rem; + font-family: monospace; + font-size: 0.85rem; + color: var(--secondary); +} + +.event-feed { + margin-top: 1rem; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.event-item { + display: flex; + justify-content: space-between; + padding: 0.5rem 0.75rem; + background: rgba(255, 255, 255, 0.03); + border-radius: 0.4rem; + font-size: 0.8rem; +} + +.event-item .type { color: var(--secondary); font-weight: 600; } +.event-item .time { color: var(--text-muted); } + +footer { + padding: 3rem; + text-align: center; + color: var(--text-muted); + font-size: 0.9rem; + border-top: 1px solid var(--border); +} + +@media (max-width: 768px) { + .hero-section { + grid-template-columns: 1fr; + } +} diff --git a/web/solid-example/src/App.tsx b/web/solid-example/src/App.tsx new file mode 100644 index 0000000..ac89b76 --- /dev/null +++ b/web/solid-example/src/App.tsx @@ -0,0 +1,100 @@ +import { createSignal, onMount, onCleanup, createResource, Show, For } from 'solid-js' +import solidLogo from './assets/solid.svg' +import viteLogo from './assets/vite.svg' +import heroImg from './assets/hero.png' +import { fetchCurrentUser, setupEventsWebSocket, User } from './api' +import './App.css' + +function App() { + const [user] = createResource(fetchCurrentUser) + const [events, setEvents] = createSignal([]) + const [wsStatus, setWsStatus] = createSignal<'connecting' | 'connected' | 'disconnected'>('connecting') + + onMount(() => { + const ws = setupEventsWebSocket((data) => { + setEvents((prev) => [data, ...prev].slice(0, 5)) + }) + + ws.onopen = () => setWsStatus('connected') + ws.onclose = () => setWsStatus('disconnected') + + onCleanup(() => ws.close()) + }) + + return ( +
+
+
+ + +
+

Go Modulith + SolidJS

+
+ Guest Mode}> + {(u) => {u().name}} + +
+
+
+ +
+
+
+ Modulith Architecture +
+
+
+

Seamless Integration

+

+ Connect your SolidJS frontend to a powerful Go backend with gRPC-Gateway, + GraphQL, and real-time WebSockets. +

+
+ View Template + +
+
+
+ +
+
+

gRPC Gateway (REST)

+

Lightweight JSON communication translated directly from your Protobuf definitions.

+
+ fetch('/v1/auth/me') +
+
+
+

GraphQL

+

Flexible data fetching with built-in subscriptions and deep hierarchy support.

+
+ query {'{'} me {'{'} name {'}'} {'}'} +
+
+
+

Real-time Bus

+

Live events pushed directly to your UI via the internal Event Bus and WebSockets.

+
+ 0} fallback={

Awaiting live events...

}> + + {(event) => ( +
+ {event.type} + {new Date().toLocaleTimeString()} +
+ )} +
+
+
+
+
+
+ +
+

Built with Go Modulith Template & SolidJS

+
+
+ ) +} + +export default App diff --git a/web/solid-example/src/api.ts b/web/solid-example/src/api.ts new file mode 100644 index 0000000..3bab906 --- /dev/null +++ b/web/solid-example/src/api.ts @@ -0,0 +1,40 @@ +export const API_BASE_URL = "http://localhost:8080"; +export const WS_BASE_URL = "ws://localhost:8080/ws"; + +export interface User { + id: string; + email: string; + name: string; +} + +export const fetchCurrentUser = async (): Promise => { + try { + const response = await fetch(`${API_BASE_URL}/v1/auth/me`, { + credentials: "include", + }); + if (!response.ok) return null; + return response.json(); + } catch (err) { + console.error("Auth check failed:", err); + return null; + } +}; + +export const setupEventsWebSocket = (onMessage: (data: any) => void) => { + const ws = new WebSocket(WS_BASE_URL); + + ws.onopen = () => console.log("Connected to Modulith WebSocket"); + ws.onmessage = (event) => { + try { + const data = JSON.parse(event.data); + onMessage(data); + } catch (err) { + console.error("Failed to parse WS message:", err); + } + }; + + ws.onclose = () => console.log("Disconnected from Modulith WebSocket"); + ws.onerror = (err) => console.error("WebSocket error:", err); + + return ws; +}; diff --git a/web/solid-example/src/assets/hero.png b/web/solid-example/src/assets/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..abeb7fa4106ce4a5c3a5fcdaa8d3c5aa8fbf3f59 GIT binary patch literal 71657 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 TN+`GsP7X(2MK?5tfIt7)>4`PJ literal 0 HcmV?d00001 diff --git a/web/solid-example/src/assets/solid.svg b/web/solid-example/src/assets/solid.svg new file mode 100644 index 0000000..025aa30 --- /dev/null +++ b/web/solid-example/src/assets/solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/solid-example/src/assets/vite.svg b/web/solid-example/src/assets/vite.svg new file mode 100644 index 0000000..5101b67 --- /dev/null +++ b/web/solid-example/src/assets/vite.svg @@ -0,0 +1 @@ +Vite diff --git a/web/solid-example/src/index.css b/web/solid-example/src/index.css new file mode 100644 index 0000000..2c84af0 --- /dev/null +++ b/web/solid-example/src/index.css @@ -0,0 +1,111 @@ +:root { + --text: #6b6375; + --text-h: #08060d; + --bg: #fff; + --border: #e5e4e7; + --code-bg: #f4f3ec; + --accent: #aa3bff; + --accent-bg: rgba(170, 59, 255, 0.1); + --accent-border: rgba(170, 59, 255, 0.5); + --social-bg: rgba(244, 243, 236, 0.5); + --shadow: + rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px; + + --sans: system-ui, 'Segoe UI', Roboto, sans-serif; + --heading: system-ui, 'Segoe UI', Roboto, sans-serif; + --mono: ui-monospace, Consolas, monospace; + + font: 18px/145% var(--sans); + letter-spacing: 0.18px; + color-scheme: light dark; + color: var(--text); + background: var(--bg); + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + @media (max-width: 1024px) { + font-size: 16px; + } +} + +@media (prefers-color-scheme: dark) { + :root { + --text: #9ca3af; + --text-h: #f3f4f6; + --bg: #16171d; + --border: #2e303a; + --code-bg: #1f2028; + --accent: #c084fc; + --accent-bg: rgba(192, 132, 252, 0.15); + --accent-border: rgba(192, 132, 252, 0.5); + --social-bg: rgba(47, 48, 58, 0.5); + --shadow: + rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px; + } + + #social .button-icon { + filter: invert(1) brightness(2); + } +} + +body { + margin: 0; +} + +#root { + width: 1126px; + max-width: 100%; + margin: 0 auto; + text-align: center; + border-inline: 1px solid var(--border); + min-height: 100svh; + display: flex; + flex-direction: column; + box-sizing: border-box; +} + +h1, +h2 { + font-family: var(--heading); + font-weight: 500; + color: var(--text-h); +} + +h1 { + font-size: 56px; + letter-spacing: -1.68px; + margin: 32px 0; + @media (max-width: 1024px) { + font-size: 36px; + margin: 20px 0; + } +} +h2 { + font-size: 24px; + line-height: 118%; + letter-spacing: -0.24px; + margin: 0 0 8px; + @media (max-width: 1024px) { + font-size: 20px; + } +} +p { + margin: 0; +} + +code, +.counter { + font-family: var(--mono); + display: inline-flex; + border-radius: 4px; + color: var(--text-h); +} + +code { + font-size: 15px; + line-height: 135%; + padding: 4px 8px; + background: var(--code-bg); +} diff --git a/web/solid-example/src/index.tsx b/web/solid-example/src/index.tsx new file mode 100644 index 0000000..f67cd20 --- /dev/null +++ b/web/solid-example/src/index.tsx @@ -0,0 +1,8 @@ +/* @refresh reload */ +import { render } from 'solid-js/web' +import './index.css' +import App from './App.tsx' + +const root = document.getElementById('root') + +render(() => , root!) diff --git a/web/solid-example/tsconfig.app.json b/web/solid-example/tsconfig.app.json new file mode 100644 index 0000000..4de71f3 --- /dev/null +++ b/web/solid-example/tsconfig.app.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2023", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2023", "DOM", "DOM.Iterable"], + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/web/solid-example/tsconfig.json b/web/solid-example/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/web/solid-example/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/web/solid-example/tsconfig.node.json b/web/solid-example/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/web/solid-example/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/web/solid-example/vite.config.ts b/web/solid-example/vite.config.ts new file mode 100644 index 0000000..4095d9b --- /dev/null +++ b/web/solid-example/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'vite' +import solid from 'vite-plugin-solid' + +export default defineConfig({ + plugins: [solid()], +})