feat: scaffold nuxt app
This commit is contained in:
20
.env.example
Normal file
20
.env.example
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# --- Server (API) ---
|
||||||
|
# Shared Postgres. Internal Docker host within Coolify network, or SSH-tunnel locally.
|
||||||
|
DATABASE_URL=postgres://mika:CHANGEME@l8kogcggsc80sgcgk8kswww4:5432/claudedo
|
||||||
|
|
||||||
|
# Zitadel OIDC
|
||||||
|
ZITADEL_ISSUER=https://auth.kuns.dev
|
||||||
|
# Comma-separated accepted audiences: web client id, desktop client id, project id
|
||||||
|
ZITADEL_AUDIENCE=
|
||||||
|
# Comma-separated owner Zitadel user ids (the single owner's `sub`)
|
||||||
|
ALLOWED_USER_IDS=
|
||||||
|
# CORS: the web client origin (the app's own origin)
|
||||||
|
WEB_ORIGIN=https://claudedo.kuns.dev
|
||||||
|
|
||||||
|
# --- Web client (public, exposed to browser) ---
|
||||||
|
NUXT_PUBLIC_ZITADEL_ISSUER=https://auth.kuns.dev
|
||||||
|
NUXT_PUBLIC_ZITADEL_CLIENT_ID=
|
||||||
|
|
||||||
|
# --- Provisioning script only (not needed at runtime) ---
|
||||||
|
# Zitadel Management API PAT (from ~/.secrets/coolify-tokens.env: ZITADEL_SERVICE_TOKEN)
|
||||||
|
ZITADEL_SERVICE_TOKEN=
|
||||||
3
app/app.vue
Normal file
3
app/app.vue
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<NuxtPage />
|
||||||
|
</template>
|
||||||
27
nuxt.config.ts
Normal file
27
nuxt.config.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
export default defineNuxtConfig({
|
||||||
|
compatibilityDate: "2026-06-10",
|
||||||
|
ssr: false,
|
||||||
|
devtools: { enabled: false },
|
||||||
|
// Single-user private inbox: no SSR/SEO needs; SPA so @kuns/zitadel-auth runs in-browser.
|
||||||
|
runtimeConfig: {
|
||||||
|
// server-only
|
||||||
|
databaseUrl: process.env.DATABASE_URL,
|
||||||
|
zitadelIssuer: process.env.ZITADEL_ISSUER || "https://auth.kuns.dev",
|
||||||
|
zitadelAudience: process.env.ZITADEL_AUDIENCE || "",
|
||||||
|
allowedUserIds: process.env.ALLOWED_USER_IDS || "",
|
||||||
|
webOrigin: process.env.WEB_ORIGIN || "",
|
||||||
|
public: {
|
||||||
|
zitadelIssuer: process.env.NUXT_PUBLIC_ZITADEL_ISSUER || "https://auth.kuns.dev",
|
||||||
|
zitadelClientId: process.env.NUXT_PUBLIC_ZITADEL_CLIENT_ID || "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
app: {
|
||||||
|
head: {
|
||||||
|
title: "ClaudeDo Inbox",
|
||||||
|
meta: [
|
||||||
|
{ name: "viewport", content: "width=device-width, initial-scale=1, viewport-fit=cover" },
|
||||||
|
{ name: "color-scheme", content: "light dark" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
26
package.json
Normal file
26
package.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"name": "claudedo-online",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "nuxt dev",
|
||||||
|
"build": "nuxt build",
|
||||||
|
"preview": "node .output/server/index.mjs",
|
||||||
|
"migrate": "tsx server/db/migrate.ts",
|
||||||
|
"test": "vitest run",
|
||||||
|
"provision:zitadel": "tsx scripts/provision-zitadel.ts"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@kuns/zitadel-auth": "file:../kuns-zitadel/js",
|
||||||
|
"jose": "^5.9.6",
|
||||||
|
"nuxt": "^4.4.8",
|
||||||
|
"oidc-client-ts": "^3.5.0",
|
||||||
|
"postgres": "^3.4.8",
|
||||||
|
"vue": "^3.5.0",
|
||||||
|
"vue-router": "^4.4.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"tsx": "^4.21.0",
|
||||||
|
"vitest": "^2.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
3
tsconfig.json
Normal file
3
tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": "./.nuxt/tsconfig.json"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user